From 55eed376980dd5f8e485887176f9e5911bab4abb Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 29 Aug 2017 20:47:09 +0200 Subject: [PATCH 001/187] Start working on autocompletion --- interface/resources/qml/Browser.qml | 2 +- .../qml/controls-uit/BaseWebView.qml | 4 +- interface/resources/qml/hifi/Desktop.qml | 2 +- interface/resources/qml/hifi/WebBrowser.qml | 72 ++++++++++++------- 4 files changed, 49 insertions(+), 31 deletions(-) diff --git a/interface/resources/qml/Browser.qml b/interface/resources/qml/Browser.qml index 55927fda24..2809f91923 100644 --- a/interface/resources/qml/Browser.qml +++ b/interface/resources/qml/Browser.qml @@ -1,7 +1,7 @@ import QtQuick 2.5 import QtQuick.Controls 1.2 import QtWebChannel 1.0 -import QtWebEngine 1.2 +import QtWebEngine 1.5 import "controls-uit" import "styles" as HifiStyles diff --git a/interface/resources/qml/controls-uit/BaseWebView.qml b/interface/resources/qml/controls-uit/BaseWebView.qml index 3ca57f03bf..fdd9c12220 100644 --- a/interface/resources/qml/controls-uit/BaseWebView.qml +++ b/interface/resources/qml/controls-uit/BaseWebView.qml @@ -8,8 +8,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -import QtQuick 2.5 -import QtWebEngine 1.2 +import QtQuick 2.7 +import QtWebEngine 1.5 WebEngineView { id: root diff --git a/interface/resources/qml/hifi/Desktop.qml b/interface/resources/qml/hifi/Desktop.qml index ea9ec2f6c9..96bb359aea 100644 --- a/interface/resources/qml/hifi/Desktop.qml +++ b/interface/resources/qml/hifi/Desktop.qml @@ -1,6 +1,6 @@ import QtQuick 2.5 import QtQuick.Controls 1.4 -import QtWebEngine 1.1; +import QtWebEngine 1.5; import Qt.labs.settings 1.0 import "../desktop" as OriginalDesktop diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index af54c86bf4..972c03355c 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -9,12 +9,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -import QtQuick 2.5 -import QtQuick.Controls 1.5 as QQControls +import QtQuick 2.7 +import QtQuick.Controls 2.2 as QQControls import QtQuick.Layouts 1.3 -import QtQuick.Controls.Styles 1.4 -import QtWebEngine 1.2 +import QtWebEngine 1.5 import QtWebChannel 1.0 import "../styles-uit" @@ -66,9 +65,27 @@ Rectangle { } } - QQControls.TextField { + QQControls.ComboBox { id: addressBar + //selectByMouse: true + focus: true + //placeholderText: "Enter URL" + editable: true + flat: true + indicator: Item {} + Component.onCompleted: ScriptDiscoveryService.scriptsModelFilter.filterRegExp = new RegExp("^.*$", "i") + + Keys.onPressed: { + if (event.key === Qt.Key_Return) { + if (editText.indexOf("http") != 0) { + editText = "http://" + editText; + } + webEngineView.url = editText + event.accepted = true; + } + } + Image { anchors.verticalCenter: addressBar.verticalCenter; x: 5 @@ -94,21 +111,18 @@ Rectangle { } } - style: TextFieldStyle { - padding { - left: 26; - right: 26 - } - } - focus: true + leftPadding: 26 + rightPadding: 26 + Layout.fillWidth: true - text: webEngineView.url - onAccepted: webEngineView.url = text + editText: webEngineView.url + onAccepted: webEngineView.url = editText } + HifiControls.WebGlyphButton { checkable: true //only QtWebEngine 1.3 - //checked: webEngineView.audioMuted + checked: webEngineView.audioMuted glyph: checked ? hifi.glyphs.unmuted : hifi.glyphs.muted anchors.verticalCenter: parent.verticalCenter; width: hifi.dimensions.controlLineHeight @@ -120,18 +134,24 @@ Rectangle { QQControls.ProgressBar { id: loadProgressBar - style: ProgressBarStyle { - background: Rectangle { - color: "#6A6A6A" - } - progress: Rectangle{ + background: Rectangle { + implicitHeight: 2 + color: "#6A6A6A" + } + + contentItem: Item { + implicitHeight: 2 + + Rectangle { + width: loadProgressBar.visualPosition * parent.width + height: parent.height color: "#00B4EF" } } width: parent.width; - minimumValue: 0 - maximumValue: 100 + from: 0 + to: 100 value: webEngineView.loadProgress height: 2 } @@ -183,8 +203,8 @@ Rectangle { settings.pluginsEnabled: true settings.fullScreenSupportEnabled: false //from WebEngine 1.3 - // settings.autoLoadIconsForPage: false - // settings.touchIconsEnabled: false + settings.autoLoadIconsForPage: false + settings.touchIconsEnabled: false onCertificateError: { error.defer(); @@ -201,9 +221,7 @@ Rectangle { } onNewViewRequested: { - if (!request.userInitiated) { - print("Warning: Blocked a popup window."); - } + request.openIn(webEngineView); } onRenderProcessTerminated: { From 304c6451ebd0b1a5198fd789ab2aebec2270c531 Mon Sep 17 00:00:00 2001 From: Luis Cuenca Date: Wed, 30 Aug 2017 11:56:49 -0700 Subject: [PATCH 002/187] Update BUILD_LINUX.md --- BUILD_LINUX.md | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 038f53154c..ab947fae4e 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -93,4 +93,5 @@ Running interface: ./interface/interface ``` + Go to localhost in running interface. From 748ef8bb87663201a260bb71139512f44fe81677 Mon Sep 17 00:00:00 2001 From: vladest Date: Sun, 3 Sep 2017 18:10:53 +0200 Subject: [PATCH 003/187] Enable edit in combobox --- interface/resources/qml/hifi/WebBrowser.qml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index 972c03355c..98ed0f10be 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -72,7 +72,7 @@ Rectangle { focus: true //placeholderText: "Enter URL" editable: true - flat: true + //flat: true indicator: Item {} Component.onCompleted: ScriptDiscoveryService.scriptsModelFilter.filterRegExp = new RegExp("^.*$", "i") @@ -158,14 +158,15 @@ Rectangle { HifiControls.BaseWebView { id: webEngineView + width: parent.width; + property real webViewHeight: root.height - loadProgressBar.height - 48 - 4 + height: keyboardEnabled && keyboardRaised ? webViewHeight - keyboard.height : webViewHeight + + focus: true objectName: "tabletWebEngineView" url: "http://www.highfidelity.com" - property real webViewHeight: root.height - loadProgressBar.height - 48 - 4 - - width: parent.width; - height: keyboardEnabled && keyboardRaised ? webViewHeight - keyboard.height : webViewHeight profile: HFWebEngineProfile; @@ -258,6 +259,7 @@ Rectangle { } } + HifiControls.Keyboard { id: keyboard raised: parent.keyboardEnabled && parent.keyboardRaised From 6de00c796989ba26a6bdf48a89185e2e9d1a1b48 Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 5 Sep 2017 13:11:52 +0200 Subject: [PATCH 004/187] Implemented suggestions popup. Cleanup --- interface/resources/qml/hifi/WebBrowser.qml | 143 ++-- interface/src/Application.cpp | 3 + interface/src/opensearch/opensearchengine.cpp | 650 ++++++++++++++++++ interface/src/opensearch/opensearchengine.h | 128 ++++ .../opensearch/opensearchenginedelegate.cpp | 43 ++ .../src/opensearch/opensearchenginedelegate.h | 18 + 6 files changed, 946 insertions(+), 39 deletions(-) create mode 100644 interface/src/opensearch/opensearchengine.cpp create mode 100644 interface/src/opensearch/opensearchengine.h create mode 100644 interface/src/opensearch/opensearchenginedelegate.cpp create mode 100644 interface/src/opensearch/opensearchenginedelegate.h diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index 98ed0f10be..582e26bbeb 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -21,6 +21,8 @@ import "../controls-uit" as HifiControls import "../windows" import "../controls" +import HifiWeb 1.0 + Rectangle { id: root; @@ -31,17 +33,61 @@ Rectangle { property bool keyboardEnabled: true // FIXME - Keyboard HMD only: Default to false property bool keyboardRaised: false property bool punctuationMode: false + property var suggestionsList: [] + OpenSearchEngine { + id: searchEngine + name: "Google"; + //icon: ":icons/sites/google.png" + searchUrlTemplate: "https://www.google.com/search?client=qupzilla&q=%s"; + suggestionsUrlTemplate: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; + suggestionsUrl: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; + + onSuggestions: { + if (suggestions.length > 0) { + console.log("suggestions:", suggestions) + suggestionsList = [] + suggestionsList.push(addressBar.editText) //do not overwrite edit text + for(var i = 0; i < suggestions.length; i++) { + suggestionsList.push(suggestions[i]) + } + addressBar.model = suggestionsList + if (!addressBar.popup.visible) { + addressBar.popup.open() + } + } + } + } + + Timer { + id: suggestionRequestTimer + interval: 200 + repeat: false + onTriggered: { + if (addressBar.editText !== "") { + searchEngine.requestSuggestions(addressBar.editText) + } + } + } color: hifi.colors.baseGray; - // only show the title if loaded through a "loader" + function goTo(url) { + if (url.indexOf("http") !== 0) { + url = "http://" + url; + } + webEngineView.url = url + event.accepted = true; + suggestionRequestTimer.stop() + addressBar.popup.close() + } Column { spacing: 2 width: parent.width; RowLayout { + id: addressBarRow width: parent.width; height: 48 @@ -70,50 +116,65 @@ Rectangle { //selectByMouse: true focus: true - //placeholderText: "Enter URL" + editable: true //flat: true indicator: Item {} + background: Item {} + onActivated: { + goTo(textAt(index)) + } + + contentItem: QQControls.TextField { + id: addressBarInput + leftPadding: 26 + rightPadding: hifi.dimensions.controlLineHeight + text: addressBar.editText + placeholderText: qsTr("Enter URL") + font: addressBar.font + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + Image { + anchors.verticalCenter: parent.verticalCenter; + x: 5 + z: 2 + id: faviconImage + width: 16; height: 16 + sourceSize: Qt.size(width, height) + source: webEngineView.icon + onSourceChanged: console.log("web icon", source) + } + + HifiControls.WebGlyphButton { + glyph: webEngineView.loading ? hifi.glyphs.closeSmall : hifi.glyphs.reloadSmall; + anchors.verticalCenter: parent.verticalCenter; + width: hifi.dimensions.controlLineHeight + z: 2 + x: addressBarInput.width - implicitWidth + onClicked: { + if (webEngineView.loading) { + webEngineView.stop() + } else { + reloadTimer.start() + } + } + } + } + Component.onCompleted: ScriptDiscoveryService.scriptsModelFilter.filterRegExp = new RegExp("^.*$", "i") Keys.onPressed: { if (event.key === Qt.Key_Return) { - if (editText.indexOf("http") != 0) { - editText = "http://" + editText; - } - webEngineView.url = editText - event.accepted = true; + goTo(editText) } } - Image { - anchors.verticalCenter: addressBar.verticalCenter; - x: 5 - z: 2 - id: faviconImage - width: 16; height: 16 - sourceSize: Qt.size(width, height) - source: webEngineView.icon + onEditTextChanged: { + console.log("edit text", addressBar.editText) + suggestionRequestTimer.restart() } - HifiControls.WebGlyphButton { - glyph: webEngineView.loading ? hifi.glyphs.closeSmall : hifi.glyphs.reloadSmall; - anchors.verticalCenter: parent.verticalCenter; - width: hifi.dimensions.controlLineHeight - z: 2 - x: addressBar.width - 28 - onClicked: { - if (webEngineView.loading) { - webEngineView.stop() - } else { - reloadTimer.start() - } - } - } - - leftPadding: 26 - rightPadding: 26 - Layout.fillWidth: true editText: webEngineView.url onAccepted: webEngineView.url = editText @@ -121,7 +182,6 @@ Rectangle { HifiControls.WebGlyphButton { checkable: true - //only QtWebEngine 1.3 checked: webEngineView.audioMuted glyph: checked ? hifi.glyphs.unmuted : hifi.glyphs.muted anchors.verticalCenter: parent.verticalCenter; @@ -162,7 +222,6 @@ Rectangle { property real webViewHeight: root.height - loadProgressBar.height - 48 - 4 height: keyboardEnabled && keyboardRaised ? webViewHeight - keyboard.height : webViewHeight - focus: true objectName: "tabletWebEngineView" @@ -172,6 +231,13 @@ Rectangle { property string userScriptUrl: "" + onLoadingChanged: { + if (!loading) { + suggestionRequestTimer.stop() + addressBar.popup.close() + } + } + // creates a global EventBridge object. WebEngineScript { id: createGlobalEventBridge @@ -202,10 +268,9 @@ Rectangle { settings.javascriptEnabled: true settings.errorPageEnabled: true settings.pluginsEnabled: true - settings.fullScreenSupportEnabled: false - //from WebEngine 1.3 - settings.autoLoadIconsForPage: false - settings.touchIconsEnabled: false + settings.fullScreenSupportEnabled: true + settings.autoLoadIconsForPage: true + settings.touchIconsEnabled: true onCertificateError: { error.defer(); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index fe6ea2a0b3..726e5ba6e4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -201,6 +201,8 @@ #include "commerce/Wallet.h" #include "commerce/QmlCommerce.h" +#include "opensearch/opensearchengine.h" + // On Windows PC, NVidia Optimus laptop, we want to enable NVIDIA GPU // FIXME seems to be broken. #if defined(Q_OS_WIN) @@ -2224,6 +2226,7 @@ void Application::initializeUi() { QmlCommerce::registerType(); qmlRegisterType("Hifi", 1, 0, "ResourceImageItem"); qmlRegisterType("Hifi", 1, 0, "Preference"); + qmlRegisterType("HifiWeb", 1, 0, "OpenSearchEngine"); auto offscreenUi = DependencyManager::get(); offscreenUi->create(); diff --git a/interface/src/opensearch/opensearchengine.cpp b/interface/src/opensearch/opensearchengine.cpp new file mode 100644 index 0000000000..28cacab256 --- /dev/null +++ b/interface/src/opensearch/opensearchengine.cpp @@ -0,0 +1,650 @@ +#include "opensearchengine.h" +#include "qregexp.h" +#include "opensearchenginedelegate.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + + +/*! + \class OpenSearchEngine + \brief A class representing a single search engine described in OpenSearch format + + OpenSearchEngine is a class that represents a single search engine based on + the OpenSearch format. + For more information about the format, see http://www.opensearch.org/. + + Instances of the class hold all the data associated with the corresponding search + engines, such as name(), description() and also URL templates that are used + to construct URLs, which can be used later to perform search queries. Search engine + can also have an image, even an external one, in this case it will be downloaded + automatically from the network. + + OpenSearchEngine instances can be constructed from scratch but also read from + external sources and written back to them. OpenSearchReader and OpenSearchWriter + are the classes provided for reading and writing OpenSearch descriptions. + + Default constructed engines need to be filled with the necessary information before + they can be used to peform search requests. First of all, a search engine should have + the metadata including the name and the description. + However, the most important are URL templates, which are the construction of URLs + but can also contain template parameters, that are replaced with corresponding values + at the time of constructing URLs. + + There are two types of URL templates: search URL template and suggestions URL template. + Search URL template is needed for constructing search URLs, which point directly to + search results. Suggestions URL template is necessary to construct suggestion queries + URLs, which are then used for requesting contextual suggestions, a popular service + offered along with search results that provides search terms related to what has been + supplied by the user. + + Both types of URLs are constructed by the class, by searchUrl() and suggestionsUrl() + functions respectively. However, search requests are supposed to be performed outside + the class, while suggestion queries can be executed using the requestSuggestions() + method. The class will take care of peforming the network request and parsing the + JSON response. + + Both the image request and suggestion queries need network access. The class can + perform network requests on its own, though the client application needs to provide + a network access manager, which then will to be used for network operations. + Without that, both images delivered from remote locations and contextual suggestions + will be disabled. + + \sa OpenSearchReader, OpenSearchWriter +*/ + +/*! + Constructs an engine with a given \a parent. +*/ +OpenSearchEngine::OpenSearchEngine(QObject* parent) + : QObject(parent) + , m_searchMethod(QLatin1String("get")) + , m_suggestionsMethod(QLatin1String("get")) + , m_suggestionsReply(0) + , m_delegate(0) +{ + m_requestMethods.insert(QLatin1String("get"), QNetworkAccessManager::GetOperation); + m_requestMethods.insert(QLatin1String("post"), QNetworkAccessManager::PostOperation); +} + +/*! + A destructor. +*/ +OpenSearchEngine::~OpenSearchEngine() +{ +} + +QString OpenSearchEngine::parseTemplate(const QString &searchTerm, const QString &searchTemplate) +{ + QString language = QLocale().name(); + // Simple conversion to RFC 3066. + language = language.replace(QLatin1Char('_'), QLatin1Char('-')); + + QString result = searchTemplate; + result.replace(QLatin1String("{count}"), QLatin1String("20")); + result.replace(QLatin1String("{startIndex}"), QLatin1String("0")); + result.replace(QLatin1String("{startPage}"), QLatin1String("0")); + result.replace(QLatin1String("{language}"), language); + result.replace(QLatin1String("{inputEncoding}"), QLatin1String("UTF-8")); + result.replace(QLatin1String("{outputEncoding}"), QLatin1String("UTF-8")); + result.replace(QRegExp(QLatin1String("\\{([^\\}]*:|)source\\??\\}")), QCoreApplication::applicationName()); + result.replace(QLatin1String("{searchTerms}"), QLatin1String(QUrl::toPercentEncoding(searchTerm))); + + return result; +} + +/*! + \property OpenSearchEngine::name + \brief the name of the engine + + \sa description() +*/ +QString OpenSearchEngine::name() const +{ + return m_name; +} + +void OpenSearchEngine::setName(const QString &name) +{ + m_name = name; +} + +/*! + \property OpenSearchEngine::description + \brief the description of the engine + + \sa name() +*/ +QString OpenSearchEngine::description() const +{ + return m_description; +} + +void OpenSearchEngine::setDescription(const QString &description) +{ + m_description = description; +} + +/*! + \property OpenSearchEngine::searchUrlTemplate + \brief the template of the search URL + + \sa searchUrl(), searchParameters(), suggestionsUrlTemplate() +*/ +QString OpenSearchEngine::searchUrlTemplate() const +{ + return m_searchUrlTemplate; +} + +void OpenSearchEngine::setSearchUrlTemplate(const QString &searchUrlTemplate) +{ + if (!searchUrlTemplate.startsWith(QLatin1String("http://")) && !searchUrlTemplate.startsWith(QLatin1String("https://"))) { + return; + } + + m_searchUrlTemplate = searchUrlTemplate; +} + +/*! + Constructs and returns a search URL with a given \a searchTerm. + + The URL template is processed according to the specification: + http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_URL_template_syntax + + A list of template parameters currently supported and what they are replaced with: + \table + \header \o parameter + \o value + \row \o "{count}" + \o "20" + \row \o "{startIndex}" + \o "0" + \row \o "{startPage}" + \o "0" + \row \o "{language}" + \o "the default language code (RFC 3066)" + \row \o "{inputEncoding}" + \o "UTF-8" + \row \o "{outputEncoding}" + \o "UTF-8" + \row \o "{*:source}" + \o "application name, QCoreApplication::applicationName()" + \row \o "{searchTerms}" + \o "the string supplied by the user" + \endtable + + \sa searchUrlTemplate(), searchParameters(), suggestionsUrl() +*/ +QUrl OpenSearchEngine::searchUrl(const QString &searchTerm) const +{ + if (m_searchUrlTemplate.isEmpty()) { + return QUrl(); + } + + QUrl retVal = QUrl::fromEncoded(parseTemplate(searchTerm, m_searchUrlTemplate).toUtf8()); + + QUrlQuery query(retVal); + if (m_searchMethod != QLatin1String("post")) { + Parameters::const_iterator end = m_searchParameters.constEnd(); + Parameters::const_iterator i = m_searchParameters.constBegin(); + for (; i != end; ++i) { + query.addQueryItem(i->first, parseTemplate(searchTerm, i->second)); + } + retVal.setQuery(query); + } + + return retVal; +} + +QByteArray OpenSearchEngine::getPostData(const QString &searchTerm) const +{ + if (m_searchMethod != QLatin1String("post")) { + return QByteArray(); + } + + QUrl retVal = QUrl("http://foo.bar"); + + QUrlQuery query(retVal); + Parameters::const_iterator end = m_searchParameters.constEnd(); + Parameters::const_iterator i = m_searchParameters.constBegin(); + for (; i != end; ++i) { + query.addQueryItem(i->first, parseTemplate(searchTerm, i->second)); + } + retVal.setQuery(query); + + QByteArray data = retVal.toEncoded(QUrl::RemoveScheme); + return data.contains('?') ? data.mid(data.lastIndexOf('?') + 1) : QByteArray(); +} + +/*! + \property providesSuggestions + \brief indicates whether the engine supports contextual suggestions +*/ +bool OpenSearchEngine::providesSuggestions() const +{ + return (!m_suggestionsUrlTemplate.isEmpty() || !m_preparedSuggestionsUrl.isEmpty()); +} + +/*! + \property OpenSearchEngine::suggestionsUrlTemplate + \brief the template of the suggestions URL + + \sa suggestionsUrl(), suggestionsParameters(), searchUrlTemplate() +*/ +QString OpenSearchEngine::suggestionsUrlTemplate() const +{ + return m_suggestionsUrlTemplate; +} + +void OpenSearchEngine::setSuggestionsUrlTemplate(const QString &suggestionsUrlTemplate) +{ + if (!suggestionsUrlTemplate.startsWith(QLatin1String("http://")) && !suggestionsUrlTemplate.startsWith(QLatin1String("https://"))) { + return; + } + + m_suggestionsUrlTemplate = suggestionsUrlTemplate; +} + +/*! + Constructs a suggestions URL with a given \a searchTerm. + + The URL template is processed according to the specification: + http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_URL_template_syntax + + See searchUrl() for more information about processing template parameters. + + \sa suggestionsUrlTemplate(), suggestionsParameters(), searchUrl() +*/ +QUrl OpenSearchEngine::suggestionsUrl(const QString &searchTerm) const +{ + if (!m_preparedSuggestionsUrl.isEmpty()) { + QString s = m_preparedSuggestionsUrl; + s.replace(QLatin1String("%s"), searchTerm); + return QUrl(s); + } + + if (m_suggestionsUrlTemplate.isEmpty()) { + return QUrl(); + } + + QUrl retVal = QUrl::fromEncoded(parseTemplate(searchTerm, m_suggestionsUrlTemplate).toUtf8()); + + QUrlQuery query(retVal); + if (m_suggestionsMethod != QLatin1String("post")) { + Parameters::const_iterator end = m_suggestionsParameters.constEnd(); + Parameters::const_iterator i = m_suggestionsParameters.constBegin(); + for (; i != end; ++i) { + query.addQueryItem(i->first, parseTemplate(searchTerm, i->second)); + } + retVal.setQuery(query); + } + + return retVal; +} + +/*! + \property searchParameters + \brief additional parameters that will be included in the search URL + + For more information see: + http://www.opensearch.org/Specifications/OpenSearch/Extensions/Parameter/1.0 +*/ +OpenSearchEngine::Parameters OpenSearchEngine::searchParameters() const +{ + return m_searchParameters; +} + +void OpenSearchEngine::setSearchParameters(const Parameters &searchParameters) +{ + m_searchParameters = searchParameters; +} + +/*! + \property suggestionsParameters + \brief additional parameters that will be included in the suggestions URL + + For more information see: + http://www.opensearch.org/Specifications/OpenSearch/Extensions/Parameter/1.0 +*/ +OpenSearchEngine::Parameters OpenSearchEngine::suggestionsParameters() const +{ + return m_suggestionsParameters; +} + +void OpenSearchEngine::setSuggestionsParameters(const Parameters &suggestionsParameters) +{ + m_suggestionsParameters = suggestionsParameters; +} + +/*! + \property searchMethod + \brief HTTP request method that will be used to perform search requests +*/ +QString OpenSearchEngine::searchMethod() const +{ + return m_searchMethod; +} + +void OpenSearchEngine::setSearchMethod(const QString &method) +{ + QString requestMethod = method.toLower(); + if (!m_requestMethods.contains(requestMethod)) { + return; + } + + m_searchMethod = requestMethod; +} + +/*! + \property suggestionsMethod + \brief HTTP request method that will be used to perform suggestions requests +*/ +QString OpenSearchEngine::suggestionsMethod() const +{ + return m_suggestionsMethod; +} + +void OpenSearchEngine::setSuggestionsMethod(const QString &method) +{ + QString requestMethod = method.toLower(); + if (!m_requestMethods.contains(requestMethod)) { + return; + } + + m_suggestionsMethod = requestMethod; +} + +/*! + \property imageUrl + \brief the image URL of the engine + + When setting a new image URL, it won't be loaded immediately. The first request will be + deferred until image() is called for the first time. + + \note To be able to request external images, you need to provide a network access manager, + which will be used for network operations. + + \sa image(), networkAccessManager() +*/ +QString OpenSearchEngine::imageUrl() const +{ + return m_imageUrl; +} + +void OpenSearchEngine::setImageUrl(const QString &imageUrl) +{ + m_imageUrl = imageUrl; +} + +void OpenSearchEngine::loadImage() const +{ + if (m_imageUrl.isEmpty()) { + return; + } + QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); + + QNetworkReply* reply = networkAccessManager.get(QNetworkRequest(QUrl::fromEncoded(m_imageUrl.toUtf8()))); + connect(reply, SIGNAL(finished()), this, SLOT(imageObtained())); +} + +void OpenSearchEngine::imageObtained() +{ + QNetworkReply* reply = qobject_cast(sender()); + + if (!reply) { + return; + } + + QByteArray response = reply->readAll(); + + reply->close(); + reply->deleteLater(); + + if (response.isEmpty()) { + return; + } + + m_image.loadFromData(response); + emit imageChanged(); +} + +/*! + \property image + \brief the image of the engine + + When no image URL has been set and an image will be set explicitly, a new data URL + will be constructed, holding the image data encoded with Base64. + + \sa imageUrl() +*/ +QImage OpenSearchEngine::image() const +{ + if (m_image.isNull()) { + loadImage(); + } + return m_image; +} + +void OpenSearchEngine::setImage(const QImage &image) +{ + if (m_imageUrl.isEmpty()) { + QBuffer imageBuffer; + imageBuffer.open(QBuffer::ReadWrite); + if (image.save(&imageBuffer, "PNG")) { + m_imageUrl = QString(QLatin1String("data:image/png;base64,%1")) + .arg(QLatin1String(imageBuffer.buffer().toBase64())); + } + } + + m_image = image; + emit imageChanged(); +} + +/*! + \property valid + \brief indicates whether the engine is valid i.e. the description was properly formed and included all necessary information +*/ +bool OpenSearchEngine::isValid() const +{ + return (!m_name.isEmpty() && !m_searchUrlTemplate.isEmpty()); +} + +bool OpenSearchEngine::operator==(const OpenSearchEngine &other) const +{ + return (m_name == other.m_name + && m_description == other.m_description + && m_imageUrl == other.m_imageUrl + && m_searchUrlTemplate == other.m_searchUrlTemplate + && m_suggestionsUrlTemplate == other.m_suggestionsUrlTemplate + && m_searchParameters == other.m_searchParameters + && m_suggestionsParameters == other.m_suggestionsParameters); +} + +bool OpenSearchEngine::operator<(const OpenSearchEngine &other) const +{ + return (m_name < other.m_name); +} + +/*! + Requests contextual suggestions on the search engine, for a given \a searchTerm. + + If succeeded, suggestions() signal will be emitted once the suggestions are received. + + \note To be able to request suggestions, you need to provide a network access manager, + which will be used for network operations. + + \sa requestSearchResults() +*/ + +void OpenSearchEngine::setSuggestionsParameters(const QByteArray ¶meters) +{ + m_preparedSuggestionsParameters = parameters; +} + +void OpenSearchEngine::setSuggestionsUrl(const QString &string) +{ + m_preparedSuggestionsUrl = string; +} + +QString OpenSearchEngine::getSuggestionsUrl() +{ + return suggestionsUrl("searchstring").toString().replace(QLatin1String("searchstring"), QLatin1String("%s")); +} + +QByteArray OpenSearchEngine::getSuggestionsParameters() +{ + QStringList parameters; + Parameters::const_iterator end = m_suggestionsParameters.constEnd(); + Parameters::const_iterator i = m_suggestionsParameters.constBegin(); + for (; i != end; ++i) { + parameters.append(i->first + QLatin1String("=") + i->second); + } + + QByteArray data = parameters.join(QLatin1String("&")).toUtf8(); + + return data; +} + +void OpenSearchEngine::requestSuggestions(const QString &searchTerm) +{ + if (searchTerm.isEmpty() || !providesSuggestions()) { + return; + } + + QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); + + if (m_suggestionsReply) { + m_suggestionsReply->disconnect(this); + m_suggestionsReply->abort(); + m_suggestionsReply->deleteLater(); + m_suggestionsReply = 0; + } + + Q_ASSERT(m_requestMethods.contains(m_suggestionsMethod)); + if (m_suggestionsMethod == QLatin1String("get")) { + m_suggestionsReply = networkAccessManager.get(QNetworkRequest(suggestionsUrl(searchTerm))); + } + else { + QStringList parameters; + Parameters::const_iterator end = m_suggestionsParameters.constEnd(); + Parameters::const_iterator i = m_suggestionsParameters.constBegin(); + for (; i != end; ++i) { + parameters.append(i->first + QLatin1String("=") + i->second); + } + + QByteArray data = parameters.join(QLatin1String("&")).toUtf8(); + m_suggestionsReply = networkAccessManager.post(QNetworkRequest(suggestionsUrl(searchTerm)), data); + } + + connect(m_suggestionsReply, SIGNAL(finished()), this, SLOT(suggestionsObtained())); +} + +/*! + Requests search results on the search engine, for a given \a searchTerm. + + The default implementation does nothing, to supply your own you need to create your own + OpenSearchEngineDelegate subclass and supply it to the engine. Then the function will call + the performSearchRequest() method of the delegate, which can then handle the request + in a custom way. + + \sa requestSuggestions(), delegate() +*/ +void OpenSearchEngine::requestSearchResults(const QString &searchTerm) +{ + if (!m_delegate || searchTerm.isEmpty()) { + return; + } + + Q_ASSERT(m_requestMethods.contains(m_searchMethod)); + + QNetworkRequest request(QUrl(searchUrl(searchTerm))); + QByteArray data; + QNetworkAccessManager::Operation operation = m_requestMethods.value(m_searchMethod); + + if (operation == QNetworkAccessManager::PostOperation) { + QStringList parameters; + Parameters::const_iterator end = m_searchParameters.constEnd(); + Parameters::const_iterator i = m_searchParameters.constBegin(); + for (; i != end; ++i) { + parameters.append(i->first + QLatin1String("=") + i->second); + } + + data = parameters.join(QLatin1String("&")).toUtf8(); + } + + m_delegate->performSearchRequest(request, operation, data); +} + +void OpenSearchEngine::suggestionsObtained() +{ + const QByteArray response = m_suggestionsReply->readAll(); + + m_suggestionsReply->close(); + m_suggestionsReply->deleteLater(); + m_suggestionsReply = 0; + + QJsonParseError err; + QJsonDocument json = QJsonDocument::fromJson(response, &err); + const QVariant res = json.toVariant(); + + if (err.error != QJsonParseError::NoError || res.type() != QVariant::List) + return; + + const QVariantList list = res.toList(); + + if (list.size() < 2) + return; + + QStringList out; + + foreach (const QVariant &v, list.at(1).toList()) + out.append(v.toString()); + + emit suggestions(out); +} + + +/*! + \property delegate + \brief the delegate that is used to perform specific tasks. + + It can be currently supplied to provide a custom behaviour ofthe requetSearchResults() method. + The default implementation does nothing. +*/ +OpenSearchEngineDelegate* OpenSearchEngine::delegate() const +{ + return m_delegate; +} + +void OpenSearchEngine::setDelegate(OpenSearchEngineDelegate* delegate) +{ + m_delegate = delegate; +} + +/*! + \fn void OpenSearchEngine::imageChanged() + + This signal is emitted whenever the image of the engine changes. + + \sa image(), imageUrl() +*/ + +/*! + \fn void OpenSearchEngine::suggestions(const QStringList &suggestions) + + This signal is emitted whenever new contextual suggestions have been provided + by the search engine. To request suggestions, use requestSuggestions(). + The suggestion set is specified by \a suggestions. + + \sa requestSuggestions() +*/ diff --git a/interface/src/opensearch/opensearchengine.h b/interface/src/opensearch/opensearchengine.h new file mode 100644 index 0000000000..2b717fab7e --- /dev/null +++ b/interface/src/opensearch/opensearchengine.h @@ -0,0 +1,128 @@ +#ifndef OPENSEARCHENGINE_H +#define OPENSEARCHENGINE_H + +#include +#include +#include +#include +#include +#include + +class QNetworkReply; + +class OpenSearchEngineDelegate; +class OpenSearchEngine : public QObject +{ + Q_OBJECT + +signals: + void imageChanged(); + void suggestions(const QStringList &suggestions); + +public: + typedef QPair Parameter; + typedef QList Parameters; + + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(QString description READ description WRITE setDescription) + Q_PROPERTY(QString searchUrlTemplate READ searchUrlTemplate WRITE setSearchUrlTemplate) + Q_PROPERTY(Parameters searchParameters READ searchParameters WRITE setSearchParameters) + Q_PROPERTY(QString searchMethod READ searchMethod WRITE setSearchMethod) + Q_PROPERTY(QString suggestionsUrlTemplate READ suggestionsUrlTemplate WRITE setSuggestionsUrlTemplate) + Q_PROPERTY(QString suggestionsUrl READ getSuggestionsUrl WRITE setSuggestionsUrl) + Q_PROPERTY(Parameters suggestionsParameters READ suggestionsParameters WRITE setSuggestionsParameters) + Q_PROPERTY(QString suggestionsMethod READ suggestionsMethod WRITE setSuggestionsMethod) + Q_PROPERTY(bool providesSuggestions READ providesSuggestions) + Q_PROPERTY(QString imageUrl READ imageUrl WRITE setImageUrl) + Q_PROPERTY(bool valid READ isValid) + + OpenSearchEngine(QObject* parent = 0); + ~OpenSearchEngine(); + + QString name() const; + void setName(const QString &name); + + QString description() const; + void setDescription(const QString &description); + + QString searchUrlTemplate() const; + void setSearchUrlTemplate(const QString &searchUrl); + QUrl searchUrl(const QString &searchTerm) const; + + QByteArray getPostData(const QString &searchTerm) const; + + bool providesSuggestions() const; + + QString suggestionsUrlTemplate() const; + void setSuggestionsUrlTemplate(const QString &suggestionsUrl); + QUrl suggestionsUrl(const QString &searchTerm) const; + + Parameters searchParameters() const; + void setSearchParameters(const Parameters &searchParameters); + + Parameters suggestionsParameters() const; + void setSuggestionsParameters(const Parameters &suggestionsParameters); + + QString searchMethod() const; + void setSearchMethod(const QString &method); + + QString suggestionsMethod() const; + void setSuggestionsMethod(const QString &method); + + QString imageUrl() const; + void setImageUrl(const QString &url); + + QImage image() const; + void setImage(const QImage &image); + + bool isValid() const; + + void setSuggestionsUrl(const QString &string); + void setSuggestionsParameters(const QByteArray ¶meters); + QString getSuggestionsUrl(); + QByteArray getSuggestionsParameters(); + + OpenSearchEngineDelegate* delegate() const; + void setDelegate(OpenSearchEngineDelegate* delegate); + + bool operator==(const OpenSearchEngine &other) const; + bool operator<(const OpenSearchEngine &other) const; + +public slots: + void requestSuggestions(const QString &searchTerm); + void requestSearchResults(const QString &searchTerm); + +protected: + static QString parseTemplate(const QString &searchTerm, const QString &searchTemplate); + void loadImage() const; + +private slots: + void imageObtained(); + void suggestionsObtained(); + +private: + QString m_name; + QString m_description; + + QString m_imageUrl; + QImage m_image; + + QString m_searchUrlTemplate; + QString m_suggestionsUrlTemplate; + Parameters m_searchParameters; + Parameters m_suggestionsParameters; + QString m_searchMethod; + QString m_suggestionsMethod; + + QByteArray m_preparedSuggestionsParameters; + QString m_preparedSuggestionsUrl; + + QMap m_requestMethods; + + QNetworkReply* m_suggestionsReply; + + OpenSearchEngineDelegate* m_delegate; +}; + +#endif // OPENSEARCHENGINE_H + diff --git a/interface/src/opensearch/opensearchenginedelegate.cpp b/interface/src/opensearch/opensearchenginedelegate.cpp new file mode 100644 index 0000000000..2c9c18ece0 --- /dev/null +++ b/interface/src/opensearch/opensearchenginedelegate.cpp @@ -0,0 +1,43 @@ +#include "opensearchenginedelegate.h" + +/*! + \class OpenSearchEngineDelegate + \brief An abstract class providing custom processing of specific activities. + + OpenSearchEngineDelegate is an abstract class that can be subclassed and set on + an OpenSearchEngine. It allows to customize some parts of the default implementation + or even extend it with missing bits. + + Currently subclasses can only provide a custom way of handling search requests by + reimplementing the performSearchRequest() method. + + \sa OpenSearchEngine +*/ + +/*! + Constructs the delegate. +*/ +OpenSearchEngineDelegate::OpenSearchEngineDelegate() +{ +} + +/*! + Destructs the delegate. +*/ +OpenSearchEngineDelegate::~OpenSearchEngineDelegate() +{ +} + +/*! + \fn void performSearchRequest(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation, const QByteArray &data) = 0 + + This method will be used after OpenSearchEngine::requestResults() is called. + + For example, a console application that uses the OpenSearchEngine class to generate + a search URL for a search term supplied by the user would reimplement the function + and forward the request to e.g. a web browser. + + Likewise, a web browser that uses the OpenSearchEngine class to support multiple search + engines e.g. in a toolbar would perform the request and navigate to the search results site. +*/ diff --git a/interface/src/opensearch/opensearchenginedelegate.h b/interface/src/opensearch/opensearchenginedelegate.h new file mode 100644 index 0000000000..ae7b5ef876 --- /dev/null +++ b/interface/src/opensearch/opensearchenginedelegate.h @@ -0,0 +1,18 @@ +#ifndef OPENSEARCHENGINEDELEGATE_H +#define OPENSEARCHENGINEDELEGATE_H + +#include +#include + +class OpenSearchEngineDelegate +{ +public: + OpenSearchEngineDelegate(); + virtual ~OpenSearchEngineDelegate(); + + virtual void performSearchRequest(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation, + const QByteArray &data) = 0; +}; + +#endif // OPENSEARCHENGINEDELEGATE_H From d7c525cf3ae32ceb0928f6d6e6d81d563384cf89 Mon Sep 17 00:00:00 2001 From: Luis Cuenca Date: Tue, 5 Sep 2017 13:32:51 -0700 Subject: [PATCH 005/187] glTF importer Demo Imports a glTF model as the default avatar. Geometry data and materials are imported. No bone information is imported. --- .../meshes/DamagedHelmet/DamagedHelmet.bin | Bin 0 -> 552200 bytes .../meshes/DamagedHelmet/DamagedHelmet.gltf | 209 +++ .../meshes/DamagedHelmet/Default_AO.jpg | Bin 0 -> 361678 bytes .../meshes/DamagedHelmet/Default_albedo.jpg | Bin 0 -> 935629 bytes .../meshes/DamagedHelmet/Default_emissive.jpg | Bin 0 -> 97499 bytes .../DamagedHelmet/Default_metalRoughness.jpg | Bin 0 -> 1300661 bytes .../meshes/DamagedHelmet/Default_normal.jpg | Bin 0 -> 517757 bytes .../resources/meshes/defaultAvatar_full.fst | 4 +- libraries/fbx/src/GLTFReader.cpp | 1264 +++++++++++++++++ libraries/fbx/src/GLTFReader.h | 582 ++++++++ .../src/model-networking/ModelCache.cpp | 37 +- 11 files changed, 2082 insertions(+), 14 deletions(-) create mode 100644 interface/resources/meshes/DamagedHelmet/DamagedHelmet.bin create mode 100644 interface/resources/meshes/DamagedHelmet/DamagedHelmet.gltf create mode 100644 interface/resources/meshes/DamagedHelmet/Default_AO.jpg create mode 100644 interface/resources/meshes/DamagedHelmet/Default_albedo.jpg create mode 100644 interface/resources/meshes/DamagedHelmet/Default_emissive.jpg create mode 100644 interface/resources/meshes/DamagedHelmet/Default_metalRoughness.jpg create mode 100644 interface/resources/meshes/DamagedHelmet/Default_normal.jpg create mode 100644 libraries/fbx/src/GLTFReader.cpp create mode 100644 libraries/fbx/src/GLTFReader.h diff --git a/interface/resources/meshes/DamagedHelmet/DamagedHelmet.bin b/interface/resources/meshes/DamagedHelmet/DamagedHelmet.bin new file mode 100644 index 0000000000000000000000000000000000000000..b902642ed59ad44906af432c6770c41ec1c33b32 GIT binary patch literal 552200 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⁣K&V#fBI5m5mKCAO^&QSN662*ZAu^Z|rOP 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≥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 BadZFx literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/DamagedHelmet/DamagedHelmet.gltf b/interface/resources/meshes/DamagedHelmet/DamagedHelmet.gltf new file mode 100644 index 0000000000..c3a076faae --- /dev/null +++ b/interface/resources/meshes/DamagedHelmet/DamagedHelmet.gltf @@ -0,0 +1,209 @@ +{ + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5123, + "count" : 46356, + "max" : [ + 14358 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 14359, + "max" : [ + 0.9449769854545593, + 1.0, + 0.9009739756584167 + ], + "min" : [ + -0.9449769854545593, + -1.0, + -0.9009950160980225 + ], + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 14359, + "max" : [ + 1.0, + 1.0, + 1.0 + ], + "min" : [ + -1.0, + -1.0, + -1.0 + ], + "type" : "VEC3" + }, + { + "bufferView" : 3, + "componentType" : 5126, + "count" : 14359, + "max" : [ + 0.9999759793281555, + 1.998665988445282 + ], + "min" : [ + 0.002448640065267682, + 1.0005531199858524 + ], + "type" : "VEC2" + } + ], + "asset" : { + "generator" : "Khronos Blender glTF 2.0 exporter", + "version" : "2.0" + }, + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 92712, + "byteOffset" : 0, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 172308, + "byteOffset" : 92712, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 172308, + "byteOffset" : 265020, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 114872, + "byteOffset" : 437328, + "target" : 34962 + } + ], + "buffers" : [ + { + "byteLength" : 552200, + "uri" : "DamagedHelmet.bin" + } + ], + "images" : [ + { + "uri" : "Default_albedo.jpg" + }, + { + "uri" : "Default_normal.jpg" + }, + { + "uri" : "Default_metalRoughness.jpg" + }, + { + "uri" : "Default_emissive.jpg" + }, + { + "uri" : "Default_AO.jpg" + } + ], + "materials" : [ + { + "emissiveFactor" : [ + 1.0, + 1.0, + 1.0 + ], + "emissiveTexture" : { + "index" : 3 + }, + "name" : "glTF Material", + "normalTexture" : { + "index" : 1 + }, + "occlusionTexture" : { + "index" : 4 + }, + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicRoughnessTexture" : { + "index" : 2 + } + } + } + ], + "meshes" : [ + { + "name" : "mesh_helmet_LP_13930damagedHelmet", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 2, + "POSITION" : 1, + "TEXCOORD_0" : 3 + }, + "indices" : 0, + "material" : 0 + } + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "node_damagedHelmet_-6514", + "rotation" : [ + 0.7071068286895752, + 0.15, + -0.25, + 0.7071068286895752 + ], + "scale" : [ + 0.5, + 0.5, + 0.5 + ] + } + ], + "samplers" : [ + {} + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + }, + { + "sampler" : 0, + "source" : 1 + }, + { + "sampler" : 0, + "source" : 2 + }, + { + "sampler" : 0, + "source" : 3 + }, + { + "sampler" : 0, + "source" : 4 + } + ] +} diff --git a/interface/resources/meshes/DamagedHelmet/Default_AO.jpg b/interface/resources/meshes/DamagedHelmet/Default_AO.jpg new file mode 100644 index 0000000000000000000000000000000000000000..419f62840ad0eff2bc2482ada01e55ed02fb87e3 GIT binary patch literal 361678 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%0DGo#vMHg%eYBUA<-9V?Mvo~Y0qe9Tr9*3Ti-Me z(*Gi3jD!@J0zRi<3e+W?(LxW%A<{9>AtOD&TZFPe(_s4%{|p5@nB{ymvYCET8PNZ0!g8!ezdeJ{4!Bt+3;gi%NXaiGnOo zw1oNHnj2qnbaxlHfLytzLhzo+rkNpVeRe$SKB^-n&`&^OL8fl#iP zsa@C>ZCR@h3vHjM6L=`_%!&tJmAYS~YPEaZs8+x$!xK&vTr*Y(*m2Fnmm4K0y6 zKZKJ$%LR7GAsI$y`D)T+d(t82q`vs&yX&tmiv?W$Nuf!(YLdEPZMkNy9%J~lmY)C` zi5}<0sI8MrbS2?!s-=nC{w)|eOoLG;ji%Ok3Ghg8uK~7iuaAwTbt_>b;ETC-L2b$3AKJ)-_&h1 z3lgB(9BF95r7q-aVaVtTXBIi=zRu%6Ai3@GfT&t6k?!!GX^_*(#Zl&)4eD?6_JfUh z58SIRt`0@gq0P$?keQ&Yo)t{u?h(B*a;|c^N!axT{L0|?lluE?e9(`If<~G~d!=jR z5I95ftHx?!z(@}=hgm^;HIf5ZWAx=!D(j>KkWj;{2wRLx_Wj`!9W;whzhNP^GCCq&FidiCX+80WKH(J!)cL7kUXcdSGWoW$VjCs$KB66%EDs z@apXLk*E{z+{aXQz+jw>q>i`<*~pM_W9sII7OG%rp(R&MfLw?_J(WalFCe2b5n&#l z!31m{HY>5Ap5&RHHwA`F#<9d2zT$Ie?yF0q8I15$D|b8;`;YoP3E2-2E(9d#R?gMO zLh7v&c}P&g1&e+l$6LJo053pfQYL^~Sjk7jStw9%>7GD=4jp5Z8T2Hv{Q!wt_k!XP zd={oO>4I1Ywg|;s5BScR7$PCq;_oFSC~s`=85kOp$N7MI(5>z&c#ub`wxscAh3o0$;^rbh@>;>J%W!q$(vhrOL18s0Q zW}&j6Je@+digQ!4Kf(F$qP>2+X!Ea}@(>Y{FMSv0YWbmN1_6}jy$uO!UC@2Lk~hJ@WIRK+oy^a1aPK; zde|GgYr2o&qV_&?H%YH8zOc-Pc79ixR30~tZ1`Q`OEzLJa(cJJDFAUXf~^t1)SpoN zwtax1nN4e3B26w8L3XQj zyIQfk2ewu0TAYu4^!04FIf-viKuJrs-1qM2amACXlb)4cQXLqQel4Fy$@>&;G1Ww3 zej{zBwqxs>FR=FG;C2@G} z*`2=Y1{2DBPCqc})$tZGj#pW$Mh|kD8T#hQ7CgUCwQYY}dV&D@GJJ_83O%02pL~h$ zS{6|d-E~va&P9jZ*>EPffysvg4{^87$i~oBLN{C(l##y+ybO(v0{Em8!fiL};CRMOk^W@F0 zypYnJ&aK+6Z=1@u&(vY#Alct^)_x1cgoedb(6O0){*8jHW=`<-Diu&Q_bR=4e+dd# zYVcG>FXPV^WT{l9yfp5ObXp|7gzb`;utH@@Av8<2)+{;xc5~k8kP^0Cr4YqtNY!fc zIXk%|ohv=~lNN?dazIW3Q4iAZZXk!4JWk4u3h@GZXHk40 z5HUSO1c8zsibh0m%LCajiG^VMMK+E{*nZ_K0&s8|@&6wLobq22;6IDkaTVP?4V4Z) z51IB;9TR3b(6k}Le3l;dKrp@23^fTn5U*tPOZh;2jQ)ld+l8xW&fJjEQ~2fT$K+f+ zV3B%^y%-3p<~A#~K9ye$u9>nPYE~p{Mdh85#a%pVu6WWtk${1#-@c*R-cc3$R+rgM zI7tUi)3Ua((S3b->YjkMF^KBaI`wjBiR;G=_h$q0y=9c|+9e@jsTB^m%vYhRHa#@f zTW{{t)`~o@w`6%c*i@0pO}v*F(8y)^WNsIp5E7c~iWb~V)BlS5bVq8DLGCIS-3RCA zYxOy@`8Rg8dbj!mev;rz7JspJbZ0|{-5(Nlv5=)vZl)M1#5W(cvEbM5!_pzW8-tS7 z)t!aqqO4RCV!z%nLyzeAe=**!c`-c9U~RY%!+=-qH7_giee%ZZ(4TizqTbnP)%da4 zPvYjg0=m>^*?j|F-XBn?NEgg*L-IyhmjvEa?{Pj1UAV;FZ`AZMnr&3}rgo|C#YSzm z02GyDcc7nvE*WSig_nSUZ;o9bH{@Jy`~dD1gT-rU((Dd%f^C05o@e}v{j{(TTxv4q zpWRa$7b6HOO4{7}13zT4JaMt4d-Al0AryGAQ;?^=&6$%g-C_Grp9;l^K31X`s{eNW zvN(0@mVS@r-6r@?!jAgXUH6}FKjOHp(vH^XN*z7ye8MY;Zi0j^daxc?%imwzz3ec# z?vM=*A5TJig|4}y^n?e00;0bYWtVd=$WVMifa`iwAHj?Q(}QyLVS+68orILYW2KA#~h)) z)WgaV?|^W|b?^sZ_x%QRL+T=UV;Avy?oNlw`=KFpe4Y+Gg#gm8e^7ZpxXYM6t zbgT%kXeW9*d?@FKM6Jq7uFQ+B&3`$Rtup21k28WvQBpg!E%rxec}Hu7oA_?ku@RO8 z3J7zm0(I|yg;_%=9WJd`gDbZ#o)(h3To--j9{-W78G|!gg~T`&%9fN-;N?!EQn~H8 zyHKM?qtN>a&FbhFk-+S!%Tt#mJ){?@W|KXF0Ci<%GOtb>8;cmXX;211Gb2cr^gcW!stx;t_*@DpN_LN?{<)QLq$-J-{rg+H>o-n1`gbhx^|TBH zX8FDHi5lTO@*EXJh@~iEG%NP#k+9drTW!ByH`kO<<;)v#x({}&UuS>!?z6%JbIG=o zlc$0amEM&@`dFBd(TL>?r;QJM(ebfCJ%kY83z;m{gW@^upoLA|AJ(iEVM=DVUZWsX zvBWr{KQW$&7ih^#?zfXO6#qeDa@2p#>0US2Mwp2*Y)7tR)4GV~-R`wuLIOxkNxRpH z-GY)s<|Yk?<(*w2s%t^@kUG6$=fJM$-agC;>8gblcwe$Wr=oX z+TVU~ub{d8O^BsRvamnkw1w-@x<$BK$R)i$;4VFA%)|EEa%V>S`f?xbN{5YkhnVyJ z0TJ{dk8ppJ^%hYhyjA)Y_PJqxHi=Hr$dtWzQtz<)bawtnt9=5vB~4pA{h~6z`qZc2 zTZgM)nE;{ML%6x)8Hb3-hi3eET}9WO!f^S<_N(N=CiWy4tMo_O-p zmkUVP#SxxylMQy3pU%BoWcP_XB{SkDi&S2dn9@u|ADhQJxBoPsV?ym`GV56V6xt#& zjciyvt~$41=$l*p(~2ctuH#qrZa45^>upeob?DI&Yt(-A{($f5HfOU6eb-$i>}sq- zeD}4pab5#qwuj}hU0g?H`TfZE+xHF=It~*7_Hnm-^>qQiDFK!x zkLnr+yonE7JOvB=b;`e6A*=fO*|?LTeJ^w6H^$*o@2(8sQHI6c*9Ag)Rd%>l)`%Vx zRpBdzVF8e0J)Wx0+KY?FHmLBM_Thu)wG#mjVh-a>{sZW!lMi>V3`8t2@F&koA7Wu{ zx5{cAI{$#^d%edK9tLq${y!#mNKAW5GJGor@h6W*Wh@*Q|A1igMYMn@F@vu;b-|PW z=+oi4&9-LjkE|UM^Ft=%d(GrSb7$Y36564r!B=|vJs!%nYI^?xs4i3gs6%i_Ix-wQqzaiRUO$U*a4@~?E1bmR zdd9Gq1l;ob>;{J~nbvqVI<(G5IT_kp=cMbrs+|J}ND*n$i{abvjE~q%67?dngR-f5 zSNZ6qDfYNga5u^$cF(q)e>KeyuN{G^DmDUe~0ljSf?Np zaQuh!{GWRKzjb-~8w3IRyxnyq40^!Mv*c3uWrTO3rA?RhbrVaqf8)>`5v+XarK!7V zh%xp4=u2EyDvvzhpW}?7=C<-h5)?8uD;c^bO@hxaiU(G8)Z#*JRW%OX*-E$NN)fV0H zpYMMyR1t?+=JKj*eUcj(JVrKP+{(I@w)U@0LJ zk+TI7 zfDyrGxstVhk13-ZJJoB-=;dc}Zhia|nwjUj)hBMPUHm?nW1I0jfW(A#Bs6=!zq&U3 zl;oY^C%HL`N9mN17u8eFlFN^Urf^g}u(Z(GKvScJi4Nc@V#FLZ39fRU2rM@}--GAF zmS{>Np?m+8W&d}^{hwn?_kW&>bn&n|UdWU*f`xo2LQN05;|02TOWhMFu&4SS#Y2Bn zKKTaTzkJ_g?C;MaRR5^=U(D}Wix#|~sienqaz9WC9_Sb_KN#~ zNGYE$YFH1*f0I$>6hXZ*m`Ah8lXI-!1(V-L?ULxfwEEgCnZbE0Z%*uy^Q!?SQ)I2* zI`d>yuTq)lFPmTvv0=PIjoiKp=fgm(YF|y##htX|Hx;JL!MzS(vF3Ae;$h!?G3IFB zOXkt7!Ag}9NzZr}SDyx66Z~DYcd#XM;yy-4BxGFkclHx$YCmmJB@K}pG#8+p9h4b2{#@o)9pQ}-hV7i23Q?-!J|KyG`8d#nAt!4qb{bAW*t zx+hFL!d*egS$jQxa@|kmOyjOVxZ29i)+-CS=Ax>Cvx*V{FcfeZhdDzJFOb}C{z5K?hmb{y~xCfQ{KimYx|&+8QZkexh(M&km>YO)heGRARHFw8c-6KKYYhuM?} z5b;`0Hqj0IzG(jXmRlLOky18INf(yrvLjg*6T)o#1o#f*nO>AWIejA~Ji7+}zFWAn zr;2uojTpUZd%;hbE#F!qJQV@amG!!;Mc*O3Cp)-`dw26z)6NYYK~m}gn-voW_Nf2U z^yOE&;dvh6PXo{Y0XF4NLydS;5A~6dAyaOsqrKHfki25+>PgdMWEpyf?O>ter^8`z zM?*G?Q-StC$|c;;A5c9UjSrL-&0isa(WKe#eRh5GQhi+Dh^UyDhhSmdy$X)sTByq6 zy`$G+JG^DRH6HXnORqj|UZXwi1~-@_)FH+JF)Iu<)eVVSXpPG8@12p_x!6wf`LNCP z{2yt@&L7SR(+6i+gs4Ko#q9Hhw?@@kxD;G4@?Abbt2%pv4KF6PQf^-+fpGdAYw>M~ z+^0MzT|J*iwI`~&-2DaFBQcuO-zS%5nZAH;vO0TY#ud0$G4Xcsg`q{ynQ4+ z&jgfgODu-dMY>g3Z~&A=pb>LO2)c|O9QO=;mQ(0`NYtexz~`)6FpOIHAd+ zk9TSAAh0|@c69WrQA*7OFOTpaAOp&8mU)VF+_m_ivqaq!?$C4)R`E`wT5pkOi7kKG zv$+20ERC8?*T@tv0}(9Sc3OVZt=@@k|M@sv!@aDbZZy>}^XHQ4++0Ff1LeLhGkyM> zJh|i&;C${{c~!|H%q_FG39j4y5{C{?3?7-3GODxtgy#n63gH-qlk|X}yE!YBN|SnB zyHvt&8>RYLVWh@X;L5M4zQxshjv?%nA3&bI!JUN zUP3n?&|ld%@Csjv{B1La-SF~f-kOhJ0-orp?t~i%NJl=)@4M;DpW}aFY8Q z=Ttv7+DG9tF6UYFtp&U)M}b55AoXF42xU|8cY(IZCH0P^F^(=xBQ8wioO`uH=jfisW)TFvrUuLrN=tp5N;*BHTR#(Y1|iXpidt5awJnpiJL9HXIio2yaB(Rk%u4xLq%@l(_zHeALL3Jb7ci zxFOV1f7R!2&kDJ_bJF2a9mxt~rZm%S}T4vM!fwF;Cu1oCFJbPcU|e z#FBbPr|h+-qW-!L)gI@7x&}uT+0adu=0)=U(>Z;G*S9?d(XZF8Xn86pQ&lAuvlO+muOcGsT3l_>T`?aNIwf?geF{+CSeZy{l%2Jeir8#A(8V+Xb+Pj^X7p|{rT z3N@LoO*I-*VxCX~5681_tiM-s8h_YY{1|1s3ehPkj2Qo`MyEm@muqSDP=vb%BHciL zxkxgnrw9c&3{6E;i$w9L|0|*Uua5YCjvwIZb+M9}c-CP)CKM4k9q&3NiG>)Eh#shD z3N+2oRK7t32hvcFDnv(P+E$^K*cnU~sj&?hJ0#BT(cKKu{R1+9NlVskPMYdPxL1N=P5vi$5UbYnw}IrLimF zZID%H&$=Q8zE~}J0P317xqgt({u+9Lmzw#iKlk@^1`5@$qtzJpPf9b4p4d_#>h3~RLp*MV;QKT^7^BAVQl||aNM~3aJW@g^RG*r9 zJQ%ELER2>}96);NhUpCEp`J)e$TpgtUA2@W)#9NhlTz^pniim!u#j=%(>4|4E(!vDrLy>~oQsuqx4gX!kA#ZH-7crPxWXySDclXt*D2*M&Jr7&kx9Wmv2ZSl9&HWk~r3V#W>3bN1;nXUZtM?KOe{cpN z5nGz8Fm^APY4)-S^2BtH;?FU=txRIq=On|9&kvp?_wlX0N*In2OozPFn-@5%eKxOs zk4ZfxoN;{iQHlKrQqnB#g2fSq2Dg6&7gD2!fp+16I{ic63;d9g;k>fsZ4wP?)P3x$Z~(@-KE)#y(vM&Wh^_1EiU)jk(i=8zCW5z7YwQ^~6_kOWY-rZ99?H~Mm@B=$Ngx+hFIa}{$DkIO6!x43e2j&gHKkW2& z>BI7Zk$|^V)1sBHdHb$DFX+9)ctqDx!FMss1@0HZY_6RcJhoZfcv&RPs!>u}N2Z2! zU7*)^s_ywVf@dn=iR;rImT%o4!{ z{n-VD->Jn~q3J&1c}Q3zeGv&Zo_9YFT_b58M|3j2@coAcs~XBJc|@shUYmP$a^@Z8 zoX`D}#c`vJCk?#cYxUsO+@76OUE;g<)yznT@nwmZ_(e?9fOOCC&MgdNte-5e-0Q@; z_dW&%0>3j>4rY=X=ItHrM&xD}-Yak1x8`Tdvxlr2SgL^@Y&2?DgFsU^mUGEuvc%I29T7ixnNoDt?3p;=R+q!_ zwOvO$&RN?yRYPatV)EC3Q2V1>7cjp`6zZK5us1}%$`Bicg-5kNL$>yM)HwJFf50H8 zc$oB1M|XeXUin@S1LP05lZNKDp!?02u76iXHk@tW&jq@EYdfvo-aIp0vZER)Uf+cI z{)5f9tiXUOEFGdZ0uIK#W_B@#7O$y7`Bw9$&pP{K-dt?d=o3NX=}BdL22O(Zz1Tg6YN{x+L>x-C^wk@AL+Jaxzl=!=CeC9y1>A>J-^Quv$bT&I>BzL@WsvV!(qSu zeck#5fybl+dT=98Vr!N6>>rTs^_$as(nP?R;`Dw{;GJB%n`*}w+I5z?ioxP3FR?e5 z@5Z>!U>mu(neG;udAa`|lUFnvC}f5Uol(s+uXhx9kldGi?l%fj z+F7mtcD!=!$E%w&7nI+$vW5?C*zts7sEu5#^5k*FL(Uw8;cFE;08z&ej7W?RxzjKz zm9%_D;ESn|X7M8i;hCPG4K(k&cB^yrgD+dThP~1^SK5>ry3?r5{Ly^)lqqO zoE8?+*IX^2%sN2F3rn*RaY}VmwzzR$vmcoCG_fQc3_afZwuaFsj1SuIZ&4mih*x55n2j(D2wz`O047uL0`bu{YP8 ze#d&nT*-W%%l8q>kD=+wWrl7$VorgIOp7@f;YHLZ5|tRV!YPl*DJ;WmC5J+z`3I=h z+_Vu2Z3t*=WAYCvmB+%8#^DYNfgL~EDjUZQe^y3MWcwjuiDL?pJ@u^|Zi8ZGZ+{HJ z-`je9tN&pFy}PW^9l~-iVDBF7m>mE}SUF{JlAu6XzhMTde`4jx@F*z!gy}s60?!Fu;!JZNouOttSvQeU@1!X5se;$oW zQT<+H?lcUG)MdVlgoe}Z6Fa-PysicF>D-B8e`U_J{yMK{iv0C`zU={<7*PTE_&OuZdb7AK;n|2SS?-;&qxl^Iy7eW8}z z<(mWU*pPd+E`(IVI`~;V--j`5SmJyb{64MVA;MoYSr(I5)*SNdxnIQxy#KT<8N*=W zX5>+1k;b;yzIj;Lc$9D`RI>h(Zf{2KvnyY5%iHr=;&*zG^Kli>5a5=wo$%m{84XaE z1G)F}8s1+Nq;{V2`0AxDVkz%C+*p;4N5b64T5L<622_Rm57$>ul>kr2M&qHzJB!4= zh!&fDp%Q>Q|NiU9cs=GG#=w`@7yq;Rgw(sxyGUreDv6I;?pVq9j}S4o8lZCMW2T4! z)oI=69y|@|-Ei6kNjzfM&62~22*&!`ei00tYwHTt9wM zt|T>_pJs9JXc9;Sm(Q>`oD<%w+VN8yb;Hcsc3 zVkd^CH%HUse5ZgX&!q%LzAFt$J$PlR&hZ?{D-ONfclKz~FC|>}Au&ZDdmR{yNt^OA~}t(8*#focBC}@Zo6_C(VD6L@WU*T-dX5ja;AG~wF388 zink^AO|rzd)xRHOz^LAttdR$+Dh!2p!)iihc|0v}Y}joiM`*wFrU5+U4E9`nB1;zW zj+}r2>#4mDD{VUxI@q$y+stk{ao-H+o@D_Q@bG8(7st+L&lbI5U3S_(lv(gq2`17@ z@)pPP*oRpAG?5>kxNrK(|02>~;TIvuSFrW|s&n zS%MeuH~qQ^eWy9|!AjQE-$dHT*7b$5=NZ|xZtN>KvC>jaw^mC#&_ziTNoK)JxHuZg zK$#_sTgjpaSTRelcj0oaxYDK*wf@lN4(xd-XD zKQVOJ=+nQJmoGJb%^%qb_;3_OveZaOB6>FQxjPNWA%8VC!?HO?so5m+SwV8XC<#-0 zX7%pZ1J&G#SPTt3enO!VBRNABxO_O^g8`4si}FEq=&0tSlRS)xbP*zZDx%gCCn~&F z*MmJ6B%A)=eyN-TJpJ#!LAp3p^Y1(Ak56f_CkxCcemubgv+4PGp$r?_C8XU80$Jo} z>bj%$qVXMXmQ9-1_Z_6Z*3ca6GiWSFT$v0r_B>j3eCCMFU%$3UVsv|sUCI8W5*uN0 zkgq;8&Vstk_KQe61LG* zm%mS>(h{8kADO=lP_g7`uK<~J0+u&wQa@e)j{1BX?80J^-C|8ZkW>#qk$%LlhOY*% zK&EPcKIAHvex?WG91Bu=Ue!^uj@O97$rtXN<$FiFmwPZd6ZgO3PN?}0N^Q=VH}5-- zG0#JzFraf_(8se1AxvkWYXE$IX1^=Lv%6blH$zxapmW>f9qnBlxE|NXe9S-7T~9hy zKNZcD5Qc~-{3=;Ap#mjepFw=7ke zBR?LESv9k@237{L;NY$YC@ao z#+s{ZmydLkT31=|Q`zT1Era7o#kxx_Ii$#wjW3R3BT$O5)~(!gpeTu1O}2+feP67q zL$lXaTqT6*$dYN`8sswSi{yzx6Hl&S{k;HV!E@ky-TQ_Y@5&l`jtO~{G9n*|yn~cs z^`~*kZ?y+}Oz1J4STF$a^q1MYkMAYUY9$<^^NuAgUV1)VP>rlr<4;C%rs$PX%ahgK zuX1hnqc4khqg(b->lms0;cch&;DLq}7g^D;ZmzS%wSHqC^Rz=vmlY~roLIVC^*>d0Z)HDI zKa&9s|2Ql%6fhHZceMhS3V`hM?St?~S^XJhp;}TA(k5{qR{|LxT$`YukW%2^Bhq{3 zFs@6yWsOj2>za&oKE_(Q?80VR?AGHUchhicS5j@fWa2PLT8_vy)~dn^0|^!yV0HEu zlf$LvMWq0he50H%BRVkx%d+3T>}Tz__VPS4SRaRRQONTW=?uMShOg{(6p4g=RkAeKqT**ScVSRB5|JlD zz3qqYv?TIM8N~Yg3SUVhJYwpR<&LZB^Hy9B*|kbbdi{;*(X&B0r@7p%=uUrML0yC1 zahZ3alN`eN*5pphD2mN#*h}UsqP)uzTj#)d$(FbS&yU}t_1&72iDve{UX{%Tg`2sR z$)v9T>39ISy1*69y);*{o!qlgNSNLG=0MZ@nvPJc62hnrD8yoiOFfL3XO2@N&D*zW z|6Do;NH=RLzIphVK(w|uLN5|U4pM58pPihGA_o4f)RXy*z--i?#IdA5rrncX&)GbK z=`KQ^Y$@|Ea2a;U#TcM9>=?6x2|-#X`rt{IUqptibHHN`&rlGQCq}ECuJzU|v91w_ zzS1@o)C)K(@94vwR*R3^OE=`EDAJBIAH542{Zu|E36@{p&GEY>j@g|(nqDMtj#-j9 z2R_JMhMHbmPEq=;pccusxiJU18O(~+p#%UF#P7~>No8m_vceON6TLf94`9$bhVe8L z^8f^}a!`>dd~(cD8%%_%Ep|2gN6;FwFueVF^fCxLN~RikLa7tVEZTdbkj z)~)^|7zQdL{|ujYK%~mr@pv^5(sX69)Fem-lo~;j?emBQCiKH~7-T>x9{=Iz`wmB*j=T(x=CHiXT zZiZ7`yu@dwl<<}btSfX-o=6**yaX%1CqZEmiN$}Q>Ozoheeh_dUbp1ivf)!fkR2Eg zS9FbO+$g6y0Oi7;cgx;omn3*f3Y0VTZX-FFUf<3>I39?yXXp-V^jCWy}mWJU2yUgXOn8n8JkW-`&-oW4e6pVw7Pr}uC4+w-epEz4Ti$d zgi|8#vd#5McTW*G0gGfm2cRv1nUM~(9eir_@`#F0H|(P%qZmNVyMwPSJPbE% zv7z86jSD*r=twVD|tz`Rx3a-=^bHkl4F|W15y__wbaJs0WlY zjYg=6IU#`k@apV~Ort@{v47`a3suOF`lcQRM1Q5QC=+lmnH(xE=!p?T+QrwH_m6Sb0{>(G4RYfQ0TLb@-Om1h|X_K@CuCf zTUGeZ;immU)BDt)q$8EyPBIn!b0EfM0|O4*w)s0(spXxj@Xd~_>rZSSf=4|wLxubM zfRs`w1(CMv6sdMYTjv-LJqIcU9Jw0rFr@p;MRu=SFYdH-pE=yh+2+|L(lC@3ss3VU zD#@{Q>{c`Q7T5m9$GG|WXyV1NH|M}5t^CQ9h;+cW7?m_%)^rTkyI)29=Z@cz4JMo2 zbTNw|&+T~h^TOxbRmb5U$5UPGRx9S&Ad z$|s%btsW2=RQh($fsCLN%-8UUnD8dqwS4W7?vq;QLuXSCoh-HQkHae>x^T)%pFVVR zMo8;_zjb_l#dG)^cymo{^{blnnM}^tK%V^{IWNuu4q)GcHTQH(Xj9Ju1@|%!-SZs& zQ0u?_=Qq#qp>u#kvta$(R_y7)#e5SSi7vPLvnX@V0p+gn`gNYK91l+ZGW=aT2NEE9 zBR!;s?xDn^K}eP}YU#I!8VAh=G6X*nf(>SNE2C~?Z&KOW44?;jM?(vF-1V%Tl`!Gb#ms$Ivw&UOya_%z_) zPwosTz!zj7wQ zx6fqPSWpn)A%E~Wp!)Ib@2y>8kj9UA&H(VY?xTqaZNLZ8Heq)TpmKgs7I4!yD?iWY zv4O3zJSQ@!snRwpsM_19ZJF~>IAopuMc@K%8dIEm^g$R@7mE3}|^cNXQOI_L$^)^eLhe zIZHc!4m_T6lAcmOligf4zk^eDKjEq><^M5Zx0x&$kzA6~?#K(|ym3fU0_SWxj^Jrl zaLTHtbU~52Cn0l7Q&OgTCATzpnHkZufArU%GpIeU4(Jp_fZKA6CkD4%njuvj@Cbva z3*(H;osSh$xh0QnKEMh(fgs9LBlve{C`@h1Vs{<79Cva(U4I z?q<SP+&)RrIAa{V zspMrRz0QyQlZxag6ThqZ7+=cB=IvC@_^-)DvqN zy9{#H5a38-$7{YFp^VxFnH5?Q6}O5!Ya>8*IZYv-*Pln8!nald7^>K8CE>i$ie_N43|0SPrGm;Jzx z6S^0WT#7T|A^4z1HXd0&FzR-EIp{!^ZvzRx-@Sz7l6a;6cdk;|glax3WI`$vpY?FA z(x@4?ME@rfSZAFN8I4nW@0n$IsKQZXcqq>q1Nc9cGx7Lhz6zgEfbFGz4zCZN`T@UP z0uGVu*|ZR~LI}(dS1R~X6u1zJwmz-c%pe(H*U*?U>!RYteH3`K<55tYYMt{lvsid} zkRsTlF1FG(Y0QmCWp8=>P^pNV0Fh;6mo2=_J=yy+1VyP!sAno(OIg4LtD7Bk3+*lK zR*Mhwig(#S{IaqpG*kLG)N#rl)?zS?BhJ%ClA z;ryg|qDoom&eoe7D>3?;Jyq{|Ev6zND)L0A@3anHiiQYYN537v4FJ|D?J6SL@!(;c z=tt-b);d{oD!a7XAlVwn#A4CDm_~!TU{8VYKrsr8=~To6_YtBd`7FQ}v-pu+9R!(5 z9c;0npcBxs$#hpAFX|MW^8j#N)a%BQ!e@-(_0BAJa3X9>%_S#g!q=ScJ$`DsV6&?Z zW+Os9&35`<2C9a-2q{3kdB?FsvNz$cAYtl`MZEsbE%20pNQS+oTImBk65 zFscz(L_w5X7dCBuv<$PC<5SVEC$(?@F&su@r13G!1ghaQ5Fp$Np*~g6NrqztAz6Ny zA*u0_hIlk^U&Y-WLnQC6zo@nfu@GLqn}XxeaWAlZoTiJSuYD&*fwo#eK`j+O&-{S<8AonxAoz`6nw&Jai* z8C||WDjh~do-ry0ro%crY#Vb{Q4GzXk%T~<%Y)WDgu`6o(VcxWYci+z_Q3Dt zMn|P31y$1c?m;!j(OCJ*)9?xPn5Xz2YC&Mf^)~5*CGqdtAVhfKuk{_S-n&8q+4@4I zg73bu&i#zHQ6WynSoO43t!g){VUe88_5i5UpS2e!Uva8>4bfs%8-}A{X`Cqfg*jb!>BJ&L0TT?Di z{M-0BkF`h4CB9+OlhzY>agw;Ed5~Zy;Xd4@$5(z$DIzBX`020Y^SY#4-GRO(2#n7y z)Qkbc>dAG%c)&IW9f!ZurL7l-2Wptst(|!vlnrVtKcdPPnuB3wrc)SR@|CEbBFMA@ zxH=7Lua}f`#?;ae_v>?+8r-Uxe6N>w7EGkhaOLVWN=-x;{zBl|O^{n=$~KI?YC-Rb zgOsBd1cmbPkv)YfN6{I$+$Y^i_i1~Ast2&{?6bsQU8wrzUh%SDlBbscMLGMwfFZM( zA?eZ{K7J!;UsGu@vQs8i{RIQQv7ss*pP742b7ZIT#nPv2kw-O&2EeDxYpeKNEYz=? zyT0LC5CmVU>~KL~`#GmTI<^)&Br3F@>Q)9!Fh*yq(OEl;H7c+Xpz)Co0(8l8MqRQo)X+L?c$m^(>2wILDjmSYa%`P zhJO9t{@ITw9(wxOhtKyeM;=X>6-)~b$fmjQJe!`yNp79UIA}`f?a7n-{jq9nktN&P zJEQq9nz@D`(v{SSsYo`l54>~!bEl%aXi~_~^29gdm3}wogOaP#X|35O${r1cj*zw{;L8Nj+^oj)Y^$&oJRNGK2d#?xa_HusfeP~%H|$n!*Ui6edv}Yf6rFq z{Z1fy19TSEP)bdNdYIB^m{TJv>O ziHVz5t~+&~&w*>U5zT%l2@g!>p^YWnD5XINL@2fx6|VnmCK`1k**EqnTPVl2qYncb zuRj5wAB0fdyPo!{is6JZhiR0^8$(a{+8G#`>%6ZOyOEbWnnLj=d03VXXalpY;6yMS z&tK7*m+GVTsQbeoH{>NTN~j;(fQmlZn5PjG$llQk8zNRIaW@!8%fj}p_##4HCnO=r zZkxc^WOgv1(GASHHgLmYZ%n}y-Jqs!`JG6!XZ4_Txr8$nN&kdvK6Gpg{oVgm+-?t~ z-F|8cK3sWG-2DQ~L|SQzczXO)&$;I5d*@#8=#JWz)T2QNJIM3%A91Lj5O~JMtOyCf zv9?oUuR%JqqGfNM021;CL|W_Qzt)fR0J6NdiGWpyy>mUFfLfX=uv#h-HVYjss{=^y zyRt4%70{Z{BAFhs%;#laSR2Xk7Sa+%cZ88d%9vu1p&=eX3L^{iaEvr4No{Z?Aa+&k zpIIvZgiR4+0n+Yd-~l5V4dGD~7^_bZK1c(;(A>CNkcZ>n>*Vw>K!BeADg@&LSb!lz zJo-z?-Na7*VBmFksbgo7551pU4TjN!wE?|S zkQq|2xm=e*HLNe4?$EI$5bxXyJZ$=Fb@X%P2l~jS*U-+3^6yx}UbQgXxe3(EC`NQZT}n&(3EX=HH<=)7-NYyb?^CJJC3uBP2V z=&}i=+Mz8uzxm2mOQ?B~E7oa9s+SKfJr`#hPH7pf1oiMy_IYh}F?z#iwzem}lh zD$vvoTXW=mZ9AV}g#-YAOEhuEE4g*lwb4a@jO^0!Ibb^8>i4nPh+t(!57>^}o5Ycg z&#-#o$Wp?9N+lJQD@M+2@P;F+FdLitkt9UhJ)iv2->PZA*vNC7i%9g~h~P{8*XO`Z zzITM~)IT;?D}#y_J~BvXy~hWuC8E1E%N*19wx$rvZOmV21fj_LkCKygko?Lh$nCJj zF{Jgltl4D45yNf;=Q#kg&&p_aQv1pqAri&KF$SA9Yf4#k<$W@^6;F7?3=P?%lIL$w zHoi?!nBOsYQ>2$RgJ3Ror1F$);C_C?y-a`@U^x9qs^GFk2}K;$R}$cof*k=@s>+SO zVzoU8GhT9HlbTW>=T?WX@y|AgzA_Je8R^H5cnPqgSdtXo0Jq&z9_v<@sr#;NY=66O z3IY>C4M_r(GR)Ax_m*cm4gLeLPmOj4U*0#hodYycdVCL(3lm(JaRTJNOA2i&*saX` z3ir3nwT8}M+s0ctw?8%Y>ra!oNMJ4x}cgf1>Gw^p#*hMjRi2#@8p*U#nN)$3AvI zeRW}^_5n{HDuLXS^4CLd&|Liu1lSxeOb>{$L|6WIsIr+h05ezbEf1i}PesC9Z>5bX zFxS2E70EB@15n9|zshR6C-5TyWy6B%i#REvxYSOw##n{Lw}pw(ofg@ub)W$U^&}lp zj^jZ_A2oxGpL{**op&A7v$9YS`cm7+kndGO9gbZ3pQXA$oAEZ~vp2!nqRhX(xXhy< zneGkEgd7<&d%ZoK=O|MlaPjw(_v!1+V)H>`4Q_l*t)@mc0_n^9ri0%@ZI~3~A@RR{ z5gBx9U-J5)$M<#=sw_;K%^|XHynLwOgAjG{>_g1Md8c`TC-?0Atnu`^R}vVox54v; zo4JtU;(C7%b%5~5#pdeWS*te3zQ^#hh}GFPNbIB30r@WuX+F) z9@5YJ-+jX_PDUFbR4|)J3W<>fnL)7au9=G7HxVHj5M4J}Z2+s1-l?d$U#Ihiz(NVx z9HqVSVEQ!;p@YDyN`&}cWZn@ zpHuPg@ip^IL4D7luKj)z{L{<6413i%2X)CWf@MGll&QN9I%?DDS+iH;&$imsj(({b zY`2Il89Uo1X$E`VuW2MnE;H)GQ}mbEt8-c;y{-f($ZlnmMJ6u^Kwn|Nm9G_Alg@$q zbqCjIABF|{jF-_^{*d|rYaswdIrh#+WC}h;>pWbo6GWs=8^w(p4i~UoC^IYz!?-J1 zdmaUkD@?u$maANVw;%aVmS(>s*ZvNE8!||-M%H%EB^;o5dH~p@ZZ?ROZVm`50I7)@ zAq*s&yrAJD+qM4O*Dmv+px(3S-D>%vTq%Y0TD$&5W8nTe>b8y!1opw5$H+${;gKzH z=dD*hiH!xMtdA43S@2>Sm&SMmax4Fsqt^^Zkq9q`fUcCvZ0F&|Fk(+ddSdy&&RW#8t8r_MX! zFNIU4P3{>nF6;Z~P?0w4xIUPV9jbK=aJ0>vf^K*-9j(;RZV^iDF_^@ocblAfy11ra4N6shJ?@xeLu-Le!4wV^#LMj z;GtV<==~Qi{7AATm}dJ8TKX*acqfp93+p_n6VUc%RkE&3dl-qwBU;NXj2guF2rpFD zz@A2NpJTD`%xrgN#FU-gMU9UT0O}POiHbqx6WOYSmIQ14=VbLNO&UN`v(91R7+w$W$?9C4Es;xz*&h8e?Ku8O^D8K zg3CAGW53^#=U)Br=Qk0$zcBZBiqn>##x{wXH$W)WvFY}0Sb8HHu(YB!{Bj{dP({fk z;T1BeO8h)7&FLf;_@%EA9TPcy0l_8Tq;95k z^XiMH)<^{j;KHa$l{AR-xi(iLxqO4>mk1|&@XVesPy$ic)DP6vi$ko13bCFb}t*Z{!T#aj{H7~P$(gB@Wf&#?( zAKtq?aBp;7NWQ}KM}~Qyx6cqGWruT;k0Ntu>gX~kx^3QEJxr{neRdP$+{3%fl;!f^ zWCu$?fb)%HmAi`T&FZokq4Vl%+88ZTB$CnN=RPK7y-5BA+hg<3DFyJI&;aE_cKHpz z&tLVi&OWbaDC3jZsrd!mrcVx3sH!?g9(eTbDof3{e=1XWdvy_j7MIMsq>ga)OZiX$ z0URoyHdqbxDYe0!FGe z9gK2we^qKps#}gc_=_+PDXBJ0`UZqmbl)7@&NLD@<9q4vjO;6 z@a4U7LQ|jCCX&U~WX#-lKXWKKtgNm)6Zn*^%E0BRxFX(SJ-XgjCPzJi2S`nE3QGqS z<&B^L*s#6!1paf=6PINaL@ew+m9mXm7-%NYg~!YxVL9|EjlxguyM1@5)Wm?>Up=I6 zHrho_sXehVEZQ*ZiA-;U433M9B`I+F9a;Nn%f7oG^Q3Kk3a7$7yk(;5F6v(mA`8~dzU6Qur=r8kRrqt&_RmVX9x3RwzA5yfC;^lES1d8 zC!iv}JY)uKNk(iw~SRvzm*o(1CUKUj7%C}>21!D zFdzeTD_e0!k5{RYmD*>wu7L$lkJS2`931|rcovN^+$!|VEd7&-Q;t~rlCx_{KF_?o zoO3S%z1znvVHZ?wd-O+8=J{g~1k2y}Cy8Oz(IKz8za<2VS0X*03KXt2hM7#>P;Q%?Ta@K8A=oXkTa~q@q#@?=p zEC-lO*V`vXA}>|y)iaNlBcWukCPy&d&BlOL+P>9nVcMPtr3~=MW$c|EiSxv<#S+BWw&Y6x?eiooCO!ApjHio#(Br^h`GL#{aGnc z(TS5M|E;oFJaQXk=@gN(hXI>>Ql;?FcurQ1CW0f6#@1pDfMk|<%TK~jL|oy6WF^Is zdcuo1I`hRyBoQ!Qj2yqPiuwO6DE(u;0wETlZrGjH;sFhSm3aZdS?ODTsSGK427deC8b@OWu zuSl&Q`*GTmB|mi)fcS(i<3RmX!0)Q^1)fKX!*!vSywdZmUX8uVsdG)rHc1cpcTQ$` zCtlh#CA{E!sHMkysYht8O10^y=!Q4lWUvI^772i+fj$%dB}drqbxXy$gu=&y-@Khv2e=t1+CJx0 z1)T#p{NWt?CT;GK?{9N~;N&hX-uM;GcDfLksIbUt>Orw@(_ehQ{PgX}O408X7=-BO zPCJQf2WHBC(8PZn+UjDt^Nvdd4(dXHt=q4GIz2ihtty>KumA`Pa0tKPV_(@cGnuq7 zuURbprV1j`eKT<=Gxm9pXl3e}lUs5yd4sLz%pUt5EX7e>`i9Pce-!_4Z!<<6Ktz)(Q!9i73g#!umsw z$FqcS2oOIm#IhYkNSE<6FB_x~7VBbw#g$-c>}N#ZQ1$!RN0SB~`Z=hZ;mfgXZHqXC zAPz&?m6}X-UU)u1?z(e)7LVB(T z1n5$KV!+WuQ=(xywp%Vznsh&|_)^V85=I7;jtmZ>%!xGJi99&M0m`IYTR~B zb=J|Lc?~e?Iw$!#_Ad0;$*g_!)xh~}Pyin8+tCdw9)~W-4#T!p*$OCR|q%vlZ2gyE7O7>c;7zBi(3SIEvx{`sqZpHC3O^(iBcaaV*#d-@H_5o#qreNcr%y z<*NPaTTvaeB#*46Y8FtsPZkgQ(>q6l$lh&2dQCtUqk>?m3_Oc~0kdx%Dexp%XG}+7 z~Jh0>~CdB|tmNEuEd-~P1KJY=t zR|vl2!`t~?B->z6#>UX688S=m{DuVw(^zE-_h4S_SB7*hmwE>3v5Kt?pMoj|z(;;( z%sf2nQ#TE-NwB)##blK~Lg@npbs;c+ksp#rdp+JI!Pb|-U^G!4mhV|;*G<+<9&QT; z$n;Jz8NEr&l)5EE8mDAa>)a*YgQ81#;1#;S!b)>7I}ynmSqw(y-z}iT2~a+hA-Ve@ zxx84+kd(oN1w?KH=wH_@GHkk(thV4b1XXqe)}@S4~TntxloyAoz=Ur*j|y2=F&2qauf| zCL8_-ad%h=f3ZdQSAGcpnYMl=q7&e9$NU$9fU9a|NG70ZT+GxdF+M(h~4BdKRHWp!;AnQWk4J6nfXN>+ZM8D-5K(D)*VF` zXmM!CY+uo-hf<_T1Kr<>XKJS&z}F!ir0R#t0M>_*_T%`L>w`9?7*$kQ30P;Yq0oU) zhLoTbnF&LXxt3lo)XC3G$AH>j3b%9kl&mgj0~XKsJm~h#jY38-)VGnW6-&!CTf?u< zcyG~q$!M@W_O-=@LLr+c#8d`kh-{Fj`zWwyT3XfI zuIx;Rs;R?BlqXNahQ3}QE#kyA8o~GmwvszslpxBgbv$DTneY{0P1Rd5PgKC|-scks+Dt9I#gFID4hyX|D8FSR6gB z)X1?AexQN04QKBIunms<4mT7E$M{pmcs2H zC@wyJc|NdrlhDZJg8)Mo8Xj%=w{lNWIZ-hIz+Mn{ajIjC8>R%HH65uKXKODZ!HQXs zfkevb&Uh^P#^)XwoqN31w3bpV3#jlmE9IhUIwn(ZB*;8~> z$Z+~P*M@|8Z~vIUb#UPsea;bsvI^(qBvIW z%yS14@M-{XB3eCE`T8;*_%>9zAC2F<#s@$}h4iBV|0+ViGN=={8G{5Y=dnidPL@$P zR=hCvB92|Seca*Xo%%}k%zIGP1KTF5czqHP>en&RF8}fxgtEo03;p!24`)hH)m&HR zb5I)7Y|E-i>Hh#W zLP6-v!dg4IuPCW&NM0KS(a0$3ZNiHKaIrz(kXy_{D{q;0Ia{k4o#jX&a;EHV^5pFK zfVF!LZ*DAxreMHXPh zjv~rBFF)R{OaE--ozMncdW67JAF#6#p&64-i&dR=-g?d05=U@TsRhU-~?nH zv3sN68_Oo>02xqXDLSl@1J2A@0;yK0$YJO~vo&oden%@-E=_msb+Dyz5@w0ef-s2e z%Z24De2$^mBNW8DIG$L#&8A70@j*P4E8&y<7# z_disEPoQxb%a>&KFQ@WnrKUtkc}~mp{IY}2+-<^K<0Ay5>Ex#E1QJAv_^p`6IB=2l zEDmP6%`jds_R>G-prWMT#8YGFHS&;1tDAjc4@Gv#Q2UAua5sLK!)TCf(4D$K5XZvp zKG3J5I9gl?XlZLL7RhqPgOQB-BU5FD{l+(+6HWL)WdBEW2<2%n4tAz6ht<_J1MBbbMszwXTWbpH-1=Zu-610*gr*2M0dKMK;Argh-^vk zVHV6@lvOctF-krF^CUQo{`f6SD&wX|{VTLc`NDUrR@i>JN1t@14J>rJRlGxFh)Cq6 zgImU|=SLd(wRN+AU|n5s979P(=pSd?_vfH(v_%at&RP|vH_0@PV{z0mrDGTz9kM6W zmF?2_Ts(VrP}{z`a_```>e!9wMb0qo?Vo(Egz;e{-mdnibo@LNw4qAm4kAJ~SbJc% zJ!0a1B1y|knJuw+AV_B39XC<}uIwqc^#3skE(NWmRx18)zn|nP7hznuZo><>@%*Fg zl_CxxN`1WSixj;*wykWKPzQ=D5mY~`H`PmZNnn!y=n^hl9?EUGoB7e#snvRo0m1^B znbZ@gx5(CooScgExnL|@p7$=q@|d9y{#{Aj{31zefEK>MytCB(yF>qPl=Xja?1g1U zY$b4|2#+l|B$9W^#E+~~^#M8`@zo;B9Cg|{?Kr8Qxjo9(tobeu`n0JBRaJU>^i~-Z zDv?Bn#B%`C$6y}8f&MgZQJ;@S5UeyTU%SmnDJ78RfAKXME16jO(9B0iF`z;xW~J@4 z=0bQq6~nlP?aQaj!J~{+GN8TUSZjoxlAq(qg0A(DYd|lB4mF&q=gev1p|Vn;bkw+n zBo}o&JUso`BInIed5)AZDY{0U&K_nssQEF*%!F_{riEyS)6_J(CWThfmmX|ZbDk5$y4Vp8hT03)E z()mr`fjIL<)^TYQ6PnVt-^vW*ExFXqV+Cn@peeP=2jNPstjCxqH)vg-{NhSADFYDon;D-Y?cP$8w$QKR0SF7|?iFj+yeF1D2+-zuwlHf34z6fX z8kK{j5aZqakM?l?HJybjWcZT0Ol%==Ma6^K9?&oDAwlb3MEI5zq~Z`{TqZxX9;M<7 z7p6_?zXTX2KOamcOK#&Y59flsH!ZZNk21ddC;cfamS;{vekPPxwfF<^H($w##co%0N1P zx#wQIzk8Gu_m385uD`hA+;8HUxnqCbySO7(q01!96usfhPKINLI|Y^w30rx%paI*| zWOTE?@=yLk%eRRF*qclUE!sbWWSRSO35soRhi(r!-7^lKYiV27D!B9~ivgQ?!0bc4 z?nu4prF9hBIbrkZ!Oh$~ufGX+J@POU(^JG(~%NDr$ucdxDeAJfgsa{Ta*He88{l3gh&%v#|084PI%5RMtOo^F>V*` z-LJUo!2QObi7k}``|c<+Cc&k-+XrB?uaBbj*+EyI&x2;hwJ#h}XBB3;6;_&z z1-~6SIQ6Jw78O==)mD#f$}z0dOq7Z!2=Pb+W_g!CNnSNQeOKJ#7m9f3BYAY`=6e=S z=i6KMs~rVi_;1LE;m#KrM|g46HQv@Zhvu}0zsf=J+0${+Coxi6l(tZ9tDW@pj^F6Y zFAw;rh%w+U>Mw;adATP!saM~t=AArE(M1DGC%Ux3uB2r@+xIMEc|(Uy+Wl=_57>3x zdZ|7N+<;g_k=){6E3ox!$=>uDl9Q(8X4(%fj^hJ63*8`DwPD5E+NnxX)yG)bZ9!tZb& zDt<$7VZf*!VAHbtK8x_@JLSe9xzqy&-|PFl{pwqwM$eZcvmy@H$h;X%;j<3S%RN7+ z+t%{4j^lSXsDv6T6X~X8Qp#{XjZ3plmE2P{F7E8hex%-Bumb5c0)6-aymnXK+Wi^0 z+^y+=NdJn*u&>cgDQMog(l%u@S47ufT$=>Yfx0NJCCA>v4&x-1t3oV>JZ6&8h46R3 zpvZJ2@%12He2lg++cJt`K8X8ZgCL!Z$I1Yg^fRdogl2Kjx=VNs_rem8pPns4h_f6^ z`)LW8tAecj-+E(C!Ac$9Iv}?4!d=(ghnh$;{JYQm6$#SxgTk&Um21y~sN>uetD2n# zf@C<<2KOoJcAJQNDy|nF@Bqpz@Sa!gzit@`Z}kD@nC?QY-NVJ|T4+$oR|NQmUh}S% z>mweI@u1VPmYV2n1ei5QS2;Z371k?jH*>8pt{P?%B*nl2>Ye?%%t+yTJf6NHOyWHx z4}h&ru#%$p&e$qGzq@+xq-lT)0S;aG)p}Z;-%YXnDL@ok>ngP3BhQeCjsLqk)vTa6 zkvy}W(&^K1BSodP9bWLnNBvjTGyUE44$SLK#_!#fE^vuMUVj0D+3Ih&Z*lx4TqT`IJR48)1F6A)wupgtC89ccU?cAT%q zliSd7#wYJ@DRAV22YBGwpRV)y4 z=kQSh8cT`K=3CL+T%Ik9J&81FiqjZ<{s?itItYYF*uPB1PWIc=PB?0R2w_>;Lrk_EtBR(#aR&i~Ok#=xZY< zZfy9tJ>mJ?DKTePebTDAe)c*d0YK-Ks8$vW`uP^GQJ-n#DgMlYDt8@k5$P4B?Zg)8 zW$3p3ey~1&s9i)Ty7hNCA_2HJWSg+)AQLfQabR{P6Wei&;SxNFJsPC^4vTtdRvhJ% z>hyqg4sf{d8WU7)3)IXh0Dtzprs7@Kl78Mhx<-vW!_Q~MXXu2-)BZIaSX{s{v7A+KfY#LTy2 zamDmw;&-!#r}v)@ObMN^4MGac96cWDKbQ*5`TOG>NRVyO4h-q@!ESWnRHX3xmlkRB zsP=_;k83U-Z{j|7-22NQq{Ph8HXttEr}oVMW0{Hi=}5Q?Xe0a%)Uf14TV{YPzHTV; zY^Pf6Y`9T{&$~Zq?pw~EyU61~NXg63>TOMr!d!TkjO2dtE4+(M)TL}`nVsc+dOUc) zx_OJ|6%gV+dT`i%Z0>hh#N}+veh%nE){0L=zkHcEBQjvsL-)dWx{DCtVQ5n^G$r-G z!dUSvTQb%!NBbPuoXBDdncEvpB(Cd!pJn<|c}Qf?JqI2|n;t$p`@^$jd=5NHH0_s^ zJb@fdyb6|!*dJ@f?1_I^Esux+LO6p`I-IE`k8x_1vMq+LQwq|D;Nyv$u*{{Fgu}k; zU)@w(z58)WON*gKaILTBK#&CkUhEuLjU4#9bRzobFH7sP-_hW;oOewp#=rxiPBW*) z8Su8yIe^Yr6)|!`;{LvmD8y=XerTC{QFt~WRC+O++L0mTWH<5bSY~|Jshg=orB}8) z!tE4Uc-GIh7KQ;=sfsyCf7kqzvs=V-`G&ln?u6Qseeo~fV-B<8>&8t)Xu(m_hj-q8 zcy@~#;&Rx?KnIW$&*vPzi3^2i{T5R=Mbjfgd&28;U{2`7J+?D3@h~~uY9K*D`ZwmR z-_!t@RTXhQ!G>FoET;B5UjI}>nf3mad&HY(L`MYJ=_o6^n*BsLVNoI?fl?*LH9^*N z=WceUM;3jHb0vUbV2VEnDolH<1B(M?<*c6kOrE5Jp5Wh5rnB?1KsH1@4Mr9pJ*EP! z592Ny)<|j*;~7OA*=iEewy9(le1l|pyXKL47xq=!^5!%?>quys4Mbq9Hb}6B7CH0Utpy=FZFbTKten0L@2`|*VoK*;K#;S;L*}_>ha3UJfiJra-v7a zsGDc2dmKDTUuY(C?Z46Xo>5Ij-M;rq0t6%7fPgdsF@Pv2C@l~~ssf=y07Z)Q-a#M~ z5$RPB5kd*Q3kZS;N>fBaM~d_k5T%1O-{JGT&pl_{^WO8Gaqqbw)>vzgy}s?S*PeUM z|NQ-Ts(^O(XZ)=)Jm4_ML^q9iRk1SX(5r*`S3-J4*bN~oafr~s00R40L+T`rN8l9x zZtlFRm6yMnJ-`L4KJ#u%YDN?*54F;HTrv%g?-`E7^SWoiSsmpqaMMAM%c(@mj^e zBUHopeQk@tLH&h>_5`x``e|sHShc(2WW&mtP6jTuWqhODlQ~7^xR+F6`Gh!D632LE14sem7KI8>{haG>ThdF zJv(!y3&18bel*(^CpJ)>I6T`}FI|;>ZF*B(*%jUQ`_uw2Jxy)<$-y}vb)}UF)2UVN zedu}7t;2@Qa>S?KrC>5r9OH)Jy!@24EW}+@f$DV&ugR|}Zy3LMd>{8n;XuCFmogbf z+~ID<_pzG91O@Vn67YSVczxV{unYZBk)l6IkA63f{xkY1|0(C&kx5n6Pn-^X?KgGD z9=KpAs#H1EOvAzw6a2#_eLgXhOjZqWnQnLOSyi!Ysoht&8zlFCO;-ROETvlc$51iT zpYQVWH{bMx4KWTGIxQ@Cmb@{@31KDBvkrNVs$6U{fM0ydvBz^bbSPKuSD?x=H|%18 z!02>P&%^k=V96n&YEo$G9kila97X}-v2J>@{IvB_-i5&G1Y0QWwRU#Lq;q~=A{kbA znkx(RI!J~aF02#B1sH5|;o&lDZUc*BhN|MMW-#+8TIs-=U zt%PM-4ckP!eU(Rmw%URDyWy#ZmV(_vs`5lnMjKm-rSNdNVIct&6rDA+qh+5WA}a!T z5eW#4U@I0fl0t)}610UC_g=O8>)kK}(|{v$@m#cWc~n{SNKmW&FT-{vfJ~{y{^@#umEHoIXCBzQTWbMZPmP(0?lEhhtDa0*vKWakmSP zGsw>vpQfHWh&{TZxO(Qa7BZl1nwiCyR+$lr#-G;Vw3zN@UZ|q4rv%=$hE%7#34cJ( z(9;#wQ~k4RU)+wqrSC0dfE}UO{8<0)yj4u4jFWY|Qo@i^iF(kFdqE8ZdL@S@{i9LF z;AzZ|igwNYH)ju^!Kr@ap{wb$mVB#2gC71<%$R+C5}d$!zdg7|@j$TP<{OK~#Xb`K zW(CEk$6X~MI|3O7n{PiW2T}qbm$|bFud2I)8n{Ptf|**SF~{Sc ziGD4k;ybG0a&&?GyM^<`ac<2phPu6L)qbT4?3@UG=h><3uFD!1t+x?q zc=vz!@dVyb)!EriIMpYemDnjft3bwZ^oMS2FW*{J+cT-yej~3=KJAvN#A(&g1WqEr zQc#!McOR)kooL~>ZB^f0=E1<^lMKota!3YPQVM^!=y5O*E2p_7zicL2#}yi16B7g3 zA<#M6bq&A2p~-HaMK?d4Y{vafg(zu46NiFjvfEod^w;go2$M(c&%I@I`XTsXdI$@b z6W{$AwpkcWIls6}Hkq6BW<%yqk7218svi8L|D1INoH7V|VgQk4#+yLHT@`Z78($S; zV_W{~b)~F_%C{~eFps`?GCh!a<^8wi@i&wWf52M*o~yFkI)*jag6*jGy~Q73WiXw9 z+Jd`bSaZM7MF}cpmxP$eVTcR}(8==nq+gRIjFZxl8eV|fQXvAXvkH?4?MG-zhe)`a zCPR!TfhNQjZcj;IovUl-X}uR%pS3<+=eFjaDt{n6ro9+|rLy_fRbYE0+4kGtAUnBF{ef@` z3U=+sTJ~GPpszBOWL)Sqd)Y)XhRtHkk|^`z_?0n#T&QP-F#eQT|=Jya8BHx~_wo!`E)00E}yAb07iXiUbf%Bwn`&lC%-= zI$vJmK_idKPX}4|<#9ZfBM?5{VVFxRpxZ>bK{zekVJ>w)@*v+2*u198c&CbL;i3h+ zcqaJT2wv3lh3rJ}rOUs>q)vpZ2P0XRc?>BDpTbQu7lI_l>|V#v`IF$w9Q9pB0v(H7Y?*-M26v2NFDq$X2^n5;W|t5|21o z{qGbNspIU#!MS^uhgj93%PFWOJkuPOkhxRgaDOP=p&DZ2&aCgpp9Nqe#8EH(H!+zD zS%4!c0O9=oh9$9IdTA1iM{S2A>7+q&MvCa9Wx(~C(`V0|LVAC{yFOQIgy{MzU^{KnDPwFn&Z<$wuytKp2uXkT1gIQ))zaJfBTt zH_stsoN8dL+^vJ3e}LBIk6ElPGVMNi7;l176a%$og7Ov}h7Yg6lN7Z!LyORmxraBC z)^OKj%QxDCI|5ZUNe*+GOaQkBkyqB;u+GUhCkyRiD#E41x_LT7DjRG0|_6mX>kf@GubSBK~O#V?dAMWrcCAhPE? zKE(GW|DbhvgWI|mmGOSBpouHd`P-WssbqMVAUDbFAOkFUs&c7Z|7^VAZk)cQc9}oh zUBmlO>AjGc(YOQw+iYl=KQRwSLMjVB;w8&_tUkmErN$V+qK2ON2Vg0>C6R}=9J)oI zpt`kC?_51(kAN`TdZO6t`dz5y%mv!9UuJTz-I-aJL+%^SqZMT$=HoPg8<)V_fYKZa ztLGkZ!qpq~DbGi$i`aN*lBDEzzxd+XDtB3$5|~O{8#w~9w}0J#S%6ztV(mmhhf^eB zQ9~i3aAxLOqb}wk>bGtfCKGE_iT8z{`6D~K_&s~AI?i&1mVKz{Y)j*b^T$%b<2-M; zMi`~|MGsE;8{W!Y$$pr)$hV(l=`HO>3aVT2X>nY8c3q`F%s2@*vqPY%dm5L@kq|as zJATExC`;ZRbUq*AIIc6edkL-NB5OI2{2{_Ei?uuUOvqjvDcT7Crb{t=yX+ zih?>_AHJ`zZ<^$W7p@;%ANbCI1nurhz9UcP$2_N*>RJlf%;Yf4&U#E1k28~Gidh$E zVtnB7)>TQu(Y`-ApKOLSWR91thm!R1P zHkl_v#Y{b`@OMDYAzM*Dx_cRM9j&4Hd{)yWStlG;2X2mu+d`z|>a49Nz7u5iuJ_b( z*}|~*MNMHL+Am}F%haxc%Na%$A30zdVDelxPWy)cFzW90WvYA{C4k$GFQ?L7)A!N& zDOU?I|NOl+LUB!hUpoV&cL&;?&Bn!xr+}^HkrxeFJ02KQ5=>1XL!mhIQNHS3t`rD1 zN8&=KgDH+d?qPhnVM91dl0Z|h?vl2y+d}g+lP=t!`}F;9@@I2)5Pk`TOS2WXz_U`K zkjH<$-ffW$#Ez>dh?tsYE3pH3zQ_}w>`%nd!;yqR2$2fUkKC1D5MLym`40uX6n30C z5Uib70^)<(Nd^m- zG&tB8NZf&Dn7@_xw~=d@dwZ>hUbAH=FvUjl5DS;SLbSN0c2QneU3^1RbADH42{CGVicFl?dyfq=*o zB_D2(o!X_YeZCGniq_vj=1v8Q;pFtW9>AhNAIsW6CeH({ua&F^WVKo>r5Iwf^-w1g z!vQg<4^fBCkSHIZEQwUy&h|@`;vpF3$0b@E zwutH4WIjsf#q)mKA#R;0sa}Y}DuFwEdxg{o#Sl)r)_5XNTHGE8IbWxV*e#^tUb&m5cG}vd#Lj%{#=i80O|`&8-ei7JMxPo~H6#D6qCEun5}HM!x%cyl_H!9E91_ z3A7p9?61f3jG?}Dsb@P~ZNo6{(W{%~4HS-}CNK;?_J{}}Z1cbq0(E`7x~r+)OS{`7 zn7-Yt-R(g<0U)p_BmoO3QApjQztTZy9r**I=ekq!Wun~!k1nE>R%SBhoY`@=dgh7n z@^s|e@hJx%M!v;6onn2g_vNq3e4#X@}el4>DyZsYd-o~rLdIL zI2fH+s9WYd#r{`7A$@5D(TEnV7<7T0-9~JQ@agFwBl_meB2r5PTc_eX@o4GJHA%3{ z++-)o<6%mb8pImsVP=r+mLSy&JomneN|jc#ch@H4Ju(JDYAAuJGFhj%WHW168cTs6 ze5!7~l!=1u{3Y7Z)z<#|CdI#vivRoLuePe7`k1U%WSxML-Nw*nVF=qs>_3Y+%dUKB z*nBxpAhq!M^V^SmUZ%kU+Y3vp z_g3H!^ZBj?Ps2O#?;>if966w8;oCVbARsp%Z*=ZCc>Ds(~C_ySIQcBY(lQ!-H}{i zwcXr@?}OY0-y8bF66D7=^Jf-XMw}Z0v=0FmdyA8pL542|1dM-r2^D%z= zd|!8HVY}i{Vl-2G^3bkqW+u%c09+p*QtJU4L}5No=yu6@R^~dWIUNeBnoKlSDp0O_ zNC~7UaZjW;^t1(3%P*)_Z!@+M&Jg15k1|qr2mymeaUOq5barJGPjj>a5+3ncA+!w9 z@>lET--`})#(PPU_L^6$YN2OVhadm?Zk zv%I4cE*m5OI^kRDZ(2DF)vQ^-9A3mkrIt=;?l0J}uufBw0RJn;7(v^|{s_S??3KDF zP(EB8Tvz5N!EenukcvL~l>1$aEKK^jqQHIWtEh1OruFQ{BH66rK3^ZrBc=Ygi5`8Q zwOnvuMOGxASXX9$p0F^VW>Zu*O?r7j`*Hs%mdE4SNua&B+Bxb=lu1? ze?{a^6?`5vfh9XGq{ua(^-d&rsoudqd>5-3e(!G7;STR}xeANdkrCbJjzhu9i3Q55 zt8COfhq^2O;tD`-nZ`tg3~d{b<8q$912&q=tiQ&KRg>N~p`ETBXiild72 zOy}?{s4W#{q7x!Ff-h^Bwic6^*kQ&ghM`GRq~UrOtKAqG6Tz*xhU0&fm#80Nz=nkM zeE+brm=;D_&f$t6L?}5fB!+aO-yeSe1G0-J-_;9g&L;S?cQn^qJCPGqq>vDvE_Lj6 zq1x+<_#jpMDYkbyOMa!PhOmNvnO0{vtR^0>uz z>!jp+n{t0#3PiU@JXa2FKQe89a}&edZZi-s%t>iH(R;xb`X+V#?xKEdZIdmuA$~mN zvJ|u2cROzq#RYWHw{=~odEx~>0yRR{*v$Ze7dn%P;?DrF?+!YYjcmY(H?eda7i#^2 zfvzcz(&J5*c$I;m^ML95e3Z#95;DdH_b&Kd+9&amo58^&bmZ{T*FjPfW#5{{QE-&i z(OXk{8RyJk1q>(YMesY-ed@gD&<3Z|YsvAvU**ffvlmsJWKFKZ%#1tbzs1Jy66pGW z&foVz72Q9*m|zs-)g23Ke;s(D7xM?W({Bo7wa|?$`~k)#(;Rz7t*0rFK{+DBAMiZ- z_mER*t91AKR}TyEE*z(O+d7XATjYuA*>rmIZp{_}b#2@uc=4~*&Qy z_~H_Wjq&M&-1MWDNx|jn*|b0WrtI_ofI30>5&R|TlZ==b^IVHhgbt#*PJ{UVfR-m` zHkLIwUdp(%C+oyN^|xKX8PgZZ&tec6yV3Lq2l4QeoO>_ZasD=5Lwu_b-~0pMC&$chv(5~r zof=Qj=VJ!{fLX-g3C|z!o)<6m>)`HANc_%${I8imfZcU7C_Xc=h5qP3zVprdSwvNr zs()}Fqq^+*Ld#@^LyUYUUTkJlIrZZ2YY+K1LwMvzDwWD`^1{;DImq9~@IqBOi#nGw zj6PcshY^$d1TJhfKkN_zhNDi;ck=6I``4r){NVBB?pp^`M($2ot5-a?oK?A>2NMmQ z;O*WvV)lj@x=>q1`Y#|D2i6Dl(OtL~oLc@fd5xPIjlZ9~>gL4TemeFmP4JC4 z?t=Y2?I;lM^zY}mS_s#;sa|>>62dhurel%(4%|RCApgFL@kopOzeFEMuYk}!?JzQi zrh~O`er&KlTOGuRTu@SFeuo+hEP|qIotOnauBr3wibGgX9rqXmSH@}~bf^wZq`!7u z@LLp=MkhoUj~29r(l-7G7J}Z|xA#Xu8DhzY1L1PRB1q8tbO?Knle~k4-HykZ<^F>e zBl@rAeoC3@B!}y>(j#@GPZGDi)-Y_%W%%L_#W@k)K9l~R;%j5!_4|zJ3-_N=ScZ+o z5e}o?l6y6*W7eIY62arC{9~F;iTK#{hwKT>8z225Y$lmzkavE}>s)tJ2!{U;sF#*J++I;~eV%c@cy?XY?k(YVyK|JD zl<|4V?w{y3@*xQx_)tL41Go1pLHO0+gT)7h>QlAOl)$#LeXi`XgbrUOdu;?>06Ak9 znuUUVBuZyU>lOh{J3GOD_UinvK~?|8%=ypu6eLI8ALUi{{TBpiReWU2FLNvDLVO>xZ|DU6BJbBoJz(|uVD$#iwd+Zj??Kj zTrFX5bXP>1gXgAh2kOgm&n%d{^Iu@t3ht2+|M}Ce4a9$ORRiM((Q~nCF1Z_pPb|-~ zug}ar`(SdBqls&b!^Qf54@!%;gQ;OBmXk6nz4z~;!pCcjGJbz)rz>!ZT=$-xA?{Co3YKM zc#U6S3HW7F5;bSHOV@NX`-6|P6x8iL8M|}b)#KIO+Jn8x9N}=nOf>}!Q2ia&CU<`H zvGtsktmVAma&vP-f@<#LB=i|h00Srh;4lEr1aTbrv~vk=nsvp=nu({KA9XgpQgZ!9 zt7I1|092xqd)#+yGyIj9@C0*z{Xn={)OQN~n5%#Tv9g|n08sqp`WO^IG_h}L-)?}G z^O9hR_P%KX>CqW)D6A4YfQA!`>RcrOn7iGJ5G{>cF275{LdE79T_Q7<_mrbPor8F| z)3_bR>`L@c^)WYJ*Ak|Th45#6Xf}K>WWCAKyzi9#I!6$?2OC|rh0?P0Kco40MN>^S zNy8hbQF&XL@)4OOef;KW>Zo1)7_bzF_Uc?`@-rBUPl8r9Ajl2P>l}J%7;aH z0py4zGJh^7b%P#_f}U->UA)w&;lF;nYHFZv*QC72)ggTJ8coe_%&sg6E?)v~dP{xX zhXZ1EHQplePSkk-(W@<$zwVuy#wW=!nJQCLa`nGUKy{~iP{JTF; zFs|RxGUq<^+I+TOoUndYaznID970jvR#y6rZK5Y;%Rfg!!UyH9ejibv|Zeu;kK z%K#DM6TmHb&5&t2E}Mvpf{e133ew3~;BTCMrC!kG8e;G*59asR<+|F8rQ#SV4ZXR$ zTSjYnTPkZrvTavMa;iRMQaWo1MpJ6)60*&g`a4Hyz+NTBfF>s;l)780 zn-|ZmbVFdl*7G>53pZ)iUGlmkaR4v*>VEfiQQ?v1Umen_UY2jN9L9dFhY4PANF4P% zX^X^x&0v}}pBAdk+p7t}pKJsfzfXjn*2wO{3TBfO4r69A4t-QxYKO{1e*LgfTd&|_ zQsUh)S627~*1VXv_oH_3ik$BPOZwWh*ltDC1s^C&_^Fe9+=KH}m!tjERcZdWi3Wx zVI=)@Lw-H6IQ!jPn`9D}GCf5o-ainDg{Ugq*%GLy^ixV{!p26d*NZW#i&~0gT>GPp z&!P$-tP=%GdRMoqLgA6vRX$)n)j}@)0oPzVW-TY2iuw;F9ej# z-NJOjGWt}kTx;CoVCP21ve!c5WI5y=YsA*t#;h_+y4CmMY86uV8_s z0j>tFOlb%tWPoJxnc)XsD1Xop+g%D4V8-OjX!`~F#3=Cm|D*Grf-o?Eg=mQX&|wFP z8sb}mv_L%SwqUz<6o@Go5V|cWhM^HwtN;6jrrsNH`fFAWmDT>oHI)-_LaRdn1!=PV zH&P!Ge5f59Ar>TJ7~X>&<{sa-r>kO|ukgAaGR!*uC{DHAPXB)hIu&~H4*URwE zgu=NrBpB!-o$6U-b-s!c!_ZuMCm7_iWjB_G1brFFOK3M8ix@0SG|={=|6j~5{2=vS)>3HUNPY(^62dhg(;v3>&#eLMx2b>WnEwr9GH$)eDa_R2z*6W?XFs!4 z{sa6JPQ7%TWVF(xo*1Hs=Kp|l!!yuaw0U=f7tbvUZmf#`qm)sW zH0Z$Wi=hR+TUZs#wcWk)73~CP3&5#i^OdL0Rlctd*j?t$f)Had0FjJ@ zu%L^*Gm?=Oc)syK)c8N6FFWE`z)%X7A|P<(n~pYyh8n#xF1Uk*-TX)X?UfP`N9`aR zxQ1%6P>Yzq+@la>L0iJVM?C!ht*M(Jh_R$*-oobMS_HT18scAGpj6|TPqs{hQfDxjn#|K%vfgBzN*HYs}$eV zE-owws{ibEpr(~h@FI8-DF3sd8*Vju@!mZ4aM7DJ>(1W{Hl4ISG2a6Rpy@5 z?%!ukl2o4IVCi}o3SU(M*aMB6G8U$Tq=Of`8hS7IQyYa|%)$vj1J!n*wLwC@gBly~ zP?uw^;#Z%Xn;u4bWm$gUIm{}oqSz~vJySl>ThL~qY8V2=`^p4x1j=I_Zp{4*%k}NK z`)0t)Fhb(6DA*wnA4~N!?)CL3?jY#I{ApoG!UwL>IPYGB^;lQGz{gq@v zd+H;80=&JU!zk9Sx*YfHx-Fz%K*QFgqn3&yCFNwg~H}n`~PQPXvt~q+kh9fCh-6ztE_RE-a zGveLsOBSP#-3^Zx!p8BpYMZ=_h9EJB$=CH)Fi^r^c^^PbV5?L@V&;=E2xx0MN2a@d zevNpHiv6X;d`Isb3=~hv%8J}n74!&M!_cvE1`LrdT4tJi7ql_DpQS?!eY1}AzKn$M z2(vFXlo)!jT+T!|ZolTzw9g!H^&?OhCV#K_^C0Y-XRp~A) zE@xsXvSBS3KlyGR+-<)_G0oGF+LPssq;KdtnxUh2MJsDn$K!sVZ^xNdX})glL-tGh zF5Fh+gC!_%gi=#5-rwGM&_$l>6{|f_OF}z;f@d|;qp3iuN@FXJC%-o@9?j@)K6GA` zzBw-{lg@4iN-ZBrpm}P_uE#Ol6DhWRjb{jzE=z(Ie!lLHXmoO81x%s=LkU8xm{$H6 z_KsmkXORVmQlRDYRFVd*>9b;+FnMo|3gb5kQ#eu2@gFecp>&ZFLCpG@uWsAmo4;g zl4iH`c^aSVvcyM+`#fP9F+DP=ShrUG)7xdfHtpVr`FGLHPxAQjsyrKRBoaIqMvB|1 z)74DZpkC(JfBWxT+N1u*T9EcH5mx&zR#;6lzXJ#e$|C~*BJ`sIZ{p7((+jmRw8Rb( zRsz*P;@z;glm>AyiB*z8IuWQ6RqYP;^PGTal;U8yT8LV_J*ed2_bfv{8csihwNU-K zD7V`$$`x8NNf2^HL0jUzYdQ&;Ori=u?2l+G=oL&C9G&W*PoE?w?lSjdJ{X0ps!-tt z6gy;ib0|V$+}7_l)73(*DzS0Zv23m>AA&T#k(hW~wA=o15sgQyIOM9*g(u1|t}z1D z9^uR_#J$0rx5`n9lNrE!6{h33FYd@yfIsggu&NO@y-h?=f(u1czmz}Uq}d_Be2_0s z$f{f)*AxV&Qi8<6)Rf@afwV|3uVXR|DSn$VhbgmW`4*sugfp3fQYkV*EAP=4 z_X3lx(NgZOxk+=Zhn!s#h0Dge_df|Un|%#@i%?x(N?9`C@kfA+rOhQ55vutWY5H>G z!S!}~qphx_K->B^dN2fh)}TKS1zFQvR~5AV50r|(yvYBP;h61R{8?z;Qv!E?2coHf zMdK3m?No5!Nj6-3v5~?&OU1rY9*pQO_CLKsuMXaqJ&1H9Iwq)&%X6RBJAAqGJ*ZUt z1qG~@yYRO}aC-}Xlv>ayj_}`@<`*2WkoX>f#&x>D9~_y_rQ~%noO>zlLMOtxHBxO~ z9i9(ZQL4NrdXDfru@Pu}>7nI!>@(pZWP>?b1bAhSwZBwM31mHq1%pM9A-YY50yt)~P*KDtob|RC}jPc!KMFtm9*)%?tLo zH1dq3L@%~~EsT&0I~)m$wZLeZl9vZ4yyWk}|fQAhn zn2#bo!>r$X23SiG(pYGmpodzf&J7DZ6>n)D57ynzIsv#l2%WB=r0l^{-6llgQd`CO zb{qkc<_-G%Nt;wf)y0s;-CoxL*|)@vP;|$c-`(pNmRbij3E?)GWeY9{rvqu{B`>oc zy?x~9k6jXRQNINJBRyB!Hr0^^da{mqX+R6_9_TUQ+F{11oKtof5P zB&L&lZ~wwjRN@_Op8in28K<@)ba&#(9saC9p(nK>vYpB+T1bGy460fs7w?w8^!0aB zDuZBJJB5{58#u7AhfnLp43cE&QVvKodO2mojypXgxEUKK>YCEcVhW*J1{su8zl-!~Be2i-{P}poFPb_AKK%@McCTJxW zEpo|~O~G`Fdd-BFrwiyeIXp}Z!JMdUb*l0e?Uu7g>C@0D0VNmd&v|foL!op8JZ8jcK#d~H(QhA?Q|g^|_j*`jwmK*e zaAxHaela4xF%x5GzskxbeDjbbDvO0jALJ>~us&JN8eZBCw(||fy&0)}LHlko|K+^- zb$ScxpVZxa4FW9@BRizon%w5;4jk9amviu}A;{W$I@t%7^VjIQiYJ_+W~t+TPD_b) z!}%t;2>VRz#_pb<&@2_w2(mI93lxlakG$q^z z3Hdr@VwGS>;i_cabN0hR(dR7n!xJ>E*FM9Qy#6LeV;`30RO>bZP5Sbz+Ja}FX3(pW z$$P9&I=lEspF2`qm8sFxJB132I=*~knISs_T4_7NfCP|;y}d-V#HxMA3xAzt|MWfu z?}jtvpBYg)qPYDf7y%Y#71+NJi3{FTRkAk%xzdX3T5gw>C-&)1A0O%WA?>R_a9^Q9 zuXQ)8%^CB)kGtzMAT4=Oze*LJgAVBcfnKxGGn>Uz2`Ul;yOq}t9Eypj$xa^Um@4q0 z$~U@lD(}`Ms4++_xY|PP|1-g;It~RXc>cFepdE5o2?$WK{?8@|>VNfBe*=vVH?$>Z zhB{wjSTo+`spiZdt+=C4ip6`5IrG=u+H`SS?W|ms*5Api>+jslq(#>-?A4RXtG8V3 zj%H7{MrBzJx#SKw+qzcl3YLB~YaC+XN=u3-yTt1sq~D%0_lXR*uAK|I9p>Tb7HJfu z2WhbhJNow5Yc7{F{ecw=GNEsgzr*cbwgIkf+H|DtI8*c&0wG2$||h_-h5 z5dUKLCD>zNKd8XA}C*pAo*g~$jg(wEQsY!>FohgDrAt}ZoTQrI4HW7 zxnoQ}W7oN=BR|}Dn9)$bwj!iJUqzt#=;oFj$$HA0(Ch7gTV+mI?*rUkmLP+r(p>x4 zj|>ubY<4E9ET1x$FVbt;-BBFCUstN@2_(D9%;+VO$(i*=N0}qpsq325a2OI|Anb(| z1*KbXX8S%sH6u%qHsX{znS{`HxELwuD`fy-)orSZVN37EmfBuE~Ye0 z@FLJ0CAL*~n11c-@Z1+}D-$tb`mBtCeK-}cPquUIb7L=HxoLNngNfiSkL%cQi7UH2 z&StFEg=%X(u0Aep+57{-b4Cchg|Sfy3T-?I{xNY~1I_;Pv&iS8kTT~>A=pdH8MOs&YhYu_Z!8mq0aU|3J#RCwvSVoLqc)iayKy)UMhO z7D1FyYfAsdT>syfGU@-SSTA#2Y;Mkw6q&ufrMf_gp;F@~Q6#-px^P#xgcthd3kJ}s z@$WHjy0nxs&;J96i8@mDyfTd?hexU{TGZ<9Y{G1%#} zrRR0Opmz_{a&5MvZ$G5F+4}xK3_Bg^Q%k80Hl_nj##Rj{< z?@Yxr#tYo%w@Y68=2Ev!3E|Niz+dltlxwq)3`FJ8ILaEy*n5e};z4wpy$N5Y3PUWfKiquYVKVQs4 zBxGIP1PPcx>xp1^<{nWXS#s4D^p(3lV3ai&IjVKKdT+9!eXCLqi+RIM=>VJT}?LQ$4)5+aEp4B zTxc%X;kkE{0O>@5n!1UYtHLFL95 z%Q$H)#Lk5?lTUIgF0kb6GxpnmgDfr2#h11c3>ZpqClcvd$b_`YFyuj~=GduTk?cbP z-sael*3zom)fGk%O?{&j4w^%~>)mRyB-mm?Vn}Pr&!M=nqRTJz)%a!;&<)jDo30RULW^Y4>Dln})1&#GdI zg(|Sf=r@oMMuQ<8_x^(9rC-J9Sp1Lftu+ntZS86T)h&s0*&ni&ay>9K_RosH*xz)v zg|KHJle^TlpUdh;^8Qs>F)VW!q&6#1sV>*?GlqQPR?qs6_*6R%-68_wjaUQ)V_TVB z|9bv)mBEJHijYnv?WS;1SuD)4;<*y{&A`>3qK8IIWzTC~oV(=FT`nWskqUwH;(6ZJ z(&f)JqFwIMl&ALHAD)&p#C;hOfeHThz;H3ny*qpHg)Tb4@Y*ar)9NW0?cI&4-P1|9 zcBSW`wf3aH=%==0It7XK!=KMWgm_|y3?WD`LkR>m@ zv)M@RWlm4QMg2p`9`XBDtDMMC3)fnotlK9KqG{Fn=Y)B_BXSljEk9N|WR1y{H_COZ7ZoVm!|Kf>WdsX+YrT^FS9-WJ3aThab_*;YdR_V8v zny860!a-hCg@xnxH)9=qn0n4_hYfMHa}na&u@ob>+@^Sh@nZ|YPjD4bmG>LN;~l>1 z63GcXO+V?aAA8E3(38!AUKA;LuKaxk#Y-ZO$_j zpHmcLi5AvK5gq>+RVq}W%87y!ss4IEu}%rWnIAr7=9lMs6LF`=!7xx}O zS>e6AS4`Gg*ZU-T4@PIbpB1gq`ZybEvO!g6!yk5fBzCv)acu8YKB|6owVX*`ism}J zu+H)zYTB`fhn243F!2u<=>YEEk%J<&(Y`;{Vbpm5WtklHv$oL}WYN0SsMl|m-tunk z@RW9(dBQ`2t0`S)p$lo+FZ_=>s{aCc;ve)0u3D^rKZf!aTcHjkhL$(av%A=~(-!)= z{mg7 zCuA<@ih|N#v5dM2nUJ`N>HvyW{yO2zf88IH89X|!ejgS<&EZ*DGQr=(P{#$kv0VIx zC^5}k{5dC}Gxr?NK=YS|`>)6O-#e>e&T8M)(Y0Q{Qc6)8`oF$}*@5WjcbA+OjetiD zxn(>dv4iESJG+k;V8%5o)nfdFKMyb+=kjvhMY?7VF3Xp=D(mc$s}OU^tD&Kh24`an(Ax2`ql z>%nlL9sdA^X4x5|)p##NsJA>%Hl~ordm($#jOxW^fXN`V;(Z=7fcBjcj+@L10Wz@&#OUa|$wgbBX(H3+VHh#KR z^BDTCc)9dA)yc;d^l$uwalZ%pI#1Cg%=rykWr|hxpJ-RWN0IH(wPqIl^z?@98=8wl zIwou|Cz%#cctan2gY6fFt4Ybi_Vm(#*Bx3LKbo1CSq>(6gKX4DobB|_hRcIFgfss$ zTlK%5v1**=^nHJ4!}*y&X@%JpRl;w#xcde$N$nGVx+T20tYW!c237LS($c9e2RrH> znXJMpSn=g5j*Nq@`KO&`4s&$*-?=vqk|ypNUgU+p5Dhv?96Ivktnrf!MxI{sO`EHX zj3qYJwPZ8$qOeJcS5-glT1aOV)`Ph}Af#E?C0F6C>D?PMpDuDFpTO&Y!GYh*@Sw`X zwa{KKo*pqa*jPZYd^f$KB8Msf5WU`Z?W+(Nb7JwDwo>XgRUjM(CK`uWWRJ%>ELL$p z-11mbfOL|>^C7S37d3nrf(ojxHh)vI+dFf-78h{WYva$|yt-XAPh&iOpDJ9~qxtc(9tVz=*y@utyghV6k%rRllghirjD zhK?@?9O*UwDI6hF?viKvdiHNxzkVW*FRBe6@r->mXw-k{`S;VW)*0WeIP$_00;zu} z%!Dd*i$e~BH2uUsMr}U`$!2mn<+0srDV^f0dzU zI!IF^J)8=3mmRpl`S$U^dy+TTGVDA4rj?h{l`qhcB(+v(^F-%;$>;0ScQ6Je@ku6gry3vf`sJc zd?Q?poK<#<8qVY_gc1f?u_~HEvutzt8~0_;b=;ZcpwqBbqw|QPFPGra{~fuoFAh;Z z`^d8Kcb|g6Go#V7p>_k^#R>A#MZZ2R;aODplQb~vzwT53{)|H5=J4=OS1+;wS%*)7?Dvcx%dL;EKa<$$m5_PXL5+_PyUkkPYBa+NB0Z8hVe zdnf&nM3GPc`XqwJMg7o}1~K|Y7hE`Ff${&M$P1xW6bhx)y2mFDN&A0zd+(s8;x}FV zBmqLN0SUcVK}t|ML29U>cSVX45TuAwL_!fU(wi6&qVz7kiGp+$2_X~#ktS6XFjN8W z_}$%mckX_7_s;#5Idf({bJ{6p1fO$sR zKETxbwisHMO5pW)GkS9qzY?dF_jzb{XgPvsrlF0Q5KF5`q&7GFsH!6$O~16aCGFQ+^NNL%w$$iVrV^sQR7DjsjF z4kMSMt}g7Cc*x4FJeK7Mx{;60uZ3&U@DJz_=jT&PU+Yw@x9?}tR2I1n+{GxoZx?vj zDq1GAt-CDH2zp_R6s5@`ao~VheWB&sd!+^vs+zdS+xum%p6N*TFD~7ox5PO5GkS!C zvlDcobv1(4^_|;|{b7tx)KO|`Vx4Uxdb71Jw!ThusFujw$xL6jce2)(L3&?{{aaoW z!75SAuQN=sKIN>Z;TCx7{J93|O01#4pV<&ciyA(yS3@NfXG_cW_&e+;6YlBxM+L-v zWGr&$+to@2Zf9A8X$M8~4a#91?<(})+CN1%MjoCKwK|7lnM={Ta?9k#GkwTI(?+9 z{NAPe*B|Ney_)~!qOA}Ym3dLknuT)K^ltr}#F(`rD>7t2i>f=V3Ke#)qadlab(5roTp@ zH5sEP_u3c}Xz9r}v)ysmU?97U+@URdlQClgeTm|_vB!vSqkX17V0&?X57y)Lumbmn zD+x{G+V0i?X&2YAa$SA&TC~I$^?SxvT$jGfJ!!9-FD0({&bMG0IuEEO8k%G}uklRU z+57@Jf0BEb%zpV4YJI=-L}t7ecQ1NjVn&w9JX2b)fA!Fzxxg|F)LQUVSDQdNjhKA7HYYv0XUpUrN!=x?YIyYaXXbGD ze#=6#`ms>`wEjF_QkklD;aB{^g%j#fzYEWbt_=Ga34tAN)P$>zSfCIfN>zw~40kSOR`d&e+J$$+PiJD02hjAxiI2epLhn@(Ao2g>XUZYv-tEKBMPXdi{+G-$ zWWU@@@~48eXjgB{ed#!6Wq!7}+WQ5%u%9+|<$c2jbJ5JSEHFIDIQKYxvV3bc_3=IP z#aplw`yKr!mnPYth5DDm>3CM-t%xkQ?&YoGx1GYCEuKphbeJg4H};NJc>f)hITgWp zKX;&P-woQ++{_i!2cwTc0-%&E(D0#W4;PPI&Xkbdh*&;KyC@%{!sN{T$T%^WSwXF) z)ZwvrM@3Sg-!P9>ef_U)Q9O{dal9BDKFxCLtkdeY*z$5gL~Gq@lcrwY4ifH9r}b9- z(blhiS&YBwogu^%l()Cwv#7hbe4pPn7t%dWM{>(ucidLCd~BF;8MrKiy63Wxd-Z)& zo&9SfB0d+e3c&+G%kO{MPEp6(m#9jX`<9r6bRu&>(ZuiCcqCA50HfBT~r zsfDdI7}Zp$sCX%E#|?mz&@{;pABPrvr;Jf}xha14-0RbJ3kCp|E{-){^9u$!;mLhH znxwYbT{ZFC{N;R9^{FUQe_&8YW)ra`hh}+F+5~v4J1do4%@llad!Hu^sie5&uvN{8 zTx=AD2PX7c{iGiDdus1noiN4)KBQH#mt9}_ z(Ga!a+mwL?1(a4}^fwfT0jEbaP|g71!HV?3H%-^Xt~vw6=CnevYM;-5lERRxc6MR| zW7LA_eiOXs27eHe_ttrLj#fe6a;<({VBS8c{rVumV9Ol@^E@sZLg$pIxf0t zEvBX>ihnA+PoRG(;h8g3zVvXqs>m}%#x8XlD{MSas-k4HWi4`7q{Mc>7f5C=wkri$ zKwtn)n*6U$wg{p*0uLCf@Z#-N7@7dlCWkwv8g}74Sg3EzRA$UDb8jAV<6&moCX#{O zGjmAg8jW;?qO}}g99yD?t~O4<%Jl~;T2`!ubE@Yh{qtt7HIK6t_#(WbVIaM$GTt^o zok%18rPW);L2b*4XtE!2)8k%!AWQM>b8LGDRUI>d@4IRY)#(9ZW1dnHU!1*{LFgXm zu+ywo<4b8e*{S^T4nJ)}Is!dUc5Yx8P3v$p%HIAcSYzi(rU=w^Z`jNCqHfHR8i57a zv4}ZHH0j>HifbBqI6dYzMbr8!yWy_KaD3M7K~)V`=6L2Qp%mHarY&*Ti|0gMPxkT9 z+~xcWDB`xGA2p_O`qcRztGpj(*j@`1ko=LN!L~l@9;-|Bo#*gpPsB>cym{D0yYe^3 z2W`#4_u7bj^C`U{v1)LwN6?K6;IOwwJ2|-aoJ{HWX)UbURIjv^n;x#ls;bWKbwQE7 z(oDwY2Ey}1D*5oi;@IHiq@7vYfQWI-RSbo|H1*l-t~B=#E!pH9qXdcAg}nlnn$K;R zY9odV2JS-qoqr@u=Tk4+`l?m3 zGE;yWna0iTpZ53{S!k&2qO2m~eCsMKA4KME%u!aH&BI!jx<(o4#8g)v#t9EXn}Y6^ zn9Dli_O;Ii4g(R))d3A%?|Txc*fkuU_+2D9f8pxq=Y?-wsr1&on}dzR!NQ*gG5oz`K|pY4LZ)6C2~!EYEzsW}_4ukT3q#@Tw^YJcCIbxK<+JbohXseDxJ$1AXa6|8I#*7jQcv9NVuBffht@$1Zx-=_Sf=FeYB}~#xERJqr{_h$G9kz+Oo6> zxC66gb?sI-oyGnZV6yzrZ@l6c&&xl$?R3R5vA~9JO>NoKy86B8gyOrL)m8M)D6gA< zPB{gV5yrX8GLV{boQey$`tFS7*Nazoc89Krw`y0XJl@*MhypaOPBZMsHItTFxBmcf z^7>EsiVoJouJjs4@89}RS4+2jH#Ss|<4Q?&E!@fNAn}=+dvs^Px1&9g_FE4M7=N4* zRs8++59EU@hiG*Kic&w6mTNB+t+93CxD;ByQv+T;5!9Vc6*BsjSSYx5#D~q80k=jP z^O%>HDPHCikb=Zdiu9T(PQPB@mZzL5ecj^8Ugk>QS89dtL&~+^wYmHO67h~9%#TXH_-3qvUU??{ zUXHa~mdSZOZ`tG;RcqJU`nENoRyo6RF*w?JtML~7%uE^UOa%+FmB7q58+LF-Rk6IS3VbUTt!S~WM+`qL-u||tM8f1_9O)*{sBxjZx=99#FY=x z(1JB>)@CeqOQUhu(l@kh%jk*1eQO)Y80QS;zJM)+?H8pcr^m<+@@;^KhRPNlhS~@U zjkMMjT8@qbyhh(#nw#l!-{FV}pOJhaNccp11c95gkh&EJI<_lHWF8m6N`cb*fpu#v zHKKLP>_#78;%IwI2$FeddqHZzx%&M44Lp$V)T%jer&hW-BIsPJHP}5=Re7o_Vv_?W zFx+ja{`jaPSJl}G`_t)m5_trr2DncLa z6+X@3bP9@1{lt2IDDs{9nS3xb?m9va6#MGAdDH*OpYP5e?{w z>!qgGra*^iYT7d*a#hfzfiEOIc7QWNu5KppEwd(>aJ1 zTjy&x6)oXnZ3hX=5ocuebSun(Id7tvr09>#xn{{kRzr1r^V1r`Z-dtc5ug@-RUvR# zd2y2Z@uW`am5ch;e5%zSFfrU(QjiPQ_4d%1BM06ZjBwn&PCrs{vSY-AcCi>ym^%kwp^i9CToO~cWP#wlhYCE-T=-6sQRU10L{CLZnW*+QvR+mVlF zUMxRGLmN)ib|#XS{4Z?TGcCLI0`2v81iU0CzgS-96ZD|vKVOPFoM&?AIezWjoEjqj ze3>dMoh4vCC0-z&FYYSxMCR~C>ES!hu~6!i9yf!d>R<5%5b;IHOkzf9`VSf(NN3u% zZ}QOQrv0*(?}M>W0)2>y&5JU*y#k5A;{CKJOiOKdZT^|)35tCCXQBg7Xh#3Oy@6;J zKfXafYNeL#>%?$= zdjr}@;(1QwCc{GftAg8Ti1W*!KC=j0e-c*u z6CtkO55L2dn{&<{K3G#>H+u%CWzYlk0` z4E=Y?kpF-8n~kP#NP&DxzD4<**YW}R3}1>EbGD-p=zPk|K1{ivVoHM6q`-ZgjH z%?|mV9DXf7B_|q76}M6kb^L=O&oMku?*;oZe^Ajo^x0fn?D>>Te{X&lnreQmeAH=H zu{$ZXmeW@Q+V6;sQbxiO7x7)k_L)xoiB8|>q1IuLoeI*1wjg%J-~OG>@p^FF5gsV9 zOGTP16#fBjlQY6f-=XuKJC7y`cA5UZLsK!l^p?KlvKvZ~@0wh}Q5rR1`t8H%2&o7+ z=O9MqaX%Y*qEFO)H?zSEy(|O>e#99bJ}Lz0Kl|Rw|G*w}^oqcA&0FW>*RA)db(Vhs z&6(Y*m>m|>AAk^0{Rg;T_y<^AFW7!n)zF_=Ca4!b@{7P!`;P-hzL`g&x+Fi`Wby64 zm3Z+`;7V%5!01!x9-?rOx`yWV<9Xv{aD22nKveut(C+hD^1$56GLa`7`jNCJyxxRf z{dLX4QqbpzPPk{ep>k?Iwd%n_GT_?7Ou*6jQtv!TxZah4TGZKcek*7VDqos-tsJP# zRp~Df0gWms^uV5L(m!Ro8q4eVK+ZoDHXmrBAaq}U-0wrUhxNz!7;*}dKyOxv808iV zvihLPA9g%?OZ_P@xQXQWGF{2IB(PY&+9VTf%jRZQ2UfR}-a0LVf+b2*e@*N$w#b#yrMJy`p>i&883PCp_9n0YhC0M;8-xzQ5JmqsguQ z_Ff5YtjRVt{^Q{}S|$G3IiRICvW zIg$x4T26mH3^h%b(E9_(f4?^q@&^DsyZ!*TQ;S_%CN)tnn^oLYmg5Bi&WFfEnT5^j z0LVQ83+iRtFh^hem15SgAEH6T`in^I_)zF{%R+`4TGOJYv{j8j_wPGlvd?!$9#eE^ z)=0kX-==%9g7U&~Vnxh2<&jCkPuGLKKL9S`T+fzD{I2*!*=Fwf@ir>Tg_O9N@~sVR zy@?w;Eq%4@{CYO|K3h&*AEfEa$yEG`$07L^2EdiW;vMC_0xp%7vBp$!1s z9+yzC1u&#F0?EAcqzF^-0Et#aa=li2G2IiupkJy9T6bY8GDzyzf!J>q+Mz3njPz~X zOIlKpXKiDjQM|?{vNHR_SWSn>Mul!5wb8(miW+-K{Sn zp)!deFjZY?E_Y5)>cjvDZV!m9OfpIhmVHrAN(YXNI6J6uF$c&KndLk0TNkm){#Dt? zcZ;7(8 zoO#etMT46>i%LOInA*$;3438UG=B5qyZC_`zX9J-C2rX5eesV_Ob%lRk-(88a*2!%{uhN z6hN`h;x9v&kkccYN-9m61&!g_>mqF*3pN2Zrhyu^l>nvEL&rBP1uJ_Vd8eF9N7tU} zK6yTlgcYK*WU!$wW^Z_HBHqV-nhn!`7*CJ_#x_r0Zdp0`JdjjJ~#4-bjy2?)mj1lv9hA zz*L|-mx_qAM|VIE%YLKx2u!yS5u``ZYHx*75VOpL|`UNhUZE9jIHKDE>EkF1zeA4U}F-W@)ceO5xU%)Zz&JvMTMD z^`X4t?iRB|=!39KJt}4D)%7dkmFt-ehbU}`~@OnRbGmr7dx0XV__`adL$fH>|bXxRYbNuFuM5X~o zCABU{9aTPdGW}4e>l}6A6RRZ1A3!s4P|#)$d*Pl)GkJ+@@GijAh%at5B}^zvd1S0Q z3R*ZgXPqFaTI1Q%u4z9i<=EBrUAC$r)d!#lNRJ-%IVFudHrU%V0cK39JV`b&1m-vx z!KMxg11i+YAL?4wIzMRw5I9fzv@ss6a8R0W)n=OSW{S+~!W{y$XD`>~Fej7MxbCtO zNLk}8iD!yOY2TD0j?ePWXqtb%WGwPb+3WN5FxRlb?TZ+4d;Pu)cR1)j^=bFCwJd_D_MHmVsYm5`GE_mwvP{!9Pgj*A8hMX+4B0H0w%9fv^# z5TI6O5}63#1g9jUNi+vgt=0jYa6~+j>e)I2*^3lFpkpX-z811+HmuMD7`q;inLV5+ zl)yV<#gqh{^@R7zOl=s5RQ;9_*RqbujC&kIKapH!Q$MYqo^BL=_=$c!^%Hq6>5S5& z(|JSlY>(G9l1P(YFo(Z!P*u_f=`@_gMsoswPfyo1{{Rtvmnu&;FmEA;WsqAV2Sv)O zot_Lt!;n6w#_#~{Dys%oC8V{nz*`f5sQjDkudP8g<>mFf{k@Xbzvk%EJN0E|Lv>2U z6MR9!`40@W>`p(f1c82~j?rbXG)sXOo~Bx0N>C9GJP+;l-)L-Sw~0)TS-(-8PmHZy z=@lH?uE@NHYVUHp)DzeXHOluGn3@NjtU<~fQx=2o=r1$3+Vo+%OFnkN6$;_Ylla-N zvHljXqq|(q?)wR|e9>PcE7imAp`z07R&Ow~*l}dr6u2W#r67~??yu^t#P?3PHpx%D zXmykfyuXB1cIP;;RP?B=X{M2uQ!isv2UJ#A52F|YLeKXuXAbEkUyajG^jxMom4ei^ z9%d4RW-ujRXVX-*tt%)$P$TQMHQM4EN?uNDQgL~Rv7C{4;4CzoISUK0-nR>oQ$ha5 z-iLvh29i!ZL(<{(jnEf3#x$LIucR|h6Td$Ir`zfl&(`+HRq2!3QJ{K|vPTt^q9yar z@dCPyz^qHT+v+}7?KY>BZU5fmI~m z@p?sce3YUIV*G4vfYdGwExl@@8S^(>QX4UT_H*3?F)nn{T7%WyvS6hLR+)2O-+Nmu zx$j)CP?O}6bbB!l7_g9nv{#3Su( z-KnseT5Qh$M9WI1NkhTC@^mCa&NyTy5~$XWrg~hknCF6S?K7@R~IwT zc^HwJu38r=Bv@8q*9h2#cfM1+isB5}mV*V6^EJL~J# z!#8Qw;3qQi`)(%eZ}o6M=>GFUU#0M|>D+*zm>>u&b0$63sBTa@Yfx_QRF(rXxml)9 zV-}p2;U2ooR5~LRmllHEVekebDL{7L` zrnxlhB``j2xGn-s?kQj9RD9QH_GoMD zTu8XVb-c`kfOlsb>Iy8SUdyM`q6VTE3_|8Ocdn-{(!!=)Wj-1ya(s$hnmn5LLf)Qn zd40fMWhEs3JOzM(RKg1Szb4C zkilt3yIP`Y@kp#a!{HZLBLgKVR`(;4ZBTPnZRrbzg=yLaiA$522X$3HEDt3j~k@Y#dk8@+b%8 z9t~HjGa`ODD|XSSZrK!xLU2GKXGKz=j?8l*NRz8^!*sE6>pGH?UC{Tb$ZD~(V`up$ zH-Ubgl~Qi6IKZi@Ye6do7Uox#Y%+m1$xDG^q%Y$FVH<$EGg{g}ia^x|*pv~d`sDsY zCOOFmkVwPRm2eBSB;HA!YTm2Bxispow^yvoX3+ynKoQ7X zgIY&D0K5)UTz=gMIxXO{c1@h>tsk^v00J3+K)S9^%*t1Sir*&x0T!UC)^EnHwNLaf zsbn{Oya_-d7)ISecs~k0pgKh9QSvimpP(yjgh)70GnNt|g91hK`~Avzd_po$+IuY9 zEF&9IP-WxoxjlcbUGE*8gwW^o+=(=P9S+H^nOF`XE+{ljG3Jw!@@SaR;?IYnkG8fJ z$&08OkfMR~)OSEq*n(Ms?volHrPe#rugE_6Mpii$XLK%WB;P7-S>@+LZHDoavGT)9 zM%gRY86W)FnzFmqgkI|_uI5`_Lvj&zES|p-Ydx{FrCA+F?Ip z8V*+rpZ23cnU=DNPr!Fp zu=3`U?^?T{A9WjpU-$(3t98q1gs#5{f97=9xiH1&_mxEjPJ(e4SYEsBtu^TQn3~^G zEj+zo32&P-#Sh| z!_HK$sf7IjUhAj>8=`p;SqtBDr-Ou1Fzn31AoONj)@2!S}P*0&q(c^*_IlcXtf~VGk223f+koM#X{Z`7v_6CEPD& zdzVTfn^%#3>K=I~g_6^CBBLHo47B~IAyopiL)SFt#Iqv#=W-u2T^`DpePPWfF!!kG zJld;iA2Urh76wjaO-Ms%;2h_D)ypYaAp7YlA%MPv9WqYo6pis|B>`m!2mssJX^ zv$pP}I3&L%?Bx@178+c(QdCl`j^)7=*=CWXz#=k|{Jz05m*50?n;Kn#rcYrBAI%x0 z;e*Tg4KFz7vuM`aYH$Lh4zM8yt1UH~63S@X6I|5E4)7)3%&JeS+|?}UQJ`(b9UGIt)3=9JtN?1(few)PmEP6b@Z{9JRn@ma`TZ7%h-(XvzBFyoJZ3 z4{_KcR+d&RDM(|+k&!*8+aCAtR>9;T%c%1A8}{ty4#@?}Mu#@{M=C}b`owbWZzez( z3yEx}(I&v=4e}B?cs}xaeNEFLJJ+*e8iWQ4swznkvcEQ36CjQXkhq(U1huoJ27R5Y z>RyRb3`RymqKA&l{|;7YFl$u8m=X22Wal;u1GoSip_;!SL}j_f@IQ0<=ulIfybG;pznPm9(9K#ZQmr#vaLk!!P^+I%S{e zJQW*nMQ|r5#O-iS6(>T9&2sc0-$put;BB8BthUvW-C$$i+0XmAHIL-Zr2r~QE}$6- zfswm$?`&;^R5joZy+vxy`HWm2Hcn$PBhp-UOiF!H>}aZ>3ehfUoM6to?@{DvNDW*s zF5~mmG0B!2I0&l-vGSL{6V87w1C~WCFP0sGfRPAzN3*|Wa~F@VM{eZ z$Bp5D3K4<7VJ?lV*5CID^mA7U#k+^gcG$Pc@+19N*~CA9x?902r}k)m)(ao-n@`gB z+6!RR1loIbDbIaA_gUi18$rz7#%TA0^8Ha9P~{05k!P zo~scU{hlG*g9$u+Z%J0acH@4!-Aqpjt048{lR+!^lw>ibqvr2}U8`|Pzw$BXn`Szk z?0H)U;r-jeIy^sqY;krU8HBVqr)1E)XT$?!Qd8F;+?$Fmzm2A)dXKh*JAkFER=ln8 z^_W}!cp`iVn&xMU+L3vx&z_T_J4Mk+1|m|(L0Rqw`rCVpZ8QAWEa-;{0{yN}+86=a zEUlYJ2Dw%(hfLcW^)`d9f>tg*qh?A;bd;aQ#8@dvZpO6Z(8lJPZ&l6&DYjl8q?PMn zC*B-+y~5I~O8bY_sTAaa09OKUUu#|VmLuN+9b_hEDuOYzCJr5EKko1Ee_@Xc&mDm+ zI;ZuRZ`a6dX>X-gD=V=tEkldxy!H3Mdg-h8f{<+M(<;S{rhI6bvLOIa)5MSAMr|48 zWqRoqm@F!!!0nfzzE9EgSq~tHwZ$81q7V|6)>CY?rPwVwsE>`n=TWSS17Nn;Afy2K zI~t5b@%k3nSbU<1w8OZF5veh45|uho74M@mFV{FE=Z#Ls);j|e<){j2F?p9YnZCY? z!3Eq(`g!tgDx);kxNkCB37~QnIiR_JsO{U z-!8mz<<(#eiy7s7Bnx?8Ap1Nbvg7xIHxu7DjMY+D75T2}ZvF_4S_6@M@ik?0SCZ+P zTQqsgGgq|NN=wOSZW}947G}aqE}f&Uso||^VE=wUo+9u?Helj2CtwFKD`?meo*_l6 z0V65~9%?&)#l-(3h`eJz9=3T%bP$DsV)rXEcMr_vn2Zq7!E$R#hUfr;q3;PU&pU*b5g2uOh-Q8%e9~Jg5e-& z9lsA`C1&Aj>Xmcyi#;Ygw)6y{`c69G15b%hQQ6F>B_Jd-bjPyK8CH>hVf#+Q3n}U% zeB@o$m>ECTOZ$RSn)&nB-@H`6krTpz;!*=~#~j^0mF@_Y>Zhud$)_KDI?}>@W(%6n zXFD8Qs5W#=+eq&vsp>n0z=MqeU`jGGMPuhmTX9&eS*Z1eYhp2@-Dgcky#kKbb$&!BI-M(fTOGqQ7_ z;|v@mU$9M>hrn<>Qv7yvw-JPu`V)v8@lz#o-xpOW#RH-L4EnJqk=QJXw0yu9ofGsItJ1An35-XcBb=94n7Weghc<{r z+M&=PeLzUCSWf*@)|1YGV&ADR=W(>E2-kPCqI~u?h0{Zw%8hwx8fd5;)e9_5&U%(U zYB@i){$@Znku|)}@_f}&CKB#2=oLJWH?Gr=M5)GbNaTvF76VqsLDTu3U6myY+D(j) zv0(&yrKDh)1~Z#lOXoJ##fBQ1kd#J{=3SWx6^o3xxwfOvY2Q#(_Zyq1@sGeJQ)2T1 z{aAIcn`G>`1_mM|v{xy#gXB+!Wq$y+lgfx=*1@ovOV)<3$o3mb zMjt`{fNxlhD34h$SD}UDrMilV>Mp8XnZ4}yU)NnGsoHM{#D@w#zs~Yy=(`WZMA@d_ zH_yDQQZYXZ6fDs%6J#gqTgMv|hh+a7ZSeo~8hEKzYNrq z&{Vg1?n~1XAwI>jC>$VNZPCX^1Y7A6aDbk9DTxR0hgq{B>85c^Fkp@{Ht~E8A3=nm z7IVq_>t?<{^00l@VrfR@2O^Os>No#Gn%Ap+Ocfu>xVKh)mb!Fqvxci}QEH9bTw`UK z&$_(=XAF(>kOENxso|nOayASl%SNEvDgi9a{UB?{ay6m6SigE)U)Z~qs)6h3o)iMJ z1rrVDz>lsI8H&2TFAeK`yD{;X$2T@@{OCfTuY2hq6s^Zr72YlY95FZ7i!g4)|cI*wr;sB4f}bkX=;AVv?q>rFKAI zTyBOCPGt;QfF(ZM8&QF*`8a+>BrFGjnnZMuSjeoISi%1QduVE1T7GP4VuB3O#4QWt zc;jm3`r!%rOG zaeG5Pv0lWA&KOD`7Q%p8D_l^QCW#{kNf(1t94V&yWo%guNCVc_(^@(a?FR(tj-i2} zm$RM-kt+U|X}<3Tl@McbXbTJ^AMAtZ7SdkH(hfR90E^NOLM%p1Sau1tZocQtaLopW zAJUQV-M(~E*=!ecuB2NXjGlsDe}IXa0{tDnb5;o`U4Dfyl@Lb~XAf)J$Q9Z6353&D ziSp+7(l4c+tlQ7ia#MvJpsv?q0(_cUMXBhMzh`&9PkmqQ zGTSEwpC2a_0{GPVs$jloTlA zU&t@r?E}IFO3z!zSU_+9l3IHHMiUiQO@%SzI+o6BXur&n*q>_-(BK^qKN{!%Dvqo6 zOKCeR$e1+Df)tqWaAwnz&5n>yejx>}@70oir?_qpwuvQDffd&+XtiYAspYlGzzU5o zFo(rpEDyC5Y(om9X!_s2*TMt{B7PKq*#{J2jG-&ZP#gxNRT#%)Aeke@?1O>G#d?*< z82?-1y&cUWIjV3~h$cOd@#B|JgMtAXB{mP5#ji+?-%`OOmpt0l%|k^PLCHc|_e)ce z5o8pm>=0*=ai~&_6)JwE`8Lq?U~fS8hoN89Sd~ZfBhM5C0wW_m@ZzP9{RCZ>HA(Tq zU~i5`M24jpe%d%Tre8)MO#_sJcaThp?%5~4Xla6b+)Sr2H9)J{C$B~b#Jt0bWCyF; zYUpm+@1$FCZXr28dLqX7on(#eu`;=*<;h&;u7Af;xetpKUkGGJyCcT9g@`mEGqH+T z-*b&N`LebHDde7WO@K#dM*i1g`zPksv{KA|FBE@Ub3Y71@|BN{qZ9)kq}~>{TzAY@ zIlOyg>2V~3CF@8~5OsX2N;_8(Xp~R#s5?W~{a|s42 zI3GU3d3ljBR&k{BrU?OpuN3)3!Ycb$=kRTDi!G0*sg|4AZf6Lfaz0{Jxw%Jx0GE39ZCPX6jy$;6|id}Fi&S=B1kbvhUpxf6zK0%9#ewP z$Ta{A-xY?=<8pDHXlmK`K~c_+hp|Ky2jh)6H`l`2V($&b0KNXOpGfXGD49nM|4A>_ zg2poFO!U}(??l7P0}4&2sPxWOI&SzWdF!f|E5a91O_& zZ8g#)C*cDW7Y+ZLY4>02?w^J}pg<3 zNqT|++^s#btceiglI(IR0&QZENU>^>3=?qKK$uh7##{u;{Wtw2-kOs@J6Mu#oo*(A z6%{GGX2WLnia>j%a!}bm&sJUvoK=}O?j!=$w2!OSA40;c+43XF>$H^e_Zq!-0+kCb)_CFcyUpMLY?3PAz-@Jt+d`HoxE$KJF((mZ+Bq*$}ISiz}3868JHAFlIMhg5Wx zd2WzpT17SoS_Xwsz*zNjBwU;yWgEhA1rxdCdKS;USWx83ktgQ`=dp)vi-ug zKcSmTO}jV7e!aSh{wQ z{H`H1{VXQgf}%Bki7s0%7Va%Uh@I3UpXWy8=m$435#O4Ky}_|YcA9K^1m<|YnCUpX z#pjM-7U$fH;Uh30Nk-DSZUS%U15T=2zQJkj6Q*fjNT5{g4)g);UtDOY*beP!DobR` zHKI+vm&Dug<|^k)L54K-7AV==h;WK(jjCRyPXol~+dNd9haIK{=9; zlW2O%)%awZ&LU;qsP^5d2dyocAmY9lGhtseE{?biu;?|ki81?meEObrZ+y59MpQ$w z#qcLqGlaA75usMp?^JnPRjvgZ8i};6Nos~T5ZYwp@W5D~yv)ll0xMaw8R|sp2CQ0F z*&I@p6aCRL0+Xq=26jlxoXB-9l*5}5A;0j>?tee21FGe$*K<3mjk7?SqH)%X&sZ0W z`hZKY)_?d<{MR$-|NZ4RwveVPL;xJRh^+WUENl$5i2npNNj+}~L4bsBnIyMxV3qON z=%s@9*|?WE9-PP_Ni1{%%bj)*pjCcm8zw|h`)=r$GWkY$Z6dg-Ca2!-5@E@^?R2`} z?)s6}1Q@k+mEDYKYZKF4b>GGB{0mXy+c}*W$TU`C&7i}0@k?4o9RxGTttzVBU-fc6 zP*(6VX$BP|*Z-X{y>&S+BV6lvVj~ztpaSPnt6Ik(8AbA$k%-pC^hg{K`ZwLLz9?vuy z%*QU4h?pS+2v#cbLN?QeZ5R}-4kSvb<7iK0tYzTb%ur__PfV;7w+bs4BRzrU01G`Ya?E0es3ftB-fx4X=JC#c74)2JHORryAh2 z%arQe!Y)2ExVM#4iqE=Yu>c2b`SAM`IRl}8FR|=+Bg6(~1I`Hgja|Z-&!VZ?iih=DuV=9#*+EAPRkI7<}c)M@T1t!fS0@P&A6r?As&IMUEDHdhyF) zr%3sN36O`U>-Vi|b-h#aEStX%a2Y8zF&jVEshjtT(_+)1DgHWY^nMXN@cF`qfx=*6 zXNdJ-3Nb_Ug7j7$3c9n7Zmx?~_yZV?eOv8FD?BDb(FgPzWcDjU8(sHRhO;K+mD`Qo zZ9dy(=x_|ITbR?Ygq)>^hsZ}fP=)Rim|Uu_OtYG0zD%`7R(*br@_XNV#q;bPyN-6Y z@65aX_j*yeUIzh9tQNMIz-SspuR35%j%37la6JL1pj0V<{R0@t?R@ojFC;`! z-E_?y8$+3HfE=-6zbn)tk>%7O68=uUcJIadX~yBQWuD zvQc_^`gnF(0q(#*`YLHe&u^_JtP98)hcJ z)y`WpR>o%*H=X}pT2}^KcTy>{NHU&^EkXksg3ejSzOU?|_^?3&18BXw0thl;0?hMB zaaM5_Fpy9wE{P|CNcGr8{Bn~Fnz}5)wh89u>-?X0)r$K5cOOAxA7EG*aXl>^2hbHs z;78WYKvSzUSOFJO?p?)so-`qT3v=DFub(j!)pw&qsjKJ?in8BHomfWu0@~^ zL(n4c`p-l)*3=xB_Mifky!;yvOiyTwI^FWS%Ix%^$`z7|@D{Q;+kxNeazCEnSl5=^ zG5b7OyX-?ZSl>b|EQn^dBxkx!Bro{!!q8TR&@WaoM}L3^xAgdegpAYejNBEGeEo6r zn@rl`0?vlO?+Th|4mY{Z*9sC-R_I7(OY%W^8G-&+QZt4lMVgdXSCY~Q5{C)H=B0qb zR>a0-<$swvAUFT9FhQtlOGTa=&$32COsBE*Qbj+JbOslEoq+(UKJ`o(kXs0AEhf;! z=&oUc^ll?SZtW!N7Uye=SU%}_vKyw0NYyp=K%YsI2M9wDR`Alg1gMp<8m#eOt8Bu3 zfSls9S4G!{6@DRU`|$><^sZ<~koisb)nd(gMtrQpFmTaf18P#Wg^$c5%OM#f9wi%( z^Af2n?Ml|n9YgGHXz~Cf?P_BCoOzooA7QtD;yOdRL|Y=xU;E^mVh%Vp$5Zp!6 zn1O6SNVW&1{^fsjgVoaTG8_OXxkU3;DD{G6o$6qb60 z6n~9OxW=|%dtD*Zcp&C9>7k9g0Uz^NO#UJ~=8)C+q+bvU&%b43#NA(+SMw$lG*irc zjY_8r5f9%f9f~z()bE`l3K;?)9XEpey)=AS-$#mr!;%*<9E@^@?r}(qh4EVCWq5?P zF*RI(P!u+ulmAK%B>!*5S2K>kKUnuNEpzfg~yBe{PJy3dP+Fqi+z!6+1-Ql-PK3^4*%Wqu;t6cQ}co z3iqM{@c}SUjqp(!&Dkc*p(ZpYG3e9fdNkEgKF(ATvB~CmwOVB>rp6U=#}MImqlo;P z@(Tn1C1@A`sk<(MIYgO3$wOxhSxF7>l3xQG^8ZR@`T$Hiu2_~Elr{i=!jKqyC+dn+!B6V8(f z;y*FB!LZ|TwW=>P1jixsNM&5Yd;DQlWrv1~u!Oqu=nI=9*$aeIS4ffDOiL+eEc;6H z?-Ul>0U8BbnK9e3jDBw!0g&LG%^v4%vP*X{zH&KP#Hi?yZbJwJK{B6Vb{g_fsAcGpOu11^0AbXRBn&xNY4B{n z?2&rcI_IQC_}4f^#&KRhjZ=f@t&heg%VL$mX~l|7#FiK12|MccR$FCp5558t%ryvY z*ZvZ_0iY)Z-w*f-{C3DcvrHdg42p>4Q?Euy9IpS$-V*qEeYLsfp zZ$i-yokE_)p#oQuzC|db1J+C1X{cmu5 zEQo?R)jjqbUQ7dRaYBye2e8a(NUlq5g{^u&E45yueW|&_lML|gNpQ|EjMbfmm@ji- z)^>j2Mhk4rrhQ!JZSwww936Is;2$c9zQ_^ zO1Zzay=9-A2{OL%v*Pt&?yjwI3oAw1DiLt8*GijwU0V%_rsfte$yQUg*N_AG^d-iWCNhh@B)fEOu>Aq!L@eC|fuQ0bPHn7byZCeE4Tl0E!Wc?K}jLvk@nmGz%wGy0LY;RHMt1L?4s)~yQ- zA?Jx=%*hx*+bl8Ga`ZSQ!9-r(I$=+&|9|leh5v8iF-1}ex&3P{lxPWN8%gU{1}QJS zmPZnMwY-B^1KFI3Vy^j3mH>=?HavX0JV^yQ3?*S)UcI8Ur+b|fRC*^%Jf#?UOJMVD zg);e7$r|~K+w|1}VoKxwJ6>%_dN@X?*>3ytafaQ!7>(EG?;2Gvyuk3>MriI;9Z&O zK2O&%T|@o@*th1J<*TX=E}Put27ZD&AjT69s+m9>uXu`p2;L=IXFwVN{PA=S*Lum< zUGezaP^7eaAGt@MFjkwk2oC|w*ZynnDO$Y10Yr_-P3WH)Dae5Ya9PIM)>I`r{eXcs z-!jAiNt0+R^Uo*V0K}(iL-6=qv-^K_!+F;g%q6U8%%)xa-&*Xp|w+(kbw{8O1*{zG@PTFw=or$_(CS#Bcg}9rH z)zXcwpl=;wvPRslcrZp(^JIzuYF@;B2aZaD0B6e}cR-JAwOVr^D@l4B!jVJzS;~xL zt|R1HjF>j#Y4^P8E%OWHy)B!uo^J3ry1P%jW(o82QEUcgcrW z(9!nHBMw#+U=a|>6orBT4RedBL^&MbBlr0Cq$!fhbp(b6XXqi9Cy%X|aPFIInHFR56~bQD)n$yC9oy_{Z`gd)JxR0S8Rq zmyi8W03-dy^q!zVeK?idn}E6ez{@8GH5G^})@(_-B+_~rh(tJ{1(qqSzw7?!I>~bz zApZf_XVr3NZcDiE_UHFJ`~K>F2jHXg#gyVSQJ3@wh?T1;EIUKPKg_s$-u?q9mdY33 zJUA7BU?n4zyS_xhLXHwcqIMAd0VDT$lw*#~d4^R3S7$LwCXJ(=p`y?lD!1DtQZt=? zzE;0~iVHheY=t%MhO8(h>>LK7?^sOBU0t`n-2&x0C&s8f_wh2YYhyl}8X_!pWK&)6 zu6pc~F@$Gm6vrkL?+T5Du58t60eTcJwbicLzSLYe;FBJxTq|b&^Vmpd2We z!`rj$$~;butbqzlQQN62kD} zG&Q(#!=^6WE(ntPq^t23Ps82Pt*Aa)a9iVN`4!D~-RqVdIy$`!2v=~IyC%eEzEJNn zmLpX`4#Ziaqa!xd&B~RQHs%i07>ly*xY=7sxPm8quw=E4N7;?(`h5#v6c?`fF5(*b zm8!<&mtJcj6t^*|n;O$AyOPUkh)o;C+u$u|r{7<3@by*DbEI3Xmk{)<9rEjTdz*El z6XWp{uf^fM?+Pw>HR6vqAaW5&?tn8&kS>e^7<;uN^pc&jI%{ZELN?NNj<_>jg}hB+ zA7*`n`W8;p2g&}*&1(HrOlD22XZBOsjnfU^X}V+)K+X1S+Vt2=F3VvBQevIHK(|K; z*t>mRB};xy5bsbT(39V{BNQ3j`O+$-KhB22s$60(5S7}Z zj-i+-bUUZmd6`Y?x-;5aX@5~Fl1eZlYy6X)-E1G67%k$$+si@8n+gN1TxSVx-KP4Y z*{c0xDvgOZhAEQIqhPAx3v5|_dOE3j^D(_BPv4`WL-`M>j9zXf8XF?utk)wPlv!k* zAKgCry+YOHLoik<9MzXlAk}Q@Ql2szQZ6d04MUu@xQJ2uOwTdDXBY7_br=EK`nA$}^L(wwLz7;9Zbs01@WKJ_*`pZ~reC@+ zpv0}%qIrZL27=H&nXF1Pyo;yx6}ByxaDm3yN)a!V5doJm292c@{da9dI%>E;tCGu@ zdzmWVDjB0F>7i!>`>Gu>`l{s1dT6flXp;BO(AdiDxH}t+-nyF9Lww6jC{^pG&!51I z>@^;?li3z74Lk@DNcn$v9-h8W?pDtdemj)@pk80m&C|bl9PJ%;aXu!^Npw@$;rv;7 zZ>AI(Qdgw7d%8RQo06|LtD{wBQYK^E2 z5?CN5xXY09N-+{QLRjz1n_U~K)c2(Xl>Y}%AS&`t=9K7PCgT4Ta&rU1HqJ$Fy&piK zxZO&+)<-nQwoRYQkj5!Smk&xTgtHf4(4}oD-KDsbn}<9+u~w-GUecU;r}glfdr&yV zr5se1ug+ z8G2s*iOApzvFiJUMbPE)4lxc8PgNGe3}iYAEd`hB>0Sw^n>;#mg$V8U@ks81WIpJ~ z8C+MKD|_@E@nNUsCp!-@sP~*AQORg}$nBorGn}u@+(~+f@Z5~g{ac>y&}VFO>IvBV z-pT55$_w05lO*6(9J~z_b-)_&ufg0Iax(!M+0K-Jirhy|VBd0nmEZ_1-!x^HH8$46 zL)-ie$2#O1U8yjFRC%R^RDa*Bj<2-4p{2jPa&AiKKLcqRjbbIa+n7tq4Yv~k83Vn) z0tTUUB^z@Ir_Ek60?1*_O>8r&`N0?gxn6Tw95x2YOq4q;r!Hki(in}1!lwEG6*-8W zE)2vcFQ(vLMXz{W1WZO2UtLF2sWr3_K;P>1a7aI6OTlq)joU)#WNcT7A|xXbkTFFa zv%%8Uf(bSR5O=+yu-rwXEhM$EpAlT{``>h0>=ddza3$l`0iGH~`0V~MWhOC+Cy`iA0w8ybVKorVP&gD50D_}Sle1L?n%Oy&QKe_@FsXQyLm zwG6cXju{M4+JM{?+r47B-boC90O5*#46b3CE+!@sc;EJzNrSyg<%1)YBoFEbrT=S; z;$hXhJ__cj6n$VI`OIax5m1CrHcI@k?BcJtSAXhIZCR3l(eYK`__9MJ4zF2R`|00t zTVmnDy1@Cu7PumK4nSlLA>>MfWGN(OsLJl%g5_F%A}}QzGqqppRWUTp=MH4bUtKb! z$`t|m=`*3FAuSSM75nH)WqU4qT)xjRE#Rfu$qu!RAC~YCx zFU_j@MD-8`k=LwU>Z72a-yT&8;e6&X%$63nkh~iDdZ%v1zas=vGZF#w^N?a;xv4g# zgJPvY^_PICVrll^B+f)p7zRjt`yoLO4!K2RkC)Adac;&8Drkzkaei1Fw&{UIRS{Hf zV33U+PyM`g*^>VDng5n@*h+LrpP2n1?GIl>Jg*bJ8mtH97Gt-N=EG=kQ{x%c8jj0~ z+VdRC%N%TE6glG}FXr;TlW+5=IkvNcd_TzqrR=nPh{#bK`|4=0d%q`7X@XcTf0g>v zy9&3jH-q-c-%VrdLNEuXKaT#wK7^7D3 zOh&4vjhXCtx~>!dsWVTST&8QwCXABj_5Z0)CqZEaY<<3Tix;oIBmk|Cz~z z+{)AVZsdQ}XO|Pjng1PE&rpWU{UV@lM5g^{8zy1z;T2_kajj1r)IQuC-9aqo*&II;& z*T|(GkhSU(N@wkQyAdMyrG37q)HoCP#+#+(!;%`jX8mDTnWPc_B^f|rAYkX0zRIP`0FlhpHaZsl)7z0Ma;I1Wb4 zKHkOdPz$s_8))@!4cObbzM-L&4FteI2X|wK$Gl#bL*c0i_jeroUt-S%QqXlt97tn8 z^<1az`~#kP*^8*T;f>k1s<8ubOYH^~4d$F4!Qb+3U;EY<`-!KST@F+bL=anDIrETO zwbCB?aza*iQ9S{lRtIRtUI{)5M%B9am~Cw7({yY$XR(3hs%!!l?! z+{)oCe|zQ%8M;LZK-^d|u4`)>)1s5;-G_i1JRgZJc_OhN`|rdT*&9OFTHw2^-xI-D z5dhTnU6ce`xgJR;^^Kp1c!WJPaE;8kcqZ=K`*kq3x^BwOB(%4qZ~6QwCX(493kK3P znQRzQyxnU;B=Q~%GZmkq*yTh2ThdR|h9VGAyuO5(>;B{Qg)$MSOp7KHF*0vo3N zS48lX+-`1A+y7Js3i2$q1#?03m`iS~7U|xUzHj(R>DHH0U&(d?481LCS-c6vM*5!~ zK5wiRM9%Ne7LNOqtrRZ4oKlzQi^$gpK1@_UzO+%`4GhZHa_oq)T?FVXGnWzpdozwe zQF=f}Tl#PC9Sj8Gb{BSXf2}Q(>4$`U7Hddb&bJ*8*hDJ_;OWZ0js{n~Yjf6EY-M+$ z;3!kI_q~SXx=t*Ss6d%!I0jX%Tc6x3W2h~fL*x~>|NehXkSY^Oek&+&A!ZO-?S~u4 zd0q6VNL?RTS7UvIY}gIYu(PlDxM@|PHsg`^U!7How=v`GuztS8Uw*cewFg@|l6I)( z^mph+&z&(I+5gwD$$xjEdBbma+&EDsPiY_-I_>B8fZ-Baao=U^ir#>(;Ki6!4L+WD z6cSExFO^4>1aiFD7L{iClEFi#C|$ZYnI5>m#9iJ~5sHf(Dc=J2-o;TRD5i!Xfxsnm@p%RY&bxK7odA3a~N<5Iswt zp98_1xdJvKm0$ha!r*mX3(n^lo&#XxPP!OfJ%HGF*}nrM3?N4CjRmCZJ;*mla+uF2 zYx?|fe>|flSkGcoYx_QLr=AjRzyok)pg|I4elm~=6ZQN*Kn+GNX+hXkY3$Zpc{!GB zK_=Z-RmaXMK3E8e;Sb>CG*CO+17|ahLS7=R>rNW$I77%x()F;2<^uw8VxXkEdn+;pQGt{|Eb9k*pO))7D&JLyb{Vk|)j z2onKK*inAzj#Jh1R#33-6y94CFKn8s<_9D~;4@|4tYsC$@g z`B&b09bPmJcZHyao}M~o=^TkEGm`6VZ--6M^{wK7@vtiYE&|Wjgn{6Sd*+))viCax zn`=BFrO!Y89;kd)TF(KzEPH5fDnD_4s3Fc>#`=suH@!Rg+7t}*`s&U5^ael4>U|zK z+}_P7iN{fMmZmkDwZu8mQR(0nj0(vA!*9|-GlGHosK)D)b(1fUrH6>B4!buG;)+3X zxZa9vr&g-49gA%+ikSPf(Hijb^yXJDejDJ39SWWEGao1|OHfX=NYw_s^>(gxdplh@ z&+-T5>ps-26aSw|tjJ(t^VjwoL92xI4quZ+#)DcN3ZBOt zw!pr*Tcs_R-UBDz&t8!NlwuoHJW>MLSC66wR~?f#s-(N558(1?{^QSfDZkv9-a_Ug z~5k4kg1OdF}o+@vt!*z#L;R^P4>#f$I z;TG*0hphVzZg2%ADM77fCZ(b3+Q*K<_md=r z9-!jcgm(lm2otnK0cLZybmxG_IPU_BtseV_)pB9T0T2QE^tm2cUnbUzt1qd$-mPmX zh^B1)pTL5`|LxWmDa3G);!6~#TtW15TpT{7%XdIXMq5)9rD6ac2>4gnl*r#61Q{|| zjt7TWf>zl!JTi8LUJpl%caYo69G#pp(CwLP*wlx zb(ax~ysKU!5G>h$I*ZMdVkS2@Mz{TS=TnQx)%4NxkEcVzDRG+WIjYf&6fD$yxSucD z9>qi*TdP#9SISEBT|B_kr#$|`yme~L=@y#n=2B}Xbr-`WxS=Skn}<5&O3PcK>VWZx zf2(C)3%Wj&=C16&XEXl^B^bSUEl!7Vu9Ln;<`m|Vf8V{-R! zWr-JPfj~ERp-hG>x{TZa{Dmt$XDi@>>~$vZYZiBN7WOTqyr`i#pd+AMHYRRxvhE?# z^ZAwC<7tH1@7prMB_Z+HN7fQS0>dMQ>2*pU)t9$#p>atisG#*EiNWpUirQJ426 z`_*0H&R?4!AoJB;L7)-GWcy^|kZWu72(7fUFTx{&rWX{076%d2uk z8KFus!q|Q5>U_AHs+BLttBVVXz+~a`i*ZgqCU|h7XjQk)O$=fUM4Gv)k0A>Q7fJn{qa_jB0U%gsQ7&)^V<`27-VcQ zETRD$~)rcg@tRC;-rFP5MAMLfa(*83CLXh%d218^ANU=Y%8E zR*c{X!^i-F2}kK8D@g z1n^C}CKvN*ZN>75ZZy<$AoQE6U7!(%@rwQEr|KN}vx zUM%oZ8<0)(VK0J##+S`2l)V-4PzcV}Rqo&E1fq<#fAfdaGbhmyw`yZ|w{;|QlYY_& z>hR(Lo_30d_#!yM%+K~(P}RGs$8w;q;M@=#G4s)_A1)MOmsr=V@2{G!6*fyEL-NEY zmj)syEj!`)>kgk+PriqOPGbQ94kB|!+99hKPc%kSceYFe-KT7s(+{AcOEip<^va{7 zkbu28;Xf;A@dyCp&~&2#V_>*j@IOGcVbFJVsx5Z{l{T7n*vTY(Z_5q`9e>-~=)vK#St)Wrqrp*NBXH8S?Vo82s&Q@BW zGqNJj_&aU2i(C1|UTou&$M=sv@Z{lxYMyEAn3dZl8NF*l=PX2UcXE8Mu3l)w>QcBT zLXpa6u8{1B_RF3in}<0g!uA2(=bEiAJUqhgT%dE0DT8E~1X-{LTJjVxmd|Yj*2Tol zg(p)2j)?ViW&As7(;ptW9lI_Kj_e357|;AzhGiA&kn4Gp}J1i&F@9R98*t z{y^jKH>;cD2Lsx{M+xnAA-?RM5KmPahDZ&2#7G>GU>{y+(1r;GxT21i5`h!>Q$u0C zC-v(i2A8TkdDS90c8rvN+t=|KZ;8d^rj1ANo`tR-jIpX&ps>(gCST}G2M~H{-PT6x zS%p`7+ul#uD&ePi*Tz2J?Q>9_Lv+pY;Zsin{No}+-Eu<792;Vx(q&Jl5o-|V_Xs!D zFQM-)^Bt8*oF9OSR%jv9SDqm@v@_;0l5ry<@?d%W_HoEvcDBP}rn@2R<(gj3Vtd-L zFwmI$r3!Sqc-$_GR)H>b-!Y>?Fmw;ansWf58~`DC*e}D1C2)I0z5q@X z>P23%(pDpVUoEj@haKJ)0r&H>Q!uBxMI%F}x+%QBGf=gcaxm0(0g zZGx(3=|)&7mQ&@mB90%M_mP|4yD4aPJGQ3(O*tpqlfIw}>B(vxDMTRDwhpm@>}fHA z_x)@VYa62YJ)`w709HZgRm=gj;Aj>L83%1Oe=YdBg8G)1s!=h?Ssb)kuAnaSu3~OC zZ9tLE>|iBovf_&|Tob<+I!yH<^VC#2Raz8mPhgFmqZ&kpdwkM=a+~jvbs+eY zw!tR_Gkh)w@Zw+n{bUu6 zpYfUY1N9=Db=MB@^z#iw+a6O1h;Y`zH17Xr%QH1CT5mvQ96WI|G(YiFsZ7SM+Hod$ zlk4G%;z`AF%5cl4?I(dY;-zlZO;}~Q$2a14m(QayDjV3extW}i#ZI;j$*2AeQ>h1{ zJV(4wS=2QQsGe4A7;;*Xwxu!;buu6S0p939*OA=cR_aUbP`9&xGE4b<6Q}a~1Ay4o zOKcia4Jj(vM7g}oXigd7yHyU1ny;rOZb%EH&55v%>qsLg0hFk&t;XM_wEqT3vC{25 zhC=hdAu0AM7}{sV7bWk%`vd4=E@zE`V@}RQA8A#EM6Uf@Xs_)uCFQRnHcFqC)VcWi z8oWPE4+~?|K++VhKVX}iW7$`FD_r*-O7zd(!BA0&G(83sPe4`^>S6%1VmW4A6QfuL zLeh$A3(06nLnORKK*3{j0Tr)DuXT43$O|!Kj1-RE+8|3+VMXk2z^%Q%tW|n`_7ePG zuNJczhZd4qn(#7s-8{`m03)UxP_b9y=&VALy#m}Fy9@=_*Hm{ylRs2{G>_>w&*N!F zLpiI~E5#Zu?sNM%`YlRwY|L(m|E4K!Xm8ATAH4{VPm1>rOYZaMOZAwQs_wm?GTQRl z$;gKFb^DnJ#O|wlpKH5e=ZD$h!Mn9R&s|$3hoj!7tsXiSK?&Xqfe^Yw%RqkI%TmGZKmWKJRQTyFLk*Agjjl_ z2r$AAj2ls5;NIFdmZxLZO$~V2VIZ3iBo>*KvNRKUTMaTs+;AB(a@T1XsY*`j?y52} zO)y7t-A^L=-F1%|?V72!_=)JQ=qevSSR31-|=?DBm z^Dw|S1kAKbf_Btua~0qT)i(=9dOwGW%=bl{r}_ZWS1r7NXqE*)?# zE>|l`b%n$o2bC+wy$V#p^D&k^{B~kpwmzAS_QUNuF%Itr=M2PO5cuJ&l8d!|wN`-D zHz@(Uy5?vb;}fgB;vtF62|kk;u7*Q73b};_;G4WGM*?l|B1W=Xh`KT=%HiW;J&g2J zoZ$fEZnGoZ5pHDKl24H>IHB6bFSz)6`Po>YKzB2v@uZO%8gyyK+E@9k8UV_D+p zxsHbff*Y#PCVg|6FH|bcYXFw`5$h%E9e-UeLO7!@kj{-S^&xQG!q4kbJ6{$iX;oXpwr5JxL&oryq_5<=c6 z)HyaweNY?rXlh#t{JC^cqoB=mKWXXK5GwaPn3vr8JLY)~Hhd|66vNB*wlX!a!Zd(2 z^uv7^$culnMw@-{xhJ!tptEHius{nS0XEo%$iG{HGvqil|6%N1ptF!g0I2t3&`gFy zx+x5eWR#6{YdV3SdaN8zf8l9y0tt<^*!CNzz5g8(%5m~+$@gTq2d47ZPg{xqC zFeC#9Om&i;jIu=?Rs}XUw`LA{a_SEzD>If?b6@UlI%#-OLeGWxHORBtG}(5>t64X7 z+Z3ihs-BP>{{an!7aU(-T&_BKdMk7bp7O49$>Gh*GMf)KSmv*oQ7JHw{Q+#NMkIVh z-Pk}UWTW#I7&2i;W;_E2kkfA@1*uT-6qAh$s{3iPp0e}yMfS8fnDmL=%zjo|USsaC zi)a_q%V7xxd`%WaAmyaP6)6LhZ}?{J^r-=th)pTa+%j(Q2hqsDJiKvZg8v-;R-npl z_5w=FK07t}yB;2VsWO@k-h7d0AA2t#=KV0py^-gfqrX~K3^tF(HO zkMEiUc5>EmSnqB3W{T4ef$VAfF5XEI^eNg12!&ZYA65DoGKTKIFk$iZY@(iELN2q= z)T9`btG{XAeU3s<%YkOJ`Q*LeH?Idh;iJ6Cd|3Tdcb-ZKPtSQ{?$<%JWWKN=uCh$G zOL5b>&X|{HS2&gWdk!dAwlzqtKDk;&rs*EtCtIkjQG`572>rSsu>- zXo^>fnY6cQQv>i2;$PsT5g!j}Lj)8HS~qkZbH}A)#F}pz+OY97S4s_oK4Zhk7Ph4s zK~?XHx`Xo{CNisNeYvGLbl5%M9XvEtCt6x85!Pbpl@RvsPFSj zwLTd*;Pa%{ojkJAg~mk?-%?Dnhp|xia)f+F8Pc=hX8lV%9Xay>)X^2Z$fQeE%tc%E zS|BZ5x5F4)rDg?PN3tYmE@r>aZ?fv<#A=gIr)Ob_X3kqKRve=w*TAhwesRGO3siCRTf`rfP1y)&zBl z1tSpD@Z5u={y?5f?6i8Lt`L&My?vyZA8zu-1G*R+4%+C;Df%1yDWduAKp_pc+XiVw z`%V&#Hbr9PLtjCz9bL351j&)duBW)>p00@4xZ`!U20m%jfOgz>=p`oEKG~BwU6-O- z{=D7~+}*40*NS}by3ZIiq-xn>jYI9|kii($$bl34)_^_tMob*`+pD>tTGVl5jc&PH z+RKGpKqu1nVM4>u59i>I8gwd&`9PbELnKX-iS*kx#l~Jv0N2RL9!Mv5B>x61ll-l-Dr(?>t1Sq4*zyK;@8v(yPLW- z=}%+NlM*0e7`BD>`;`bB3@6*b6R!y-6EJt`nE;;UnUv4LF9tc%y4n)^87&(z3~JRG zznE>d@J{Y5H1aBKF9xA}W1_xl&xK*24UYVzQ%Pt2x0T)3lCRsv$c&W@QA0Ph{bo8Z zF5b4*pO7j;K#Uh<4!h=1rB+bDou+p6P-8LIk+&X}BbGhqjG18lz^4&KtFzJyX zB)68dV=?1Ekw?O_HxbdzZv%d}s4tOwg2vcyHAFPaL&g?4V=#4H2tA3&vVAZgk!A>Qkn}fJN+6I#0Fvkp13>zUcpsx| z?W7AbrwCUd(85fw>i3J>j1e;uk%{I?9i{VF?d-s^o@^~?5u*&v%sc4iKdiWPSuZ#W ze@h^5Db4z^lL-c$^bOj~nbzC5AWtth`b zqde!+Vz$7%Z5(e8Ws4+Z5PY(A!>N%R^gh=^=h>Kr;qy&Zhgsf`R1&C47xvg(pd}G~ zy^i9iyeJHGkv1v2R3Jwiu=3xwEJ>+l4Ug3l_^YiiZl>Wz+c2_uN?Uf5rG6Io<1?cA z0iV!;yw^qG!uF*;oZ!w}$r(1?&Y^1&b?-@nzq2p3{MO~h-%*M~M>QVSQ`r^|pQ+md zy(yH=U@@;fzd#arvJH;SrR-jKL*~3^g%$XC*PUA}j{99#Z@dhm&E1|1Wz6 zc#u%V=wh*o#qL@g$v39OEu*QphZi`yr(s$0(~h5VFL5RIbUse?6@d)Bfooj-Am}=P z;>*Xwh4)I1od{LdDHn1>Fp6V-80s_VszYRg#ErUU@!Xi%_H6&=aiX?nzwfuNk%j@# zPp|Nd#SNR7A!;~l@fEgBM}x0U9CkxbSbGyn2dIT(elUh^PW4^-2D&IZG-eB|)s&(i zukO~$9={~;)rAGXA9eEaI+pFN?o=}}1-}_3U!uBu4-T?e&d0MZp9@U?kT+OFN{YXH z)mNsXv7PVq?H3N{SO~N1m=SLN!0=w6PCe(0GAts#F^UGpy)ME41_*RznpKEq2 z_mu9zDf0IRzdCl8NMAw~L0kt!z#!QC{)YfWf!xp|q-Hgb31`_NfRm!WDc!HUZA+AkmmXM4p(v zARZRfUgmZMe#`too{Y1|{~nZg^q7c=u_$i4C!C9>Dt`%cb`BT2+%{(HAu*O$ZS*&; z>8Y{a@|0n&udj#t7^H(IvIB4pDVo8lPHftodmk2!9pULgB8MgW;hXBCV>6SPCfi63 zo`)S*U)c0SD9ODE>HwVf5$lh>XxW@cc8I({tbva+U~e9ByJMcsM=5Z-f`4VFTqpeM zNm1b569I4IL>~nom)f$4EU_ z+|*kMn}$mt7VmegfsdZ+3m#SQ1a(|}xsAMhIu>dw+=1Tj_*L@v;ZDZTN{*s<*ZvEjz|=l%>-Gy6@Lg9TcB1k z-3z4!%D(06)7`6ilouU+@pl90M!`X`NVwR~i{oZYdC{0_!_2cqw``5!-GWx(y*0*E z2m%;RPS4Dp(!*1znwe??4_B~@FZ3BiKwT?&WjHK{FAm5~G$#GG1r_$sUk@2iS;`SE zJq|IF?-cVXm02PJI%nZxG)9K2)f%GxfaQzkDo@j$c)}v_zI=R@KE;D;vl!_|0vC=O zH?)RO-fG1uJ2e$r`x)EzO;Ku|E~c43yUy>m>O8^$^^8J9iR;fC1|h0s3uuX}Z6h_F zeis99tC&rP*=UKFMZ{J8JBJ75MuXoG0fcf!5_Nqnzhwd;c<4K!Ya{5k)|=z69`+P= zwB017`-Y1@pAHbv`|ALqtkyF7_WA=iMm{Q%kjwi5OmO^iO>O#0PA;H~n;KV@2`fik zX{B`8&{$I|>l{Z@S%`-ahFLz+P%OOSir^v69zX2fwcBcbLz#@R<}pJ@nAj0^^>5QCiB}Ci|z4?ShH*0qU@+; z$|ndBaGU!{&Ff{ntAN^R+L`*8d}Z;PN9tJiZC|}rT-jH0!i^57v37vfluiW$^4uSE zZ@5RKO9ct(EOFIodt=F|YZ&#G)tDXo*o%)*f4nKp0+bpyPFZ==!a2%TT41-|JkE4L zTCLr(xeP6fI$Z-F=r{8Ymmy^=ik_nYCLeRb%}>9^DZ8MhZh__8iUiefe*mFOVq)WW1fn;=~ zR5Szq3)>6lMw&vh){tH^UBm7E0TOH(UU}5m1;5bDDkMGl^2l?PEl7u(gpEefhh3}D zU^V_Rs+1Xr);Pq|@y5?zpE|X>_qOil#yFjW+n%D-W1p5#FRipV$QuSm)~UK7`PDbV z$KiJg#?Q#rl3543{tDNBnB7prW0_6uHuIVMnZLOQUYdtDIZ{m2HRUpz0V0EImp73- zal0`VUf-CSL3^lC@v&3wC6CWxH{MK0_#?tlBq`5%`IpmRe!gg}%5-XO2GCpBSUg8W zW!YNb&y(uuk?A3dw}RUpZ-rI!mhZDG39}34;(&vj4|4#{v~4pJ-xOwm$>gE_aKg*N z;?Mnn=zv~XT)%c}YNH4^{M7lNtSV9M4bdcA?%g($gWms>PoCICnK9eK$=_3SZw^59 zx4aWpz1iW>VOD`HcezOefk->HQKf#(jD;B7WGs16%J^mgo{|0d>(|}0Cl9N8a>8gd zhme1OY%iqJ$@MSq$tKZ1DAII-?ngO}Er#R_`SSHAo2f%U-EfM}Y;z>TuyipKl=aiBw3yNu48*-`mx=YU zKRYXeU&f|}E(Fz-`lMM%-J(^-f?l`WwrYY2sTvx9XVCf@pFltI`jfGbgp;UQ$k2v( z6RC>4$buZMtA&$2OLo3Ifs^o*o~6!$5IiE~pw@P0`ZVaLt7R0OtkP*eU@;jGa-cX% z-lM6J)G_qrxgh+C0-G{WPgGAhYQrJKd-pDm>jm)HM|NFSI_(coxbFIku7z9K%42Q! zVj9Q(7LrT*OTwdo3KmYZ9ov`%@v-popoBWarnfgp;Wf=6=hLTeBRf^&w0@-+WD8GC@5bgB@XmKjL|&>)i@&;5}2I>kfv2i88TgVs{!H)og+882u#a zz?fspwFfYlZ(TgZin^%TV&QCs#p*s7Y%I4D|VsOz8#-Eja!}a=aNoE~%ZhFzC+^~;SCA}@WVJGXAdQyK8c}aL? z(aZvcNq+aX!go_aHvN@`>hnW3-fCCvvKtu6BqUFC)s@0z&8TBERP7E~=yy36-;rR( zugJr7su$rhLSY}N50Jn)aWVnsk{J9XTm+K)6xlc=E3O~;>2~j7<+xj_PJ!7Kv@(FV z>PpgOTghb#MN|2HB%CvwmAp=#_P<)q8BPFGJf`z869CPY0JLZkP=VV5`Y$_LMqi|~ z?J>K07Qmuh_^nf{kM!e1%qXR8drt2DO^(cV9#;soFQ{L@my^qSET1KyMQz5rBuWt? zoNxOxh1Ku|gG;FwCEuHPfA>r0(Yd?1R)YKq z?tr?de03Ur)edr%P^HJ;jB2o3&z^9}lVM3d{kd&-55r*^etC}|Tu*$i|CY&F7cLkn zR_8_!Jo-OOon=(iU-a(3!vI4MDIL-wN=q|q%C z4-S+c+(K^Gzx7}BN@Tp%4_5IVI%0H)W%GTymuanHyr{0COaGp=_bG<^4F$P8;9lqh zY{+o4i4P9a;EWkFrhcdXw%@5Y^78=G6KP9HJ995uefRPm3*}!7-#`LK?3Bl@62EKw zf4WEj{sV`y-QEs~WNuCZ8Bb^qLE~D1wWQi2YmlPh#~rqhYWn(9y@-NEBUJZ1mw@c8(lwvp(42ld13MyD3#2k>^Td7fJdLwnYd^2UPAfuvR>an@=HtM0_;7UnGi@u7i3L6>#@I zSMg>R7lc+(T^}*%D&is16*HbZ$mLeOBK2pK{rs-+YIM$TLn}qoVZWxQR4Qj&Gf-*v z!0xvlsE;+hU)*H)m#WmlwOt%CERgKhC*h4aN$@^t8~k6dZ9#>s$;I6}SDk03kk_-` z@P-v6#T`)7qlkysYHy#$Fz>eBdhs~yfdAiLDc|D8@nQ`LYz$MSuRk+~DM^j!oHiDO zvN0={H_Z0rJ0lErgW@x67zI^V74!T1H9q%SYk zNaEY9tX4V4fmuVx5tee*KM3tz0H5@A3{%3%HFsVRKxLj>_2csW_CvmfL57h<3B!O3 zdbv*4t~Nq>(yw=c^$eHro2n3vxSuk#FKu*Rb*Xu^oqPVuyWG@e#}uONufFN6ItE;H zHGir=MQ@sH(_QUMA{5PncF->M7gI8_Oh?>rg$XtnT?j>!`g64E_>SW`!RAX${bB{w z5f6EAH{{ZB>`lg&<8He%cKpRYCI!ZR19+Vb-<#2?aedX>PhHqoa1UaLC*5tj0el(X zEzq4*kvXNgz|A5urjD@Gzm-FWg$w6Dkl?RRWEMkJyuj|p(vxXwDqDQpnv;3ke5qbw zm(i1@tdVW>5HsHeA-d$545)JL;>X&>q|Hq9hU)kZj4eft(~BW($J)R#&0alF#S83c zgt@eMei_D;eiyWJKK3eZ3&wW+tf-VBa?)f*)$;&ss0eCgeK{4 z1ANKbHXh6$W!{C<2sd%ngQ^8j%E>>C`0_h0w-K#j>Or+a%QeDpe#@rc)j6r`T5Nts`Qu%*x$cI{DE)*sL1i^w1sHt=9j2uX{6}vOI|p z$~4J7u=_apTEfUS*Ccx%Zf*JT`jYAdOAQ1I4{M~Pi=1I0t9iU=YH`4CHJi;}3&4Xr z%m1S^ks<^wdKL4t&;Q@JUIc0{LJg3jy}ip2Z18cG@#Hdv6D-->5pE2lf_t{^Q$5^y zoeeVn^ByYL>=(0e$3IxfhKK_MM^6!GWU4_`l? zX+7eha}tjF3R-HtSUmI#lQvlmNQ5W_26K+`?@bd)ZWa3c+aA1Y(gt|L;MUI}rJkL5 zt7#K`;77b>uU99JD`?AhPu4Nf&J=k}X$&_a@ zkLZA)fv9m1#`o^|kttWiVMV}Bj^%;l=gLZYhgB>kTUm(#Ese>3ZH!&{m%_nD^S>ti zq1+Y*-T@I+j!88WNQU_C!VWn4(1q&M=eJR^dk#~n^1?poNVNey7Ks zNW$clV%zMN3>gxK{SPEj^xD$j4WWeo-u`s~$8qlfOL@PsiXumY5`N6|;#v6jo?Ic- zBj?SP%;1Sa*?wm)B0|<$n@y(S2~O%)TtNfuUiRnvrX+8Qn&=!|QbJ2xKjhek5wFmw z|J8b`-i<=mJoEopX)Z+#gwteI%hqQ)sD>~w%8!}`U5S-`njDYU6XGaf+bP5Qz5YhV zEcEqXIL72&KMG~K+6pfIx*d<6EOYZk~%CXJc{EH5W657{JR?}Mv^)e z!i5kAf+bJUG`(%7l~cX6d)+~^O!&F=SN?za5n|wYvK32B<5y~%Q~Ow|=X-{*71B}s z4e&z$t4JCjMfeeE!?=O=2JIy-^hewVnc55B;SJDb+4fQ87!5%ZxLbdzh?Ujv9_TMx z|K>j?YIwIBg?fXcP)P>x5Rw~!+{^dd)vGa z2UKOmTTDQ8(AZNWQbDQQ2#U%rnz)C4ORONhx~ST|JcOgp6pLPnR8b^{&uWhqZF z%3%QmQx9hDRrBpvj3CMTGu1?a709b?&t|zFx}y>!%-+Nq>$;tnqL^Zw@n#Tln~GSA z3$*qb86&r;sQTj7981WlDJ0QHFE$o8QzG|?UXVDG3;<^hN9HAFWR3|uj0c8|Ac;(l z_tQZ~vkr1-%MXZmQj*&+1_um@9axrMjy~>$eZNZ2Q&4r|vVth-Im1}BgVy_a`6^$J z8{n5(j$v-C5*rX*jcV$YEvD{VR-TaGo{lB2924YB0bKMLFDwxW_z3|jQJ4{6|E?-o zchh^x6pkmZx6rIy*HT1KXinxL0dK}JkyRv+RH1@X;L+xmAgyN8gt3lK&;E7$QyYX@ z`b0(Xd>f$n^@T?#&3-U{-;0PQ9&JS9Bj*DI`8@RT_DMk_I7ZD{F^B!|nmhSBF#6W7 zM+_#ZN5J``w%$E{;<7 zyJ!5n^RJjBS@}vw|8I?-rD#f1KOcuF#J$mL!H;KLASV#E87=mfT#CpoJz+8C*+~J zvoH{sP-Gs#F($E^%P1z59;ih4$V0qb3fO?rpJ-{`L?V-rw#ih~z@zXg9prVNZ3)b( zlUsAkv9bG?{<0x~|3?5zGH*ae@}?5o;ouU@YcNl$?`Ug8u>nwQX;#|Yw@FEEcYAwog*0ar$n@&yl6j3qEArBnQ_30*d)g zur0IJ4jK|b<(EyJi+-_kZ}Muc9XbChPX7=@{cVMuNR8>`MvxF6+K)CP`q$g3Dv>NrW1#rZ`nByf|r9239o^40Nn*nBchB z-)wVnjr&W0a>s-^6u`pJqpG!1;C6{j*}E3BlCQVFfP5- z?RRRxgm(=yVQst7<-vK19jK-W$5L%2^^x&@tP}4fb~~(%x1y3)z}e7I(WQQ^2le`V z26YN(2RRBQ)x%blBa1W0!hZ#`k|_|=;aA&y{sHO(wXqhTtRbSpVD|1C;8wt)pJYvx z$>XqCeo^B4a-9a>QY9ABrBp%&IHd>c77J%UVNh0kZ$(Uei}Rb{KE{^Fl)nP}Pv#^5 zNYTnddI)MV=1XZ+RaCPI+(rN!ZWrdlW;;_ax~s#33GC+c;Xqv(LzW`lO(Bz%@~&hm zm38+@A3GRE6=mx6>U$0-U(0~J|5RX{rO}lF9i6MV;ise#+;0Jwh&E~~w3Vx7FtoCI zqYfAyPV*@i-{r`H-Kt%7%;iAha3vGovH~0oRyRQXk`754=iUrL?%k`I8XYbrOSZ5c z8!{^YYO=q+dJMb>mO^nmq@&1cQ5X-~_vUt856MptKNOgfmW-!H;PxFs1#E-4R}RY8 z4b~2S)~L_Wz;tBMl)^CVM6(e6{tp2d9X_A1A+V-0N?(zBfny9hlnzW)7Fd<47-cW# zbo^J~8OR3TqOC^vCvop1aapii&SyH-S3a%ictmhVA8ib&bH4mW?WTr?y4NGX8a>pc%8m;;`1MdI*M zee9irgB3qK3&y4Vd8T*vMdSO|$?~i~tm0V1E;F(=T`4+qR)zQ@M_L6iRi{Zzi_)am zR{IH9)`M2mc59-HO%zk}A)gd(fS+F6RLUAU!?=xw6F}iQXNzD8$>4r5b4?=~Ngqj6 zm-ff#26*AJbnl$f`v%Cm0banbZg0W3RBr$(c9>S+{%#Sw=yY0j4gcwR-NL*{fK_eR2H%Kh!k zy5Ff*H$a4L-J|A)&-vVPWOJAms_U@4Fs%2-l_a#_tKMY+Pa& zE+VAd-1%>Sh`?A?Uz&r?@gi~BpnosbN&(MTomZP?5j$43p`6+b`yYgU#F2hlYa}d; ztg|BimCJw{jz^Cxsi)dP(jxdh>8pg)ddNzc7j6J1AXIxD{^Pi4%W>HS1x3fjsI|d3 zgj$Q!i*4NV;JuOyxF`F|HB0(gSblt-RK?bd zg2FZQYne9Im)}ApN2{B$lxj1gka?o43q74ZDuUE{i+SHzblDS7RztEHqPi@>c#wEg zSDL^h18Te~DL;L=rY|edKhJVL3GOU=F|_$iH=2v;2DoGCYA3?ppc4?wU#r?Ih){f3 zQLA`ezgPkO&7BhBP_6dTG;8aV+M@0G%j8y-a_3h{+p&Lxv-ZjV{vlf?$P?3@?!ma8 z=XDgeSqQ8z7uZm{Rc$oF*iC4?_SdlYo$b^TKsNKMUfOGDLalVOe=$#*OB)*aOTP;z zR6Wa7s1>C45R|7+NQ1ZCDl0#I0fbeCN=_lOov4nkeDl*xEz;horPvz$QCSBU8)R$^ z>o$UGeG3hGk5G!P$YUBFlw_)t@Pg3i@K8-x8 z&IpFU1Dja4h5?`Cm$f2MGvAm2OnZ&|f3wMWXZToho0x=SqLJ)ro2S=U;^(>gbWJSjH(SpY|ni3TaupB3+!2>Vg5adP$Xj)6%A9sS@$DE zXSjrkOua@#KpVzb>S{c+^uAy=8xZ5YK!A*i{ZSyGve_SBf11@D#GXX2{fvH*z#$iciAD2fX;(JDnvaRIcAnNF?ae;v!GyVRZj zj}2E@{oli1s&`~+hx>V`T&F|>Wc!4CVP9VoFP~Z1`$ZKV?Lq_Y6mG#d|LPbf#eV>F zSo>mYY?+U766L^C01z8ayX2=bId=!Q(-vNf=0BR6tt}~5>CwFO0$1+|{anr0qaA!W z%DE*s)1g3utl(1+e9txI{D^FVov&zrDs8ODH-Ih`{pl*I;Rc`p4k_8G@5+)oAZ$}D zQLa}JHM-3DY3y87Y1XWlRfAl=d$8Q6Z-zo{0K@T1(dy6hd^743wLyP@YYl`7ddGUK z+Ku{Ih22aMaRUDkB5sP6j}Q}nmg}OpK#zFADhMnTcX$<`O$fRwtg?0XEYAo|D;z-osCy-} z`wn&eH)z}3!QS_&*ynGS1aV8MN9=j(sqzbH>Sv~qpVhc-Dljw%jWqCm#^Pm~_Au>_ z3zvFD_{fiM4&miaNtmYgJV>pSbi!1duS593Qdor;1X-KZCw+%bKlZ)_jN4+c%uc>D zPN%7&FU_ss%=4fwZ+1ziH+5bt=mrS9aJjy3Eq*N;Wtsf+Yn^vsAnD@|D2~({Kp0$D zKF$a_TpzDSEd2^Uky(7`L8H}j-EiP?c~>nN>*kLPRD5%P?FQhk?C<-XEQ*cwIQ2{F z;GY@I+UY4iGlh&j68`ca;hIR~K~SoOFkchV*RX`;!c<03(Bc)n1wxuNhcpsnySIHl znbY3?%aZnP6axcM%pv?W3%4fg;H4H2`HN{O_XgnhBjfhn%`N42JhLb%INthP*SWXV zRo63fKk1=7L~ve^^&g0y;hX|E8WJ0>xt0qjH92a`JDyvXvege%i7^eYp$vGX1{LZw zq3dd9z1nX5us4319%Bib`{6j;p4JLgnB{&|FVTZw+9}r1TL<_VPOab8wiW$?9y+<1 z6e{%R1*a55Qv+U%7PF+q;c5OpR*xT3Rg>}Ytnnbj0JFfZchAJ^@8Gn_hOL_F=g2ij zi?9@BQP0ZzpQ>-!vAy}`p@T+YGeP~3J>07p6Xhj@V#yast>|O4-1VJk-)!V*qbB<8 zJ=-vOEDe?xPIqcPrNVUJ&e?xZ^}$CdrH2g|@4b!NbME;SE-Qi-FKw)av;pRX#~|cd z>0<+)!PVU3<&dl|$`j0QglYi89W!Zy_}$2HHWN7T8uRX1#m}ovp{#iX=bd~Ax->{o zdic)Ay~&C>gMtGX(~iFekzQ}eNy|j5NwR>|d4c8i?bpShGx}YPqSlr~q70UQCp}fA z{Lz#9!$iVvRaBQQ)oI{*9ms^5OXBxIhklpVHe6I+rnKhF`x);E@6_{dpsuQN#fQZuEx47_Uw)wO6dMc=r7SW7- z$xQ_nrL>`j>+!l@7(V1rlapk(v~uuK?eKy%ix?VZU!ful&VHrcQjqX0Qs%XSXt~#w z!j-S~H_e9U@$c{M?9gSMVj8}t3vZj>aSdezX|M|b4`KbK_Nl*YxbNw|XU1C~dVvRg zW-}O^$b$J2f(_DeSH-&{(hNq;h&4|YApm%hp#MwSGv}Zwi~qI-qfq=|bU-5WHM)Yx z-Y{D%kZIGMPn7g%4g+mWN;g|&s7hy zU)l9#FjHomYEowFZ&zjmmX!^qDX+xV+PQk)8pkL>SAEwDY45I2N7}r&)U2oboy&UG zIdIN>-3CPa?n+y+jdr+S@;9JbddrA z71X>W>?|TGz#wy(t1oG-!SZ`#aN1Mr`RP6-c-sQQ?&(6wKCuQ-M`BBn0`&$ zSMT=K6p&JU+snwmp-p>nNMQOSJ4^^U-SD_$ zZ5MZIFuVVeLe=E%GKwJQ&Xn@t@a@f`&2vc$`h!Bsc+A@+ZSCc5C z4C|waS3)K_shCLSx)fb!gCv`r5d^86po}=nKMl=kInf<(WU2Vd=h4rLtm^CC>9K6U zm%Hk#MV@?Za!La$U?JW&f|AV~@w;c~vw_j{zyE;L4pC?z%qJ4efOA)DkKq%D!B-SN?I z8_wF9_W@FTpC2edSTCU!D!l-_>uYD{wwXa7pc3L760irlQ**c_R%PeWgbCn(yFk{# zaf^RtjfbY>M1f;x6em`@pbf17o;W(c7?sV7sKkL29Is2O@3>xe)rEU@wTvbqe>r{H zm;=SZlivdEaqdQ-Fu$-vC{$Q-93Xwr-g*5cr== zUm6RmQQ!N_u@(8|r-Yj04WM{9hdF$X1P-nsosH+pBR7DL_r$<}P~0K++FtEj@t>xT zqpRHASO*#V|B(@!l4@#VB(3}}CGvi}N#Hu(=ra>95~u z6)SNNCgr=$RSw=~YSRKNUR(+=Q?S+AN{~w&|zjKL-7xoBCls-1D zhb2OL>y^j=+2do`<3@nYQ5ia@#0NkjA2Qwkk0LEm@zckHwAj^)2*N~}D*7$KOc4`~ zr3ilao~MEjkD8!-#qJ3S)rU4RRj)^jLNqsE97iK*9%tWO6Q&WqygOYjmL++OrY2zn zYGq>YGo>*(_O@*m;OB*%ijmyE=H|4c!3me0xEo+Mp$E!*ka5Vp=+wH)k=2+6Pv+sl zC}3%{l$oEjvaZEefi7Rzz3Mzxj@ce<4!M?{EO|haBc+vqH-(5Zzqr%My}lkhzjih; z5GDJhX_iVfI`0OkaiZ6brq*YeK}h7OKL@^8Mw4h?(~s4XA8h*-{=!1ernD;uDy?YX zrVzp3&_jsAg*@s87?(1Qd2VU4yR3TyjRj?_Dc5#p!i``9tUGxelQ-31ayjIxS{KRRef1zw+i=a zBoxX)Fjk>%Hn69nyO8SIrEl_S)$Xd3n_-(h}-Z?V{&EJ zxPtR=#?oLiEEMf_8W!pE^tV@wAxeT$)Bh1&28*`@zX-S&5IoxLDN`34aE!i@;C;%+AJKAe^dR#SI=*AnUz zW5vo9Uxu8%r;Y~pKkvFAAF-y&dw|Da&;#7~hN|Ev;?a^{Oq_PiftS6JhGyvyrpFLQ z(1MUD`j(hXu(l3M7|(Tsvi*Ct9yP_22tU7Cki)C+QqFE{z?z*6hGuu-r=XMIFWVb{ zp8Dk>7AlfpVIH$vBNn*}V_mtJa#8E{BN>$24g%c(Q5lxyr-AFzzTw;J_o16=HGmuC z;?-t&8&|_47qG8hm!uj(Z4w&`+1d=(7Mgl^orqv`cH>xXv`=@YI>Oa0rqS`Jt&efg ze6_=6dC&9^N92B&oKoN(LC9%MZ=utjP+=^!L8(Qo-LraWX2UYh`t5K9%M%hKAarR9 zKlTb6IVID$c2RT27D!+|eZy@JtP3??{Z!btl-YhjgwJK24}p<@g|Ho( zRth|Ra~00u+BcyE*!h=pM2J))(tir~vX z!ZDj5Vrv}ok9O=D>t48R!#GS(Z_7k{T3?q~b{z79&pp1p34ihRZ2%byNILF1x+*z* z`1h+jOMGIiQgnwb+?7{iEp76mSQH8P@;Ve`HexJt>rFwHxj3LgV#Mu}tYw%W0}{2w za+r6r`nQRC%#Z?%AhIVGlg4mDKRavHOF6`kV6$NH{X1#Ui`7 zSiD(WToOikV%4vVY zes) zwC+N8ExIuyn!i+F5*U<}9^b=&I$8*fP|aDBEKF{vf83Yy`0m^C0h+r40$>_#^*-ZZ z)pdEkI>$(8*A4J#Sv9>7v29Q6a`&1A&VjNk3S!ViY%_d%hBSA8mt&>W_ zxIhbqaTr50wd63Rw~roBK7Xx~E15}dtVx$C^{1&1=#3=JS$w6W6u!NjMyD-NRq%of z5elBRan8j7AQ+SAY}!9ODTm?{ABhSG-g3*m_%vu6`SaFtsVXTOxv+Pdml^|T;Y8~yHrTD@fW5L6>;Qyo(i?GPygzl zyXvYt`F3ubsWcs8X^6HoEeg}2U7v*Tc|w$@kJb zMO?k?_0EQKnjl8{B;?dmyu3DM9Sc=fWV->Lsl5<7X7l_Pld~>l zZB5fLdUP!7f?RE_(8T8u`uER9<6-fILePm85OIc2zX86fjiEz{`_Eer)&3rVOTor2 zCSwTY?N&9`(SIG6A}_mtEa&(CaZU~WGy01==k~Y_J~{}-ZF$4A{dvtGsL0}osLgic)zyzPv#Z?Zi{gDOROnS# zMpthQp~qOtB0gwbz6x*ao4a@eZVv%*rxuK_jO)sfv$`{@(=JjSx{r@_^a)HY%8 z^TdO`Kv$imx9$rZ5qYUM0A?xVbYh@YZ;ytCcTaYZ1-uq7B+tEbdu_gDy!39&`eh|e zX8Ebk9~cMW`tBZKH{X9}p#}BcuZ9RK|Mw}Ndp!EkS||0=P~3jTNm@@7X2vh~hacQL z=)roa#y2o?J)n8Xw_hfg+CImf16YkKNBLQNYu@dA`(+@2Y3yw?1&Vj zz?7k!$)CciLsd>p8w@QC%DA7jJ$kPCrLs&B9NZK00F55E*^AC4W_!&ON*%y@1N;nu zal)EB@U>Bed_Si{EpEfARdacpM*P;lEu#m` zt*KIYhi|MVl3$2|dI1Z}QwWLfr3i1L-Lz;GJv_+S1$XJN_vEJ>hO{1a@6M>0Jb3)J zPRtEZ3NP>6VQ>ns>J0K}!Mye>cRu^5jqmAM5Thj@Aohf$#?*r>T*k-d`?L#4pK#pu zP2PR+`Srppaf9BO=e~lUDp!@{wZRdZ7`2wtmqJ(y$;`lLrCt#rZhlGY0kHC+H-e_P ztY&VE(sd*?aO{0&&^p9aZA2J6psd4Hz7$J8x5buFKlc46gax1h!0!*a@@osb&KdZ4 zD0CK`+R9%{=w3~!>8~FKK#3pjFYjW>m4(U~DFVZHoVH7|gL$j&8PdXOqt&;qLQ~`) zAV@lEQ-`QP`%4J+CsR*5$gOIZI8W)J{Y967(ZfCtHElBijjlnR#I6bJ>MPtecO+4O z7XNuv$fF0INK^SxdA>c)m_!8KqG+$~iaBw=Phe})=QCNB)`1rCW#@vUhqIf~hfIN5 z93SpX{`;uCd^>xEZX3oJKekjR95R+(185-)BQ5ib89}V}Znc(#X)F?`p$S&swx}p4 z0S-%v5KJWYjZf(Md|HqgMW6-X<0~Zz(W7+ts}u$y%$Ewhh!E_(@@57|;J?+v-1Kx( zJ@6KcQcHXMfpjkS3ymo+>A1ouJPFP?zM^eIp%c7es`5?pq6be}6b8u@Nm0CK>?=JS zGA?oWcaF+KQxz{F zx-4T>S=C<73g9Uth=y9&!XjwH07m;q$;|6QvLy+-uy0742ko|Znwa2eIQiOujW2qG9`+L08S7rClQEpQ= zz=ZQ}oK}vqP0poO{SdjrP{#S*l^6KlvCkg!C12q!KR?0f&*&j`R**cAhB|7w`7Tk~ z$#C>r7mQ+Fp>GK1ulhuVg>*fJIxAOo;>dVVUGrDwQ{3-93}jqclU!Y(hsW_9hVONF zMsy$xhi3)P36`c{YVdc%NNbo$k~J4c@?e7QXDAQk+QBH1C(WHM<9e?SCu^|fByHG2 zsB@=tu-7;+TzmH}Uhfi+-Bm5e&7HpKh36&tchdj*a73Ghb4FCiwo_6wYpHdhmVd?Hebib zDjnuO8XoVbd=vy(%%(O>zLrvbh+c^bDA#{%WIbqn$nI{c@Oboq15dJ-%p8n~7KK=3 zW!S-0-w9YLj6`omFbO%Xks_o^a32#A>@8qJy1ck=-1fjwGj+U{>t=92Ij^7iNn$0PWl_ovR$-OyAQ^x)xoHp+(NL5r}jGPglR3sS|7HSq5K2Kpl1=ap?PLwtI{|ClG3q;@}T( zX3klBDCa&L4&zv$Soz8w{!To^#I{^CF9@h@-i+4y(9fN;DORl_38M!jC-VSHH)T)3 zw+S-{qCgR)J^heWuMHSA|8ZHa?Cs&(j>lNC#1I?5GLS~b=|or(WGD?Nk=k85NCj8lav zi>X@zB3Q0Rz5`=k$34>AGNFm~A{u5Q3)wPgJ;xK*j~mWKds7zL1G#7)-r?y9741y} z-)H%mOr&~;j3BHxbwtPM3pf64j{6lo92^qzvZdZj6TvLTP{JxgNmExV1b_O%9oVrb zd}y6z1HCjjHzoa0hJM$0(Vk@aD%9i#z#;CiJ!JeLBE!s!Agb@GFVloQIUWYIt@8&l z6AGiHG6@?nrq>D;GpdSKAEBiZ2^%oR`8x;57mEvf_U!**gEwHT=Ckg*iWVf5qr46J zYZa@AuLMwmc&egD0gr0I#BQ;Q$ZYISECnyOj~V&lQXK%<#X}kZ3%Y{C@}xa$1Xnf* z_b)6NQOGzl+*#By(mZbazvM=eM}1)RAQs2aN{yxLdksol1VFeP>8Df*s6b>z z3AbM;>q2~hT;!`^uIz|c8~^jq@e(keW0`KLa|^>ErI>nP@X6m5$oGa9pXU0Yhqw?g zxMd-HNckL%A=ll#DUxdY9mdR?$YceIEMP10{qf1k?n(S{p#s<5Bdq^yymNA5-0FEUEr4 zqsN<4AodU&j~FPtf5M$tDr6c@dOtC5WbeT~<|&Wa_Mp(YjYEa}LB1yfxFQLjC*txb zj#gNSC{jNLVpBqy>yk^>PSXysq__DCYix~SIQ%||eUc|5NR(=#iH|>3B=^THo=3GP zUW72fFWj-r#L#ZfALWUzQhtZvD0^^s36(=^!yH( zYoahBsGi>8v$u?xTzi|{W5?N|K}a#TNh#n+@bhd*sy1p!GdxtYUyl-6{NhVyz3D30 z97ygqz~o?x2Ju!$!psul;?S6JX9L^M1NSS|@4F&_^|f4iw|jgffG6gtKm276WhU6q z4DazV%3x{W{r7zwAkW%C^fmglbk9!QGy1;1_%rx-J~BiB!?^rr^h+VWEg0A9Wi@tN z@5zs&K@l8237OwX!d07>ZveXRMk__Nguni^t5Jycmxw@+LI;>Xcp5z4VnP%}w-=C7 zTReFg5UE<|(J$g7A;_n|`u8={209x zel)Pl{nF)ATkm$4FPCatWU~wP@q>{1kOJvIV`;o=v{p3T;tfFU4VNu=iVn+`!}k?g z@xid5X+WN90$)M_bW}cYdyl0EnnlPvQsg`YH`vpq>4)nBI9`?wW4bhTYYnJ=pc#y* zwcRH$jT6_QFLwZ=B`)3HjIQ^?l2MrbnMkSk!%|!*nVOf+>RKases1epFuD2NW(3*x z>$)BH+KK6!BScyHv1KeTeVQyV`DNM1SPF4ygZA!Pn__(b(@fsbF_xslGBKOMVJ?&R|4CC+Ac@RO zn);b_d!}k)0@)#!D#S~zMT8oAyA!8d`NxcO`X4->Kib~m7NH}WP_eh z!fpU+$!g0rF^5$^>vkh&1-QVM_?=Bd1$=6w>uN@z8mFRwgJ2xrHoQlNM5|jg z3NG8Ct7_yH#;Geti4gLYp_U3tI)AJL@NNpa|7AQAO2*wC892NyRkC-b0AW zbl*$HS@4q+TZT{lC%VU%lIePyE4qYf}4n_mqlGL{1&y*A!y zwW9T(GBS+-XKy-q!-Erj2>7Tvxz5VOzFZYstR@Ti8O6Zld7?$1pY-$RUiq>`!$NYw zsQn7}ntPJQ!+urDWS$_~eN+Vu(Wx<8@{E#SzK!Mz4rW~8?(t}yF{p8V^h~i9zQAC{ z?t4aK|L5!w3$-w^c#u{)#=*5vxM9q8oZfa9I2XAADE52D|0S-z z#eRw4Ue37eHO!kdIq}D;9phtD!cRZ6S?te!hxmu+^G-07j&s1{U|d5V`J$(+&uP7n zmU*KeL+Hg~Acd3Foi)DiPu#AzGGJU^v?4-P#V0JTJPYII3MQtNedYV}|EfF_x&iDF zD)h*unoIXO)F9nxMXy))Qg{JX(nvHpBWTRbj?VY<=!9)FnXHG3`Hz=WI*TxdUsoNz za@H#oZ>pO3Q4vq{Mh&f)`43X50oh@jtb&P&&pCY>l3Y#LpN6qdMJq|>A#L?pspl`BdN}xyi~h=StWR(;T>mj zOZ~4F5LH_3kT+B@s0=6wwz(X`royQ2^{|yE28jP7eFJ~DM9!+KyT(FHbpu2PjVoi1 zYUkIw=x*`PirfH*alb>pN3+;h-}stXWPq5d7;!(oj@@vd9|ewE=6_!!7I`!%i6U<) z!8rSF0R6K%^~MfovGq1Lqx*xeN)H0%=cLm{n!TggJ@`Eh!px2Jz@!L;8hQ@Dr7uRJ zsw6fIySvX*;u6)^=H9>0Jx=)OJBfffBrhEbso(hd`-2j_)8lN3O=;-T0>Z|rVUPK3H z4QlyP9ZTbDGHGo|EU%X0s|hb}3qCm~o*e&B|By1(Q0E_a(1z8!wx-WPOmlwhk%wxU zFwU7@^zyR2qv_Ja!ILvdu4F##OiP#>pa$?iYu*{=@-R`(vimT1&n?4(zq?ExOZj3~ z;ry^ncWB-0eXs%(S(eI1>OwFS4lEvJv)Lq}MCE!FlW9X)N64;q_G(}0H_c&JKYrzf zxxbIUmVEg+-4pz_JmGxdn(;TyTtITfKriqVbjuw$`s_Gy_Twa<+RC1+l)(t z(zO5)Qbb_1H)TRcDNGLw5nUndb@%C(_i~Zyu9ol%56UwFaoVIhi$>2LTzn@nZzJ52 z&?tzUCNvw+^lhW6CM?)HZf~8UGo$=jFw8@Fj9pvW#*{E{pM9^f)TqIgMM35m( zC7htj7YP}dWp4Ylku39es~Kxh!Cm;?e{r5+iUKWN0GM?P#z|83`NtPd$#G;;VT~ms zP=44U4WNlf2pYc?RUejBq_TJc$j4YVAD3`kiRersD4_ZpLAoZ4fQ3-1LQ(i*(;rR3 zLvUJcvdc=_ams5(&;d=O`#jfP@Ad0}wBdVPk@3c{{d={IdQEe$hK07F<P8yKjTB)0P9RSi)Y^+lq<+Hg6607(iLi|Y(~Ti#vK=|kBT;6Y`gdMztAmxT2K+a z)IkCbtQ*E59Tm&lCh5Dvpyt);8Qu@K+vIT(tJMw)Hl&EVEH=s<6q*$0gyvLtq}@aC%QF8D z_sYX3^TsE*{*4!rMEzfj;~z-CU%0^y^3xzK(lVz~jKNdth1Q;(>-dmob} z@`Avty$^j93xcX{1p+5n$~=37VeS(fv87SwpBtZpjZ}vE7(Myp9MyValP2wzgLN3I zWICW3COixXy}wd$^y(#eceJmN@rb42E!;PSPt)ceH;Maey=7NE9$M*E)IJ#po>Xfs zDavV2%t4X)`IFU9*9TdNq7~#k%<^YC#LJa`Ng{uD*2SUkJ%8$h#u}N}yHYypCOpw$ zxeW=>fMbFqdf_^8Q4H8q1HD&L^sTT(fWeF)d&)2ri4_1s zNRE}$A+yEhDS))c@^@9Ucd3;afsXn|B}9mNpyMk6`{=(F8tPt_@+Fih7%1&k%wq(; zn;~OFgh5Ruy{bsyAtO`yQUZ+54_nuuhcq-LejH*XWpSm_P2(gG5LgJm{Dgoi2+c2i64;#9VAPo+)dLI#@ z5h@?_{=|N=k&85?M~Iwhj>Q50L>Kf;3rtB&_~GW&nku4`Bi592k z@k4wS6|GJM&tzcp#9`LQBW|mYHvk5Qb>!Jjm*5Cpab1X|tIbEIEL#)P!B{6VfBMiy zmzy-%Esv0KFsXDxh`AquxUx|cnJlzAHP!?fQ_uUk^bK#PS?K#a`4s*abMG0|RMc(@ z?~p(Mfq(?1gd#-(C{i_{ND%2Qbfil!(nYBfKoKIniJ^twL6BZFfD}=BQ=0TD3J3^D zxr6sT=X~eB-??Ml^Nnwedw;Bzz1G@$?LT{G&o!UKUSn-9m5g{e2CsrVAfpDq+x zsu)l~YfYXdtNn1(MS|l;C7-G;y|7MDf+FZ-onM(ddnfQ1L_FS?Y?Q^Pg$LzkdP$GQ zPa@A4Fo?CcjcIQR<4;4ncT4G=7((g3Wa*hxn}YfU4RBWMHK52V>A5+eL;ZDY;@%1Q zqZ=Hf`!8d%UI2D{IkEFS$ND*=p!RWM*n2rCkLUhRh%{}F#0Q`0|9VGv*X$Wn5f?}L zej%kY@nSs}>IIcx!+7t;_SUv!Ia~7jV=2%zmOuCMZrh-{*G)OF`JyoSJtB>Qb>osA zYg<5t9QDjD)J#uVi#ILI^#cIi}fzyJxuWvHTy}%sb z2ySNyYU6Io1@;Qko{7gG!O5&aqqavzmtn0U#i+24u9PcQkaMZ9%gsWln+|Y`F+qYXkCOH+hjBMeHi?UmPW&CXYv#ryN!I0u z){T*md%mt(_57p|1Utz1iK;EKgV3Diz*A3W?1x!MKp3GGv7>TV6@G@2TrHM8;g3VW z6v7O-$JOZh3>Cif#17;GPxm?y4rMM!)GMx%Ihd*2$^~9RTC~P@=!k#A@W2PY^5)&a z;$xa%!Qy~ClL3y)l2LyjOFFYP@O4c9#~ifAM7pawLs4$>8rIeJBN(|St-`(uc7k)9 z+B(Lsk00u)uvnU5p>&V;p+85fzLE3bzo$$4`49Y7vl*D8^~7~Dy73*$H{2x#+(C~7Sn(qEyA9(BxWOymxIT#pCzAt)}?`d zq4l>Y&HJ`-rFzoBG;g~{q_<<2YaikR@e=wZV=&*U-u_$iBZu8=ik2Z(Z2K>2?+?O% z5f7}F|5Bo0OSi7fmw1W@bEmIkeh!H87@A-Wf03UeGYU=2SU+Nbno-1 z`?iZeBE`RAp*cQ;`^xb`V9wv~5BM2{OE6E|yj=RAVuh+G-NGJ*~>lnq7H|%O!*2e;( zOeX!Z9~p-$aR3pBD^Z=J?i%xDZcVB092{l9vp9y6%|hM; z`mwi@S*t zfjU>GE)XMqnTrQKF^tzbWvqVdRGRn_p+o&h#Gv>%jto_R_^bD6aX4-eqT$D#^JFFO zS+ed^5}F9RbDC}SyM^mDVB03pw%0Ro_Sxd;Jo;$|%RU&t7aOH_<2|e;s?I~cdqu9? z&pk9|)3-Sa)`gShSCgUJA9}z+?%kw6$5da}ovA#q5!b+jfY1?V4RN!^`p*@Z4zcm?WQ2_B~ja(daR65yFFR0qV8j1dSUMvWG;N zE`D8`Wz#S>jv>z5!qR3TXY~?IUra+(`m^NLhYP-+$W#g~%QWQjfv1As3h})ol9vK% zX4sZuh*1nj)jhS&*QH zPHZ`#*9VMv|5Bp`WLU9IxRDotO09&?WrGO)1SFa7u|vL)BxKGy*Bb-A)2h@JPsn*n zB!5!Gp<$oKo7!iXV(AYgsA8am@*D5>;nh+5B?{hvVQ`dYw=8dP+UvnC%kaMCfy+ z?bW;2Mu>A^J}f+6Mfmq9n!6fdMU0s*k32CPVe?yM`4Nzic#{N4uSurWlwR*F9rH^) zED8cWJb2*Iuob7tKtp1sq_zFrxa;RR0)Tfy%Zv#{-V00A&cqNCCu;3_Y@4!rW6`qO z`G6pA{ktCuyQ?XCB6AE_)diaBtrlsGjwc} zZp_(?PJ{=l9EN#cCrZ#lB*(LbAXLmZkjn#i;6y!KJ{gXc9C=~ZEvh8ose}ZHsw*-R$?&2|NFXN#52z_<<^6jT zj|2)viii{hQLP*tvyzjjb|)Vof!EO6ktb4EC&Ev3@PIwCQyPv1dnyTxTH{#M@t$yN z92;I#D;Ew->)@XtJApfJ>x?Mf1sn@rRJ)UzNMR#koe}GNVRIR!SEYmmHRQs7wa2#O z*e)hkjdcdxE~dPg<@U(VmJ$;5!s+&CYVHNxCjSSzelk>-p?>VZoUEPGmkA zj-Fb;QyoKvHxd0ujUDk7yVEmP8m0TT)--nHuUdh9;HKf((y=bwAd83HXtB1MP-`aAcU)37LB|yZM^&+td@S0WOgx<-Q4LEP>G`j$JioSTIKXX zkcyKNC6RKLnCvCk#>7Sq4EV~UJCR`!4>{__cl`NkRZ)*mkz@pgEp7S$17c_&GU=ARC{5 zDl^qSEVCs`2z~#2$?(yE+DxP5Jr|0ol!$6h10vnVcWfvY%$|2<@Mz2Khx|#j-{_r* zCm*Twn_@O6cFUv1O(8I04euWQV=Tq~Rs>fyP0ZqOwLLD>OUPtGACHBk>ITFpYI?dN z)|N7ieeqEYl4uw_gCYJ z86r9XH-tzJSFCfmadL8Ul31KP#FpM4U+nIM-Sz!by0*z3TFBo(gbD7{cQg|HB(*P9 zS`yR|IPvK&?X%Ee@SxEpn-URkM0RdGm5~yJi6@j&CKTp;j3!BbJUjR(`kMqS70$X&6_z@QRw4h-z-`zwGOjxe@hB703uSv4<#<0bsNKAHg ziuP^%8iYo+Z6xS*T<9g_;_y2=Ge*+~5PH8phnbK1i7`m9Oca(}wu@GR&JomuE=~EI zAXuZ`=j^mYMv5nGVpy-NF+t144j#hquR`{UtAS4oZzVUY#X!)vaL}6oA+za6kS%C} z;Iv8!5ri+bVY$>A^4Yu33=Y(ABoSBQi-3ZW;^)>lRzD`jsL?J$I}SNrpg-7B@f354Sg~`L@2dy zK{*QHiJ@bWEuLvC2$iG8I)c8QtmpZxBr(bpDecU{j*JK=!4v!1mrg{-eOfQiyVhQM z$PlU&g80^fptb8{Z&29>}36CO0ptq8-zQ+@9eYvOk@_5iF#JF(dwtL41Sh>lctv{1V z!==iIr{rV+<`W6)-P1O}A~}30&usd!ObU=w1Af-jv{y0>K8S%L46mosL76@{N?|FY z8|Dnwnhj7;vda4?BGn>u=Z%gKb>}68hiard`n-au~hI| z>@=3*S-1~o-xeq^omVXhyu(;<1c zDo<2y5`bohT*os^|7&aiUDv^LKrQX>RpoPls2O_(E;pjAmHMEVuyvUCFK^h*Xc zY(}$hsOQ|cGc^Go*62REu}k$PfO4RLA4en`%a(zCVi+E{{yMW(%Sj1_F6g^u;kj3G z^$s(F!;wsN^-tN~S8-UpzWxLY`=3we1Iv#)1N|Vqqlh!Dko_(>x>uw z{j3Jm=pBeYD&;;nA(t6vnthwgC24Kx!UJ(*mvscYD>nabdFcFc={|eUfOb;IalCoZ zi#5Vl8X7%dsb^s`S5@R}5?&f?!`fnaC7SPJG#8oV(rRLYRyzPp=*@lpUZ=?;&`$|H zIgs(WGH&y!_N=2lNT$=lRIBq_j%bQ3@@N3ij)@f@o z&7qG-@Bn^c7|g#6qoP4Kv;d}TSA>ac{TnU{Lzb09ty)uK&E=k>o;iO*&d6FHhMpgD z03C%tHITb-(-~zGKZ_BeTABzs9Qnw44n#@5a;G`Gd#9hV1q~l z(z-wq9&n;A9su%l;Wa>NF1+S{-l6(G49xy%WJac=t_WP)RJ_Rtz*F-tY#lq{fUb24 z9?;O$Dgw$E`5F)>N_^n24RSEK9#@&%dWo) z25n8*O;oRsq%N>^bswX;$rMg!@9y+Vr`txq$rX(cOO}O|8#mYC7p~(K>GG^Xh2GSr zxKme8YC#BqnbKFjEzv>Gahb>LM$9bC)Sw1*9uE_bAoIARxosrL&hFw?@(6lme>*?| ze^20K2oG3UI4hdr;oiDkVp3Qz*+C~#s}^}7@QmU^n)q@i3nR%yT8r=f)&*Vk-4veu zw>8SeO9)EM{U^?pEh4+1SZTPEgah=d)Gv_dlr|}^6A-DaWj=8_{Du>%|TwU zHOO%G=4Fl{9f0ve&E~!PUMrIvx+bag5Eix+3=ok&whz;z9ZNkJ#MfV7Ne*r zfLN$b@n(S_tjqa&dtYW^R&e4ing#2V?=$!^i``z+*Yn;X*Ftf{$a4_GEN=%Yj#S8q z`wlt2*0pR`<*QrHHlw+$4E?|bB1vvqNbE>)-!(MT}s^0^cQ}GBDI~mw8_90(_9VD zq*eEh9#vZMC4(HN*xSIdfl-f_2nV#6*B<&2VJahTATVL=#tMYaw}Mlni5aob#3mh+ zJ_vo_dIy|Y>n{+rnNioc-sjjM$L6H1Vdlb+#};F4qSG+v}~_^yyOJAf~0XYy2{VC3jo#nHL+NPZcjsUpq6T zTNz0^-jP-b$V8IuVO+_wG%S*S-~p3=IA6oDWLCONg)vT^7wL+>Y*ea6~P0P4tytx~aIgO2**nJ@5{S2%|b&E{ay~qIbg9 zt!?Q;yEVcR50@6Vivy+I>m-@G$r^9+^pE+tL>tb%ll}OjO%^l2xwwD5l~JjFvP86d z7;iG+Bd6+FyhKSw*UUhMxp0seHUFAG4>HvQNtPSq zl(C@sNx~9a20)_^h zrRH0ZS+l&3xuhl_pa>v0)m5a12mfFHzYLxCI|zha&pzP3q69t>{u~PlaPrh9OE1OH zP-!#R`s?F~dPQXKgy{qtO6jCW?_;5IY63+2%p4p?*!8kD7G8awTilgO*+%TAj-YP9 zO8?P}lkupquPhS8UP8qgrndE|WVd0J0K`0y>nRcc)K<(N=rH`wZJ8u92zmOHc>q-w z@R}GEjuXs7d!DbLZ6KP$wP4pqJIW@-lT4#&PX4zy}dsogp#B|{|Yy1-jVcsDY(R1fO zn3q}C>sg5=kG_F}pq5m?Uphwhz|4kS)Bk;9z7s(b|8@Ne)_AJ&t{D=}xDllKQ%iN9 z2m{p~nlCo*KM?NEDk$D~r)5q$=HfcDuFMLn>SS=$`}mX*VOw59#wDwy`sma{Xj<4f zq|cl1quKR)5lO}#hn5Sspd2o1kzH_MuDBJ&8maD==R|RW^M_8ZIn7Ts z=2WLRU3)@9Q+A0C=)!Pht>*jOrDBs29(mf(_;jFxZu%Tptd(s4m0GoeW3z2GtXV*j z72j(hE6XMkp#v*o44gN=`j2f1-FN)dGD=-BoviB*^UtY(ugVG#GK)p(k;8Q)DMk{J z`aR#665GmTX*$isz=x}WF1}Pldt$@i%|xQfXunXQ06H(#IaoKbB5YwbhI`o6Vivu? z*js32->p^1t|f*-Bw!Hnrk2&+?JVS^!^nl^rvXz57VT7BCVV`nHgsQ<<-dB4ZiBv^ z^;uHA46BK+*erT?7=A2bZw=aIEQ;3NP}%TX1t#iqa6n!(84f5W2LRoL5G^94^TMv| zUl79oR$EnF5x9=L00&7mIv6U&i-QXgp(fx+gb?@h^E!cRpK{?1xo|*73E2t2b?~AX za=3LA7Np4hFP*wih~zo{7-qdlO1?O+CJE3TQUu^S|8fx0SKIN|dscr4rAv zP$AaoL;pqRmkqOh(xTZS@{L&Fv@~F(KKHnB4nK!lgtcCag(EC8+#LP?p6=I(DL2FTL{pxyAdy zDv3f_FHU|-o9R_y;J~zQi24P=AqS2et=4 zTm&~4em3&8ce>7h19{_ym6m8Sml(GCfPla1m-myQqj(#0)5-^+V=|Z3wD0UEih-|! zuJb{&v4xzO&Mf=xk@cQ0O>3XOg%pES?!I*FUUCGlg#|y7t~#c+*)ZJ5n}188isBr9 zAM{Fnr}MO=^?QV{byAcV)B&6+qRM&dTqMJ?fEEUuZ+Z=IqII8h1cYTG!D|973WbVi z)eDeSP6<-5R6c)H4KK=7ixeabKL>a$uABofw`G|PBMhfmH{i^O7QdW;qBInD=rzbnXe-DGZ2+ugyzyIz$ z2Y$_;1FXP)?4j0)^f@4}F8B9m*45~iyQ^UR>b(`LT!tURVL+ixs^!@k=T5#h;I!Ej z`R`X9__k=~_QeXH^|dW7H|h*T2n%gac$q73%xXiFE$v9`w4~qLVUAPuhhec+pbg*al~aLw zlxbH*5vcPF-}EVA4#CO`3B0b|f0=V;?wZNUBsoSB%!qax&=? zm}^h++4zRQ#PXv%e^gfre2jGSY*~RNH+fwb!M%4~L(4cT`3`yyB^Y;8knX3rgj}vY z$uMs!mL4LFN=@mLC`beuYR>R(>%0rQZoj(vrb-1d?qO~`2oePQT~Wbh66Bt@I0(PagQ}e5C8&IRx15+*!`Lqx_K82UcG&SXspR+iY-?c`2i>6L z;a6w>Kr!{Go9(#j0;z}Hav?qY6fN$Z9E>g7={dd?tiQExz}1vE#I!-A#VMZ90GcSA zkH7h^O9MALF#|5CtGAc?1tt8 z=RhsyN|;`Uf!)JyNx|CzgOH2757rk{*YmNS7`jg1%I-==w$DW;Jl028g;}x8%vWbY zr$WOrt_!b%>ArcgG`>&P{Tw{Frx&76jHc71IU z=qmKNhICis+z z1rFj6=%{5TV!^S3@>|*?W_)dtjdUXNMWb`0x+`ddwl*l5Nam2QbPL)W+}ILLZdhPFFaEuIh;MV~-*@_F$%V^zb ziH;fs+quEeC5a7x3VRPPHg@7S0m3)Tzyp%8ez!p@<>sH;R`DI9{F7{%Ng!qYMv}}D ze$l57!zCvI-8AvXr>yXfsR2GmO48cshp7%{yS)0G@(p3NIGqpxfOz)+ z)<1ILoUk7?2p$A`Cg8C+x-yR)6Kqvf&ZKem0D?(gR5K~*9zd+ADO)a zt>2UUc-U`VS1lN$LSp}oVdn^8dD+4GC@}QlW%}UBqYve%;v1@^rIg|QvorpR%<_jc z`g~|21(H4~x3B^>tplK-N z@&M6OiqpQ{BG|1wb|xGsZ%Nn2s9Z>DH*Jpl#&AD~LbS0Pj9%o2cmYy!I62tL;p>IP zML7nOuw3Jw`^avu88w(q6!XMXsP`uzMz?VVTHZ{3N^zL&5!GA z>!OrdktBfT8UOTdzE2Z&Hp84`d?wG|G)bA{+m#ejDdhR?g-5zgEr0lOR(94Z6o;b>-{+g&XFVOcL_hpuG1CeXVLmP^hqom@Lyrjo3NgT5e z#)A?yyaKNv z`m8?ku7Yv$T!46jzpi?K+ndind8(rZ$?;}}bj1tNceHgU?ih~G(VQJ%sE+9h8lt@y zp)YTI<~8z~K|!`&c!=(!P$x+6=*$qsgJk8#PI)^!uUIR|d3esL;p zmQuB2+Hsrf|9#c0o^;rFi?1)tsF|&@)^Ew$JDIs>k86o_cK8|lx{llLoA;Z0 zZXi-v*hy&cHj!3SZ_zbP!}Z4vVPQM8AbSKq2aYZnY<$O(@x-<0eqa9jCCX3CqI0o- zH@Qw-nnq5fAG%X3vX`k90a!QytdU#BD%DvwQ^yjCFrlki47E;4W*cIrn8g+9k4&gF z%-pfhi4$WR>&#GmW$l}l8(#VHy0Ttg-WIJ_lIeMzL5GIXDM@7{^8TPAaCgo37u(g3 zS`z}w(nEjBb9`g2DEK^I7ojVerj5rCVHpaHvASN`ix%&k@=QN|Kz$AttU5pf?V+%8 z!0YxI;w>d{vO7*RBd6euR0ZXpk^2>IuKW$NrYKt8!;S=}N!_eG*|qEq$sOp6`)*dMHph%iJk{Gp(k+eR| zu(o0TY!k9+d=9uKQ~fqbifKf^x?2Hr7Zh8GK+%*|txRfC7O_CVzYNn)wM4i7&_P$c zSpxLB*wH^|l$NHhO2UDKTpkML*{|?F2ijR}3OZ}`vEI**f>VTQ9rR|29tAj=pR4U| zF|7S7#*_#^6*$gZ{avW&x0u0>s~NLxj8^izHj}sp>fy}t|2fMiTO$7G`7Ve^=RdHZ z9Z^muT%MCRm-)n&GcZ0*PVn2?!^C-)Ir35OZ&j!pO8T5dn@9RxUEn`CdWVKjiiyVN zTVf_%o#LVTo|!eEp$_l)Qvq#F&xbgiyWAR%cMdnx&GqU zZun^6s!wK5JN+oa7Tg)kvTm7FMU(9%D>0v9P@O)8tnF_>v2J^yb-^KxH{=gAZ8qxI z9UHoa7ZF1ftn0Vja~d=gtS*ZL!49!d9&ZLi8U3cfukJTvp%b+(E`}5$w(`lc zuzV|=p|%DqkYyNaYxhzHVU*_EwJ@tL{mQhAIWIcCo5)l2huvj-5$Am6ChMFEg_yR< zQRPB-p{HGiGpptoJAsJ8i%GmF9g!;3#NT!IzR#(iFc$0hKXgcX>v4*Lf&(k0E*#v_`l| zx*_6^U(0bF+F7^ooA1N0z{MYkGyF*rL=Jv4G|9EssJY5*G&m?wFI!43fQ?yaCYatJKNaOJvjCjX9X$}5KG;9+-_)9Fk7 zFzfEOr$OZ2O|h>e)rYM|xc=U-wdz?E90eG|>}(V|SA`%IixvZ`OrUcN-uQ^2UWa6fY;z$C0aWP74=Q1+Od*m@gLJiE5%A@JFOds}p$LtZx z@!E_+!d@cs75oP8c4%Ln10PFHI+@p4MLs^`Wd-($q`8r5p^l}|li=t=^Hi9@3((2I z=q5oq|E(tvP7x?~T8N|+b2)yO70|tY zGze|A)rsG z&8rrNtz5p0wBKG#q(8PU)TT1s`CD~_g%aN_l)F* z8;VW@+~ZSU&IxYSzi@r`Ma^>y!;abMei1t}#`Hd}@nT>6S6xz&zB;xyOR^MG=-9JQ z4-PC4HTUGa8jlUPQZn2DHXH1-B#`s)<7Ro@dzid^-(Johobwz)j|WRZAtES`xumYD z{x77ot`8ANzrg!CDiltbPT+qIvi&2#2E8pcx;?N@hteTiT@DmLO746b65=w96QWT|i zay@*vS7g`7+~bBM`#8KafzOti=5S{D`LgmHFex&diQ;es)xXR?6w5x2|odl$T!*e^w&XCTKs z8=TV%_O2QG^{xIvxc=DQ2+LIlt%NuJFO?vmLngTlAc)aXUgtZ$r4ZlqHVMLlE=Q)* zYbhbgdQcqu@bavkf;SW}E?BupopLRp(<&!`UYu-*4t!Iq&gPb*{#@^SbcbAlOMMIH zwJv`n+9HjVvm3)-ihfpl6=i#9t@IYJM%ji2Q8;M@~W?;dszQmvtZS?1TJYWdz3chbbY6GB zg9~q$hqI@Rl|aW>XoURsIiTC*ahy^tv6LQ10pfUWduGEl?(0sHQhZ+3TZbRM#`j?N zqpj6k`eLlM$sU7MZVo2v>?HloXqglA%AZJ z!+n^7Zg~%?jR=*{0HGFgkwJp(Us}Zn@?}u67zvPK?%ia@a_2|U%{J>;GgDlCNDq4v z_~v1e+30VY%YyF+Ky=@|mCP056C%Z@ultcYzvBj*>BIOMd+{iTcs{sd)~k}b%q zjOyFsgTG@7^DUngrQ(4C-UeMT7f&HHWWVrcZ(>aX%u1R6L@-dGK&%+T1YrgI#okVr z<@two%2;{MmdF4&crp)8eqH_5b50%#$S!lR_$*EsM=NVhJ0*#kW$w4TM@*;jCX5aD z&WJG3cMoy|3j&TcdXsrqC};FpC)5StG})Xl)anX{aiWP@k^Wo*!)e#wFkXHFXzQXR zTW-eYQ%oOYp;8h@JaWx(Arlb$f>4(RN`79Lf~nH?NrG$lA4gD1(`cJaqtfyocd67* z>#tqT^C7{_nxX+%NRvbXOSnG=Y`E6v^m>QMaKT6|o9|E8d}do88rYl?ng#kbezt1C zyo}a$YW5?S&NVBN%_fFJbHVc4IY454YhPQPrqsX_`N;OG_!LrJBM7*=zxjz z;GOFH*1c{MT+r8<_XDB_9hYBjHUtT67>&}uAGHu49oqvXiL5C(g6Cx2HFxfW3oCwz zc2XLU9gS#78J*L07x>8rRua$LYQ|Ive+`vZ| zmEUW_@ecEm5&o?!T(5ODhB#B7_TK@Z*BjDkjbX_#lqjx!IA~+sBo6i2bJO(7#8G#j z#lwdstKcWWtlz6gcPZHRi7<_!eeTzSRC9m-RH_Y0!W}GAt#F-{&S4y3G)r;CVW*o@? zC(@X27Qc&!vPp&}pjNYAa1(`~20VG-V|-KK!g7(igRg=!HS!n$3we7V05jPti4Lb- zo}&|NkC9y?YgXRsySE)G^|*A|w}5#KoH7d170*&CtyEs$_?&w5?zt-pa7epw! zAPs)DY65(GrN1MpUO_4_;}kYsfVE|^a6i(%UB@=|mi#GNOPN5y8RoeM%j1L4(g~xuz3HeUsfg$QPj3G#zObOi(SNJNSkD;MHwX*ht>!yV+4y@mrI zybcDw0pJaK2J#I(`^FS!4>2_B+Rx`-h~NW*9Lb!xAy#8TulNFg z0%uG`Sz=)-J+y##^}0@CM(%D=e@d7f@}x9Jl+O2LT_$@SgZOh`8}xdwkXBNz`PlGJ z5_0zi@Gu(fcjS4f7oMJb=vV%MPuUrwezA17viv#H8F~&pwy%SzuPY}Z!Mw&5zB*c0 z)JGgoO7)fAC*_E)V_2;Fl((Z!1vVYuhsmi8Q;H5JaqSUl_G)yd$~96J*+mW8Y4q9$ zAp-R5pq)N2v z-b~-q-zJ>{y>f!tJ`iWRs{~+o=D|J+n=;~-5o81UeMqLgZf5_kTu@Xs!8ncciK1XI zkHLG%K=U2#kQ1BRp@Gr`X@2zT4n926R5m=2ILak@d6pm2^e+9k-isW*HjGYqXhU6Z zfS+dg{`ceYStw2-@Ii52d{a0x*VwObbz9csl1n#37p6ltK#6i+jM7{POA~Vv1vh(v zBW`_&e;m>FZ>EdhTz|!lK)uIhhri1YIr2mn_a#6F!f8(sNLs>r*`t*PtdR`80N{5*7Q)`c>6?| zlJu?P1Ex0z%?lpIQOATIR@+~EIqXP(K;FlRM%;t0IY3um^H{heI5LLTP`*j&zTVdg z)l=V+%K6WwGlu=U<~UOgK4!fHW%;9pR>=AzDjpa8_(^z|9vl?9(_8$8LVSej-j6NF zgmQ@z8J&ozSyx3HL#zfCdS^jsh_)rh6d-dURX%b*;|)|FX}M)1e){H9KpjRt2JqO5 z@0KBMe&UKr{ub!4^I*89I0tW@s6w6H<=OVBTb4q5-hA~($lR?T?$mei`^=ujE~um{ zK=nOnPa|mq&ELo)iv&-dNamZYO)6GoI9%=^Z&61$<^q5SZ~zz<<>`>%^BD5~CV%?B z6{i3H659W7UPHz}C=GCB|9BJrDo&ZZd{`2&`>L^dZKP7w0Z7f4+Z}|Nodfiz%6DsC zUs-00H>}(;^sP!!f(kB{#1GFNou(UX@~$M4)e+%OT3{o-j+<`JN;XDTn2oWf@nz(4@z9?9r9h_Kn~9gfcw z6vK&3@!E@qKAe<}ck*gdM02wi-diqGV+tnCs!;`2AB& zz#wT+(!{9C*{NUr!5=YK3fvV{Xt|M}a=Ag~5}98~tas)f$ZwgWmLbW1>`M9wO&3l= zW@r$|!I2|X%_4<(oQ`0~(mk4SUndCVANDX7z3 zw&b>7_dNEKO;&Rl264uG+vOgu>cVs78pLD%TJ4)*-n*;o286M9gM(zz_xuoKA7S#H zt{>YL4cR*%-h3y}KW)%ckb*o23)v&mibr{yaem}{!EtFPH6chr(^OM_SMfBHJMC^6 zrsEtSg&c4<88*bHU*TOGue}y5#^s$jI0)^sWH`I*`+-zoy7v07gVH_KmU@NveEZ30 zp`S|1#Vnm(Qcub*D8KiINhPtVMbN5W7VJCjbB4*~Hzq%XeU#EF{apL@$h89I8FE&Z zrPC&>%!`9DSC4jc-q|#N`ohOM3t6v~eo)ERY_5HO?D}x+E7dZ0D^vo@YZ{ofG`)YQ z7-bs-|8=l7g!YGqCAEs)K&2XR%-C_fl%iK`ecyI}uM#_4%jT*zqqIB|L+A2Q;;Ct= zV*V*eCDiN*8FX=UncI` zUB9V$wIp~s=N$Nc4|gZ3YPFo>u|@6kTkvy$`5buvg44zFSLF&4>{>z3LE&_FIBVwA zg|^a2R(o0XU}z&)5SaO^mNkFsq}aY%xM>{v!#}GxQ&_nia5>HPCguOd>@g+07Bmyq z(ylepRUux=@jM+;h`HJ26jk*yaPBeofP-TwQk2zf++|+seCwaV;^AT5-RY) zlnI=#Jc=E zb|=SwGmTIf$5BfSGivq$UXS&vR1^Ubf{mnXiGcJVnDw6YaOaaA|D~r)hE4#KkSjY` z;iU+;UrL?!^3XJF()FjS4V}cVfhT6HH6kJ&CH`6Xd zzZ`-C6;9_UphXtnDkIC?i~*`HS(m;1g8Bx%-=J=;bR)cTFj?UBK&K+#q%VA?jZvR$ zNq*Qypb`Aulow3u2j*CTqo*3f`!_W;;z*xie$4c+k@40`^H0JbS28)>akZ^yXl?J5 z?#YW|TV8w%#HntEeClS}Q+(M`E@;58A|i?dPQrzP6}FiQUOz=dvNF-op*Ft`LcNKm zdAFqO)q|+n-pYDX+F84LkaMN!=f2-1I zmM(jL=aCg!vtwo^lEXJJqW{V;{@+g^{b%BemPhj5@yws{FU*YHy~iRy3%{PFbByI` z+Ci`s27O;s_|lc@xI}(@0U7n*j^B_g>T?7og;g zSX#?=z(EsWg4dXflfj?}nxZV5 zNCnrgs#H^%kaXrHeS!mPgUCOH|4GxRjO=&0Y8WB&D9@I`G`e>@X!k<;Bm?z&{EN}T zNerR<s@+`l%ain%>;Sw&gP4{|2+Oae5L8)?N8^QNpcv(`qr;c|N+x(ELG@BqzT1QuMH zGZfAi9`q{@c-L0p{UDGB3q_Z?P&r9K(KKJV5c-kj#!WG>yZar7KbKSVx#qx$M@H9= zHCQ1hZsiJfN zfdrLa5_&IE6i|9ckN_fr^d>}v&}%@HA_xM~MS2wxX;P(Esb}zg``c%ibI-3k#=ZN` zdgof1YmAjL)?9hsr*vobmeSA?$)5!=fjypKAs7lN6TSD!i{VSU;cMhed1#+ zxh;}rM&D?$+C%>Jd0r^H_{oUfA$i$Y2Ag|b+S(2EPD7!(11QEZg9kP@3ksy#?9~0l zLGc~P5|!s|qitrnHjk^zJ4_(o<+@*}SVdP?S6K}C^U-b&**Vy%S$aumyy|I|2eBPj za?(Xk(KCU=OD$7UL-IYv?bqrf(BI2#fF}9=o{oRf^f3$F)>zC5vds6YWgwUFUC4Dp zSsWe9at0&XTB>t}W*R+KntjqZNtudf2z>mpLSjH zYi2wkrYGZwN3m&dmYAEP)q-CYJ$ZngBX;#Y3bn{|A=Xu{N}^Tfh}^sdwU@~ZmUZ#L zTYjyf)w-YZnvBf&YMfYNixo>@uVjK28SfG+<<&6Nbv`2Tfp^FF_#FArcyqQ_E)sQ! z1YI6~78`i=fah%GgIGKqB95xDNcJc0aEv4dloX%nrz1gv#B9ETrecwvD<5Qqe>RT7 z6%H=sGzA!_n*zLn-yV{hD?rvOw23KK}w<^it@*@7PN|F z*oXbC__wsnwvm-dfJ*DupjxND2 zisqnA?q+hkc5-+jM?dk0The=l6vJWNl-6++AZ&;$PY?IqRN7>euE@f-=UOn@KpfK7 z5Vtn8s?E&R$Ga&pz^s3^byAf7EhuRB9IW=kWSs2STYm-TO71+0;D(*fnbW;z|8>gW z_<;Qv!v!|!ls})w%{yGtBSBbfr+jbIpJ>ilA(!Sr6>9Usauh55!No0vI68DZgI~T! zxQpg*@EKw-F!#AJ~JTpSAXv==rJ{Y$o>T>g5D-)Xcs}j)dr!VxD1s}-pH_KID})E zt2!d8wuzCU)Lgyo3P?^^Qo3{N9F!2yg-W(zaoc2V?)x%uS`~E;?_PH$)dM^gwCGin zX4WH%Z+gK;F^=kwtxW^MJ=hlUMTE5x6b4T{@{BB;1p_5;O~4pRw)P9NEl7+MP&5`* z9J9FW3=+V{Hk^dlMv?IN;nQ_6(BppT{Mg@WQ~*Y}g-$X3OvYgAV0`oi0X&kj&;<~-O^I*!jq|8p1|WShX$MM@3$)fiVC6Z zY%9v6bPSBD_(OYcaDv#H+3lBJrXRIi?V(oFiRnzcr;gtcHZ@g#HIYut3tuXv{*dFT zxqUyMF&AbfKzI%)j6@i^+TB7ef*%N~6V*<~<91GwYAH^RqSmg3s@z4*Yf)zsOZ&9& zFa=f;z&|xfq$odz#?4|%KF*K4%we22yf@w5?KSfGYk!JWZg>aT)1b_=&p@ze=1sR$ zXx*G#Gc5B1S zRs92N&^di2%YS{yF+=vVi^Mv&WVN$LD1F6ELk=sk#Sp0z#N}XN( ze$6F;IwG=-cyq508_kHBAZl5f@)OxDx&7oo|C&0*))38`)AM&i6PmZ(>aFG}w=cOe zK-OjMiWP5l;i*h*`*`z=q41YksQ=mvG^jNzn!|n2h_l7OuFaY%W{fIwNfYZeQkLTa z$t(XFrIm6Er|{%1Nfup7h_Ql-D7jr)x$GIzl}K zTGA<*=5-_oWljBT-7CIMJ@H!(9oy?$G>!lt`IvbKsZ?`WzypQHaf{GjsbhrHOW>6@h z^rpd#jf*g)ZG~(g`97XTbF(+#d0(EV_LdK9cvLBx<~384C&7z-Ic09LALfxi_tgSS z8)SPTUgtx9-|9EWwFySi3rTt94~74C5c&d)zV?aZt}?;nAT-gmrqPw6`U;#v?gVX<$vb{sD48b|Ro37QTrC_j}adD)M{*ooyh3p@^j{jaEl*^f^`qGyP_8Cf425G{Y;E_6;V{RPfJjI|}&wV`%iApxK$|PE< zfHN}r3YOR;juLaRpaR`xPylHI@FcvO0-iK;G$CD4d=F2;meiPcd#~-zXM3=Q$_{RB z15&z0uh4jyZc$F243<765_a*k%&%y|6ML^|U%pqZsiX;{aCaTv6y3&<%EUOf)j3-U zAQ&a`3Y2S`xq^FuMNNbaN~CL5ox?mg1FUGO>g|zx=l4IWguE)LtG%WKHl}Jzy1C=h z3z6EU2SFkdnF8}T&@A&r&4(ECEUAmjsCkZokfvufs#NCP+UgC5So|DS=F6ogbu+*E zVof%UG8cSv*Yu6~j1f_-LHap{>xo^I-fO z1mA@%*+ZAc&DIb%eal$}kH&X}oH)P9f4rk|5`oxdn!+!r@?WH z6rPf|D)E6+0bA8w%cQu+*%|v^!2N^j0k2L!JQ!Q-k}Az0hZC!GPVZ z`9uswlUz5-Q_It7{2_{>-yxW>$IAEpZ=0d~fL$GX=;Aqut_%D5v+Z-D73BvDjq0sJ zZoA1D6jxRsmlVw5i2dC&_@U#kFB!1G$~&%-KTNZ)v|pl?=ABGWTz@>j5h7!9_+xHx zN{cuJCtB6q%uOy|jkY?tQXMk8Jy73y6^IycND=Qcg2WJ4DdO466FF|(AEoihR(iAwohMYrjWLoU ze_yh)q~_{~GMa{v?RFu8XI=)q&wYCJOB8 zbpIGC;IJ|}W0uSSi#J=_m4-#GT_k2fA)V8>g>vg=Sq$u2kac-_WXq>P+63>&wVT!~ zTgE$IsD1I&qUNk(2g<)Otk*7zc|aVE+VdZ=YT);4WsTE;zj|Bt%kkT>U+W}l7?*Y1 zoW%yQB0`nVi34)B2_?+nV^hhyCaKx7X4+XSs{#3dF{IFhhY3k}<-&6aKqx*IpUz{pJd|V=W!0c}D|kBhm|rx0Qjxuc-3(_rW=+{M8?n={P6eAmc*2y6NDS zLYMg2+oFVli~DIhR<09I{R5r+DA-nsvJ^thMz&W{Tnm3MRM)FBg5X3U?nVL70d`{U z?C5adNpIN53D}y^l1Ncf4#(kn#UbM4O(hk#h_WLBm1hic;9!?Uuamz}03(GbG4X|m zWbgr^w~EjUznBy(MM0t2Upm&tr>ubje)Du?PxnjZl&n>`7qC+0w1=r30sC$rMT`D^ zIFV})qG*`W)X%knmnV*>$^|Ow9R}yHs-vC!2jJ#L9G8ouuD+yJ-Q%E)Ii$*H@-U%V zJBhgjlOgSDhb-ZJ_s9TLwV&-(~K zwJH$y`yU&vY%G&rkmoZ!ClEOB_rfCt3sX@4-}>Kwc!y|5n(#qHE@Z%C3-P2>^wlKX z8q{tRSnmJZts!4#oo)As4=SS_ieanrKK0H&`?)Ink(U5e!g23PI%){IG(Bke`1Cd( zQ73$wzwm3zZ`mU~EQSc81*b5>5b4lqUHG%%9=oB%2l*gLwcLZA;@Ma@o7+_AsxsrM znmt6>#C0L{bJ7-ynw4LXV_A(4V$W)yhbLavRvBJ4g(8f95dc?}aFxVV&OVsGD6w9MkyZw?CM-**J3ssfNAi8!JPeswz_}T+ED0Y)Z>Y(h|`h)tNDeSfMd0g=v zPyWLm;i!HRRb|o&ujdaVlKnGCJa4f*)mMLIK5u6a?JE=a;!dbP6?lHcnK@H_|0#{L zd@^*oh4*(G@N2E3&ycM@LqL7K#YV6FHO#HX6&wbsJs48*$H3BCW=10QQ@Fo#roXTt zlgGz6t}cu9odfpEnzzA&$(kLB$!KBQfW|yEoIPy4A4WwQlEx4bBrr6zn_m;B$}pjf zUo#Idv1j-)+&-Y~t_NiLNpB>GyG2hWFIrv+xIghM)N`OS`|c-0H(kdG%Eq#~^``?Qs_||D_`N2i8}ir+5`E`LtCmN-k%gck_pdujEeKRkAbh za(4@{Yuzt(`LO98Q6jJyvZlQwVQLYxjutt3b{bzXwSj32{phGvFqH92a7LgTZsi|O z6aSlK@h`T;|I{k@>srE~B8%jp!Y)^yFZ>)_(d_Hkp!1b^`us|@@DHIV$J8#7@TA1a z^*Cy@A_J>tAeoX9jsGFntmoxJ)BV~;TgbIxZq;CGkBV91xeR$vWEcqikvmBkNpde@ zY=R-2YmwnK56uN`RNpH^#t4@F(^d1|wSathQmNSw5@f-|{-Z@K`s$TmabTxALhIG+ z4^|EO3bDUp`^?NynO3er6uUDa5SGv$S9#HQrf(RpGIBF51yB`L7tMS!&VACyAl#Gj zX)FXi2F}DG4gVwrgfnz4qu^evAD?)>d6V{5Uq@6GsWuw`gNO9k#nJYv)5Xlsp97g! z9TQojUPhJ7ygw;#u>DTjRGH`9Lxy>pAn+k@MFv0tzU%!W*AXRaDzntlENfv{s2hJl z;=y*!OFaTKT`W6y{MuC*iz(kHkVlblN%!rR+)gY*OQZ=+Ko1IubeS)IkrYXf5B@u> zk>hIS?hnzBd3l_7xZ5M^2uZqW2#o=FC`1JYj`X$)J9AA_Qz@0OF^7vgMIO$7DB42q zBxnM4S_^?m#X!fxFdtGScenlw{sqRQ7si(;1N%k#MzP}7cC0ETk}3J?E4(jXkZJv4 zOOB-?wDv{VLX_<`*31pVXJ3qvHFvdZ0_X3|6+o_d8ewoJsi~<)jmHu_isi+76+SOn z*4lyP0aZn@Z*ad5EW6@u_oKmeOA}ziUu$V1`neLU@Mi^YsK>AHLF{uo_wX47gIEDA zAL*kJIaG3u)NGl}tyR6fXB_(%&V3{;vhO=PxDy=DL5pJK7N3j{?KpZS36sdcUd-KI$)N->yxeg$JFWe5#Ra2H$7$GHZ- zCnkV-bD)OQpxG?fn*5xzljD9A+l!TLIlE$>Hf<&%)df*L z)D3U-B_melXUi5lLoC-?YX2Ry3shc2vDux2OKi6`G@iw?Z{{NDhAPreIgv9K=_-5d zZy7B&XnL`-ttU!gnlS20EgO0U&)lpy2jg|;pb>T=IJDh3#r~G(pV#Df80nEIaIhKN z_$73UTEkZ1nUY&P)aGyCND%p61SnE%}l{nWj3W;@iT^xmB*A++N&3=FF@A{vXWc<_+^}p6e|;Wlu5V3GcIr ziCpa=l&N^lm^~%ciVVm48U>FY;H2yoBJbEhGMi2+jcBjVFZQz%cW-#Ntw(EA*Ks#0E}>;)p8h%xeSUk@vJX<03&+q}J{%e*-liSY%go zUDjk>*6SyVp_0`_V;sI-9S^S{rs%q@ej^sH!P;+II3Ee>>=;)yMPp4C*StzhOKOE4q*)mCGAa9ZBt6s#_iL#Pj#?4Cv+PAJT zix9KeNPL^}P0o7rO=(h@_)5DybnL-fGincmxKInfnIOauOR8)PgN*>1^AkbdE?EI4 zjlZE zZN6F6CY@7Q+-4(*!}j5axwF`U4=SV8S}qIGiNED70%~B5z2ow!a%kxHfTw+~Tkkw6W#}yLJnNI^d9A-` z@!HK@Ph<0%Ydvrk3r=i%IvVZD6Ye0*6^~;27c%=Vi8lhC!!cYr`r94~HNeU`ldTA5 zY?3q&)oVV@RdGX1{2d_jos!~s8XtPd^yk)GCoiJuFwbtN>XNxNiPPu@a%!36rIsz? z*mkVk-N?u(qs5vS-_(Egok{bSQ6#SCfHnYqJzw0Md%ZFJL8|*T-O1x4ip&mqA@f^j z*X!&}qt&#rIq|f})?fWTWlz5xac9^}S%_(Ri2UM?5>-Vm<^hwCJcZ;zk zpt%z#acfT26nLv)N$-_NsWy`g`?V}l6<3(TD(aG#8-h@qq6CFvpW=3c=vK+Ntp{xr zp6(SKHnwVQi`!4`0#Bm)IfG&2JczogU^N28o!}2({$Oy}EAeC4@`{!q>8jzA%&Dkj zL-pJfsj(`)lntZ0Se5DrZ=-I1Q#M0P6Db$*PE=nz44PJdDCome@JxA2{8-_Lgu))$ zV`&m_4hZavTSbJuF^uRvn<5x)SFjOsB9p=yZ?YmRvb5~p8hgAHe`JU(J-L?DK6Gek zW}2OYeDtZw=2tiflm<`xiJ81>;JH+X^5Kz7Pn=UU9(=G+^~PmH7fHS;HR*Ze!}y!U zhHIFv88%E$>m2n?Qg$#Yw#Sgn zLdH@{`X7FVmldOc7OY15$e{7dSj=3@QCX^58e#D=ABSxgi^md~$DaHN*1^=fq<Jk$*XLEua^1qpsN%&FZ)UtXVRU2nej$Z?d0TARBfZFLC{_ZZorV@Y);%l|`*;8KIfy7y zs__awj#gQ0{C>UTEEL7+B@qM1Em)0~kuOZ0gRQE#AQ6+4v1l3U>pD+m5Xg8UEU!m` zqo}Z>Rt`=C2Vy;_cf;Nc4`)di$;OZX{ToyHai9E0Ql3X`X^60^f$*nCxVvjBjy8*nSr*5z9h1~BgFBSX0$2uFgbCa_!0xL#-8?Oe;vA|gjKbPh)J>se>t{FP9u zZm^RESpX}&D0>_`npQaRNSghvwKCMyQA8_;#LPWVh6x<}WcpL@_rg1)B+|B={KEZH~GZ!wIxH4f>A8S@sDVRG@i=ju0W+Oi+d2oTL!vOEL6jJ zqpye}Pjw8sh$1nz#{rL8l zGW0ShG>S4#^zoe*$%?$F*NN>0E5FBU?OI5PvC?b7nMI|)=z& zts4@W_@O0F)S=<>edr}%b?-SqJW)law9P%Uh zfEUJgw%4y%-t&%hAn!Tb?KB8fzR6H}#_#4W%GW*uJ+kX|0k;@=rP#jIjdLWRE`N3Q zn`Z)V`w({zujmLW)FKQ#J7qDjH@?3#Q|xi39ua_>-O|QFq3~B9d=0)b@J_0QlIck4 zsK<_2xKpCt_f4~b3I6mCg-S2YT_jzfBiL@Fne5`p0uiyPwhSE8$7gBfIRSjVPC1iW zt}5k1J|5d;wt+i-T;hY44(jr$vXWTxV;odpqRSB; zaLASBWz}~SnQ&{Y;Gg{*tA9jaag6iv>pEqgbOAUDZ;>aBOJoEBZKLOS#*5 zZHW)s^jUiKl1uharEb9@9ad|k{M39Psn%2L2Gf1TepBT`#r#PPhDk>-rM6h|_xbz8 za{v+CYYSN0>Y5*^>OtPC+W9>2)H7wEjy>tlI}GzMt!d2RzQle<=A35VhTr$*EN$m51FXX8wm5qT2dFrwf1h?|ggNts$?Li{dILu74G zB$MU-7`Cd1i}~|+n;Q&!Q(cexOSY6BeE!tGBvv5uP zjxV)Mgy9k&^z~+6IPUgs!zV+NUwu@$(o^Jf$DHh*R1`wobeo?Pl9CE|REyu3grKM% zs^r|92QZVl0Mk+@Lyl=`Kw2g7XxQV$oXg*rl2LjGKGRzi7>r>jYVp zA-u8TF)D0L!E23Nae{fZ8K!9ys-_;7yV`)zT2I^1dV-Q1wh#D2#`SG3v+dc@=aR|s zL8WILpFFg;HB@C(ktSxb8hypFTbOan5rmt)AFMabKL>WJuKZRsiSBrEPLKW&f3}Q{ ztkwA0y7u@YUrX~qcHN0qu%%Xiqfiy{!jI)5;(+X+++HMZI;OoOKy@H{i#OzYeGHKo z>otvmk1L(hUI!!!QhVAf_Rz%582q1-ItNW1d*XiKjDLeRX3s&i904UKrYZT67hs4ORaR?Y1HRJbwE>;-*Ja4?F#?I6rDiToN@nWDCKsG-xixbH5WMslkv z%QX1r6btRMoO4jB=#C@V*uNFQ`7uG4wQ{=I)g$;_oC5DVVj`7A#y0=*$jW99=O(~h zoH#y~{5a+QhO!y03dg=U!Z172Bv#Ppw$Vwajo1D15#X8W$(nkEese z9-LNdY_kM4p$~Oljdm#Y9T%MNL0uJy(o02R1G8U$jXm=#pBKEe)^S?ic@Dz(8>Coj z=7YXqZzt1f-NgpJ;McmdWrTEc*>B`Jg9la~{QS$liKm(@FUw@7y12U_41n2*}w_Sq0TAcrqouv(2gK6V+!Orl5K9*-SYB6X~!cR_t$)me-L_fYT^5+Hq*TW`0OWoQZHURd0{ z(c8~YZQd^!K+!Q2z2I6l;LqJbA&hDAl)BaoO;Vc!`G{T#DRmoWNN^3}ZCQ3u@b3%h3juOvV*N1$@vHPL6k}q(hw&Jl*KD<&R+X0ThYUVwW?gtW%c%ZH1;-X{ zg*Q}swn)<{eGA3nH4?#b^0BmpaHGa?eX5Up>qyT=lhWM~X#&b;QoO38q@|(6xD^8T z9KmDzWvN<`)uqe9XV0o~?4+#7r18`*V7<~M14ymMoFm&L_FsJAkSylmrNz-AB}Y$j zh!^)93>Qb+5?M&lDPaQ1VZhY^@o^zT1Vt8FxLXk1!vPJdLgoQrot^xlO>P_#jFHBZ zO%BsDrLA1WQy8j$q%&K5Svkj(C>0}Y+$Y77LFM`3fdUVHXk(4{Gm{5GG|to|00T>R zu%!8Ollb;k5z-{SZbTRF=%)s;mTJlV;v_R_X_JW|&(rFPOp#4J7Evdzm}#u?oIyeL z4?0ezX@3e3imt8+KQ+R@@Fj-y?S%>tqTH$c(5>eHe)ziO%6oHr2bNw^Z*@j5B)0h^ z+V1db+nM0jP2A1BmovdT2iKyq&+aE4^~190G(3CI)vq7g6D6X^m$lz0%9Y&b=#f>D zf_7UJmW$kse8IHmEa=I;5xkWf-}sbTXY9Q z>h*O|qSJT$$!e{fAb}|M+pSWBlI~UFFyYM)o|@!Ue{=a!P#AS~eKhMSTIW0f8bj<5Bkbm}F%|+VLNcWo#w?tW50o z_O-)PIXxz~HB#65Gu3_$%>g1(K4|XXeEU^dHbJe5CoyD%m%YD9v8?|Uz}Il)-+h7Q z_+o;|peSRUB(5Do&iC1RoraA!ftu5-e%L zOf&f_-lOh8`=dOIQ52tY+xr5q45SNl(7@V%cvn)vjQ*?i z{0C*>;((!lkDVaieDxs6#LZ?yH4#N6xy3$n>OfU0|NNQwTE}QqKlE8Q%>jB*Q!*~& z8 zdgAKX%@XB>xYQAwiXr~c{=QXjo2(4lE~8*@Tclizg{FTj5PA;CPXwrx1|CI)KsuX= zz3?;?pF*CR7H$Zcb%-mw3$xN>?GfA3`f|iQ{=8XrBF|H4Lto1D9FP-s#!j;m6KIN# z*j!BtBE+v?D=YZzkK%_fyoNq5JFSnYse)+km;HgvSO_k_(+OoSJTd-Eru;e(l)0fWA(sERihrlYzfhgO)31SLeO z9R&RI6?E2r(%yQ6T*G^WRc*wrp#Fi?Tx~W{C+ba@XdPqo~8f!_AngR*G zu_Wlgj7E#l^hb~vl5eekbW1<-k-pKvoj9C0nTVnpym40mD>!s=EjRU=fm`^KD}62s z#-FeBlktl$r%Z=&71SP-tq+pC5C+gGEVsAOT+`gUVh#1nI%X>7?_?-c;wqqU@a1`A ziQGG@XJ)w3Z6yF>54(m9db*3J_E$&nu21VJH9g8&sJrKwyXdp5DQRC3a?^j>{I=coej^bWCv${!Q~Bd*kDAB{R!@*{eV5ryD2Uu@&V9eZNsGoA2e5 zvil05xFz}4#$U)}q8{a~XGxIYeX->>DdSB4pU3n;zGr%kw%RAk+jvU7O6iTr4~TaR zUq@4`*{6`n(pLX?fntDXpiPZb-~sKPc!wE1A0(6@?Eu=O?TPeQbc>3m3jSRn? z(6_EEDd~mA*$blJKLzUJj}1b3tL|?tRsp*%>Zf|QT-J682C+XRE-QDafo{nbmdKsH z$SKi81v&>4K`uv~2lEdh&-s6F4ezss%C&h}$Zwg)zW8H&@5aRQ$beU_?y7%GS;474 z#b#wq?dOJ+qrHj85tH>XKUI;7z#9&cPb*n9^l!b5OaAj3Mj~$oFi(LnjKi>ONlfg1 zZbo+fU~h{vnHjADV(E+9FO~ys zp2~T^4aM?#0#kW%5h!^HP4qU>)dbM$rz&%1YwO;ZhC`l>pXBO&FYad(aJ7fbrr`J$ z|H&%jH8J5Ms?U+0Ei(JULaU@e;3rjb{6qjYLXkP^`px?#qw8H!mv!EIs8(Zdbljm8 z>rs0jx~3N2bDB7|VzdF=({BOlHw9f3f2 z&)i_h+#r@!zaTLLrsnxR-O5#<@&%S7H4)ca%h+T2I(J;tDPyFGX{i;~r5WU!VGTg# zMJ|Gf-VtR_WY*80*26D_Cx^6Iey9)E9CGn`8d@d9c~jZl)fF~YFdW$%Y@wR0XPelE zXYDGz72#iJR{xA)C{>b@9$c?h+bj`$8kt zs`qP%W_x_E98eg8U1F=?Kh$z1!+TB?my++~5br-|W{-9|DtJ-wG9^NzWQmmQlg(d(_L#nxq#;q?ft@B=4?9}HYsTt)Kpi3T?+^B)pPrNw4P;g-cSDb=r035%2; zpt_JVD3;!|ybtelwZ$ryK-pr;Gd7WrDRv~s)LDUNRs9Yo+*dk@+G%|{boV6Q#kWyV z0)QtqX^K-426F^ShluNj!5SG(9TcwooOe5Tuw?xe%LZ{I4D4?uTyuz`j{AwjVhKER ztJ>>1;t-y>Ri(LA?S-g*;y1Ab=2(JqUDQ7&TnuqyD0*l4%1_bvsTlF(K1{cnUWwP@ z$!{~=W{MSmh~=Jic+bW!rm}!#Mw?j44kciDSpS3T&f7vD=a4&8)UX7}Pt}wfQpJ;s zl&+TVMeh-yQ-$UpfkVXGCyaRVnG^1Go82D7j-L5{$a? zWUh(Dpp?9+&?&2l#UM(=EgeI|>4qj#ZCcjJ^_xRjONB(mqi9>4Ny!nme9%a55d}Dy zB;qG4;=_}@%#YWJ*W|=35ZmgiE#z`0!oi4z<0R?{!i?I{E*>HONFO>p zi@i1!H1}OTq;xv8O`#ylq+^%;YiU2!uRvQ7c#PwP?!fUFD5@YB1)t`F=;=kYiR+GH zd0+1Ksl8+HAJLa8g7*{86g4em>!M9SN~FR+T@T16Bg5Lz+8^;0fB2v4edB+Qfr_Xr zG%cAyzqAc~;*8zRU5G8Rfw>rb zFL1__*XTUVA$`q>WiiQd!}-96P_*JUa(sG4FLT>~gdu!W1aHW|eUDf;yJ~=)}spIV;D&a^F*6v7tRl@!s{_Z=9alWMlrE!_~ z8i{_Dbp1Q2KF~Jcw_jA?@{D60p++0kp14a!p5ih6V>$)~~3% zRb>RBoqJ_MyM7$CS0#12on+D@xU8d)bcO`4K1O3(<>IvWB57I5$PCdSdV6So)eFB| zx?C-zUBLEO!{MQn#z8_}DTiIgUBIx{hwebMb z;%kG3j|~qx={r@}75bkMVI>0;W>byXwKn^$7X_~$aCn^o|IB+$EOZHwQgdESIv{Ku zD=nLVc7LqZqVXe4WmC@0bd<>#CABz;Wz73dtkCwP`HD!J`~(2AW!%23d_tt*4YJFA3r!uiv=M$0bMBNf4utzn};GeU|{QSBoXj&{N%!}QQeF`4<`ZNzuZFB4$;F0fWc}V$d zMtT2F!|s~$R<+A!*_%H($K5JUu!97wbnEEPm)dp#G)2{JrvkbqpIx2Gf?3fC9Y+Qm za(oVCdNNKw2tse2e7JpQ5ce?1w)oi zhwC+w3Z10IcHwINYTf-fQ0|kfAewAzz!rrcy}l7fm`qW$?>pw@+Ljo(apEq9reUVm zlCOj;emFF+@a`;ND^}DCx@1oMf>S=1{kKKBf!OJUOCsZ(;~5 z(eE~rIql}YL9CdQ_)BXHQE{vyhQwac1%B^0MsB&>ZAkMA z^!!3-q9#}RES5W1oh2h#+DkjQsr2~mT{5J1FCv@-jd_-=S>+osQwV+13G;VJGs>K( z$ehhN)Up%v%J~2s` zHOzH;b*Qp8#Rn~#lvBJplTp=819!N84m$oI5BdveE<5rs=m?C zJLGQp(49E6wEFw7FKe?OB7kS}3;)48o@M?>+T}m4H*-#m4BoySG{2R0nN+twG|rxA zb0OCxLO>r+4rMpNILZ&__CuTDwFox*9-yu|k@Hi*ANb{GBn_VEFkW3oL3LI0ZWJ_# z$B*|zO$sMtr`Yi&rH*+WM}1$g!ndryZL{lWKI#FBkw0oRzIIF%tGtS_htfZGaV!$T zcW~BRhw>7Y$l67N2VDdBG1LSm{eIl z34*9(AyP&-aV@u#sJ!H#hM=evf$s7@LkF|5%t!qW{|Fowf)TFai8*x1ipYAd;mK5T zIr9W@4sZw~i<^e;NHb+Ef*)>;y(DZC#>IObMSL_86>Eakd2xUze=ld>xmW0;Gv7~& zo>3#YCH@glOq5PSlzt(b4Fh^u45;E9LKWZ_ux#0RL^%FoP@yg-9QQ!c#%plq32Ja+x#akBhoVKI!8P$O4o1UI>>=v9myU;6i(!eZOGGWI!J{QT zl43oEDXwBYkA6-G6m?r;c|O&Xk@F&6$(M7ASTz+c35w|rhl*f+@yVv2CBJ<1Y1nzR z8y!}Vb|err{g22^6l-sVv|7jtg{4dws855Mmj zjD5l=WG4oxFl0B#zKxx+BqT%0T9#-K)r9P65|e$`LY64XSSpNNs3v4hA++l`)93T~ z{h#0Ww>;;6p7Z?v569ed-{-!~ocqkY-q-tjUGMAKhw-&FMuUDunZMShLYl)qm=!ck z7H5L*+CZIFbj`@yqs*#aJ2(8G(f4i8i-|<6fTq=}7>7P@Y^Q8xk6?9KoaTg1nMT^I z|5ZJ?K^?HgPxLE#8>pKEuH8AAxx+&11imh@n_x%#c(v{BsYDPvx`$Ris=+7<|{B5cyEl;PU+_3YzQYKuTQ=!S^Rv5!u}f^Z5If*_kQ@BA5p<; zDADP{lK|~jP@8Cx=%oGkQ)6VU>*mtt66~Q+YWbU*Z{bnlkQ?DkG2u(Ku7{`xaGHu; znhY4cVR8e@f6gvR_0)^v7Zmn)HnoTQSDn;s?-LbrFvE?EqZr7cR%WX4{m^?MP@N#B z8#EU9Tz51|c8VyUd)D5prQHg@sZ+73Qvs`6*v15%wRdVuG)eb|J#=fqTzFN`bueFCT1^QbQ&LMBgHs00`tTYzS3mq4yu>?O9T(dh+%#%(b zJ(?E^zLJ&=S>n|{=xN%X{xz}9fA$6Du?KMYp)#jsvLILQSEKJgc5g&n*zxV5tQQ#Q z*yJ(wO{t$rQUux&`ElCaK?5S`u}^>vn#OW=$EwiK=k&!jGNbvvW0a<}v;Q>r8~ksO zPPRls6@sx7M;Xt#;NPmi4pJII%S3H{gAANN+jeViMuX6^%j6T8$Qs#Xj<) zNwDGa-h)Wone^-L?cH8=2547D=AwIE8@WRt5GU50*WZ+XE}1mzTgCEJ%@#0g%b=&R zTt&AVhDhMd0qt5DG)#NL)XLO}>_B6(oUHKJcvBv(UiBaW!a)1`)3ybhHCA1xQYV}2 z`qL4z!ecu7Z9S}Hb0=?@a=+qcor=}?PGebbJ@KX}m!6dwRpsqDI+68;D571OW>!_- zuh4iTpA1gmgPv!z2csYub`BgGVlH950p|07Rh&8$m4CW{P;NjN!dDI5cc_M>)HqkV!p6%eUm{qk^`X~(J^pae4m zXAX0Osus68KO3D+W2~wtBh49hiXsF80+0VUcN@79_;$H1mPdKR_Wl?-5KUnZl9v^z zt`&`~+Ltm*lxxQ>@&}m?mOAAst5AVs&OL{^13)xjtk;Xn=k4P$>4(g~=}8+aQuXD^ zRN{#yCHRQ;XlwtbK}{$mvT~L=(l0hHtgW2yLn~~ewqHk{l-1=^ORb=kzF0S@; z^}u9dF*WOp1)M;KoiE7_k7&6rc zVR_t}^1g~7^euSjP*ma34H77j7_Kpv7ofVu$I#$Ik^SnBbrF#dmizy`fdHgr%*Y+4 zq8e~8JD*z3Od>mDzbKakEExiUe?P4?0k&lW`tjNFDSAR|h^q|jYtCZ)#FCd&{ zp?&$J)vW)k!#)`feEFwnjut83E+&DnUGe4u)#DeiY^h06 zhuZlrKE;*q=E;5z0ILmGU*&|xaOVt9YDjzWxj(+lBN4ggk#>^}g!F>|*E^?uo!VI%t%`v3xA0T)0GQE-Y`NHOrlTtq5Swg;w2z`9NbL4v%^b zCt{H-xp`cN{Gn0%FpK|oVcq|(W%U2X`8O%dC6pm7R3eiy%!h?EN@UW>2L4c;k$tPS z(EWa@eXCS~Kb*WF6}Mnhdg_9r)DMN@(qTJ|zX8q2eM3r2(lXi+nRMy)VNZ>@HH+VX zLITr$GlaSs$3&q^Tup`e>W~aFNHD{GvU1JN_p5yK3FN5PSX`UFB4fbq(2S6x$Pl$y z?>|#jCbhi#5qYTQ+C8mg78C2+0UGc8-^&}bVjv;*d%TN{$_M5hr~NH>;>jRfi7!q5 z=N?X$6Y+NX0LLb%n{)IV70A$7K*v@&w2BqG{oltl%9@{1|7-+|N0ajjtP~a=Gi%Ic z5->DEMNrry7Yf=5*KF|Mfe?UnR`h#dcdj;5&5cDlCRa$WR2Qe*i^g3mc!W74{{&H9Tk>>4h{#zA=>ZCr8XNL4XFo^V<_^X_3&+SD6ql0f#s5K0G*1%PmV8#^QC87)RB?APk; z%CtJ-OJ-dtC?X0clVHkPKl_;Osu(ly_a?NbrP6c zxmX)LP`r08<$Rs2=Y6qtvZdPR_p+N9C{VvaVqaR|-H}>r1iy*VgQsaq9*#*50l+ck z=6;30Uud9Tqx6_Zv#d&G(;bXFN2$N0c|1o5vZIUL}DnT;VXYO-q}LnBBqGU zB}hRGS@i=NyrKlv@IN3o$B;pU3_-=1kpp2Rp;4BF_}I`^f@*=l0A)-1a(Ht&u>_&}UosHwkYl zaM*eEMxmgo3wmvQuIV;!QiNmmenmW}s5mIVZG)#j7CtWT(b%FcexLrGC*x=JBQkD- zCqJVf7_uCVcN?!NIzZ>v*jDW~Jn~sjXzF20FZ`h{lp!paww?X55*7tf)$LWR`+;RD>E?b?RauE) zKftqO3#GcLm($>#<@Qi13z668c_F^8#*x(MR@G!0w@G6n1z^J*rLv@I&4q|EGAXlp zLJ9uRD+)QK5z`3FTGJbk9eR>`FZohY;2BM0zMM(PbU#H-F#Eddu-F3E zz(A^9lY_NBD@WB4vLuTaG*teC&iM$%_Z^K*?`P(8F1JuvN^85@D>=|NGxz8h7_A^E zU-Zh4*Ox6n9RKcd$?4%nO-MI|*)tJ#|EFS^QTeN?ioO+>G?#*s@v#Bz#HLiX~fhRc;DK{g&lb(;$e*@C@}LN!u;JV+6d19>Y$}=h zL&;<#QzHo!B#0W8x06$&G5Ol@SF#V0z%|q*hf;qkFd|vCREC(5z;%>&2~~i?x?%CK zkYtI2hggu@ZAn1ioLQjs(_c29kafwL1(sbC$0ciSJ4{3gxsMRSu-q)!LjI-wKs}ry zIU7k=D(y zn5FMXXXb8wA`7M8y@M%tLV} zT+ZW5tTHmbjZGhC4*Xtp@XHt5<$LPA*9lSBEh%y2%ZwRE4~uuDQyo@yt-jfzOn281 z)8d(WQdohE$hyI2tqteTE3c&)9H9_h5_`pxB6Rt`_R(L*P>-*t;ywCB=3r7PXosAR zJ|pq`bV!@XtuE7cqq{Yzy0~ewan&fYbK z&NpAVK(bLLzslG#EaT`0rKfJE0L<8l2 z*s>z~Qylldn1O}4k3Xp7H~!X&gRSmLHzgRkUG;Oh`YcLb)Nl#K3rW*C^LvA-!w)HUVzRsBdqYCeN_WReUK*PwiD8s45 z7RzmGhb}``IuS*4&i7 z(03i6JHzB*!>A4=u%>ZsTAUdOfH>bmRFAEw~e zCtNxfjC{e@+}VSW*IZn7{0;oHYR`6wBAX`~SCh$RK~w5100MTVJ+_(H!8-%dG{mF! zpIMnN=d<3b!r!IY;7L=$;!@v6vmsFx$zLX)tAw6jq&{sG`FZ6@j{o)TYujQ2l>xuO zrftxZ)s*AUiJI-YN)1jW77icw&GS=;>>#=xMMtAnfcd}b)yYPhBoHLWrJIEUGdLqH zSQZKl%PH9~9Jahu>^ID?oKzWkb5;s#Z!zkpoi|ayNCNfQ)CgcmgmN+iE!Y(_WCL9E z@J@-2KPc^&9Z$;!Eu}2CuoQ&f4NRvw7tp+cq4~2AMbRu|F2;-{%#tOSD2hg4IxWZ` z0yX7MgD?GEKNGG0me9+o{5AO`%c)pk5dr8TBIgj<(1KBpNkC4;!s-*2yXck?I7A?{ zP_`&A#s%E{2V@9nXw;T$xxu)aI~&*<`}Z@>X~4lN{&vX!>uaB-L18XRvBfg0-8KS8 zQJ3tO%ZU4p<+@XFa3%e69#em)EYIYfoe%*9G2P~}ZRzdz?^RbdSiM8xHteEY*{_Ox zTK|oI`{lXEdf#CVyE3z{2gi%Py6Da3OxXO=%lHk_4gkZN8B~)`K14qIteyXm^w~Wg zsUOVTPD))8;qV##4Gz~jZXEh_&lEd|C_T3;bXAgeusGGAA}JU#Oq9uq9@~G3KAwNA zvnop#58hv}Ex`wT_ZYYpEBf`6K@GxoN&ka>Ct}q3r6^xZ+xnBP^9^}-{p*C@V59dL z5--v%My4LOv|bbcrSSgxmE6O!)WdrOxXsz^PFQF@-S3-2XgAf>UR??Dm@! z9NeEmLPK1rhD&}#WfgN|=~2lP5{Sgm1C9{%DQt!gq%n6@9X#<+*H=}|0%iFG9elEN zPbsjLGr{XyU|F9F>#g}SDP&ijxM8Y~H?+1PC?bYZHobe$KHYc5AHcvnX zfJIdfI`r)cem>&Grfthlg-1_l;~`JQo{`>1d}8liIu~T1l@^8-4LrLMXuR%O9_tf( zB364dJC^pLo5m($s?)DIx05$4skn0%`SwMM&xPkVx0kr(Z=}QtSX8}^>Q_jH1EOY} z<3Q)Sxoau=L>RD9hyO&wXW|4e;2v+}lr(X@+Zj1?^b*Ob^|NI;Qxk**!75q#1$p)E zL;0-=qTBB;ap=AwZrL*!Q=CeE>6-}dz+;J?_BEB>QtlNE}c{;Mu ztjz6%;SqXVBgLc^_(l1iD`&1APae`gOUCqw+q^#=#$$%N1n{fpY}?G8z|9w;M4+Gv0*?mRSpPvxI{1Bc0JC ziWsSpfcx-}6$N2y^^ag*jRYdp7;iUii}5m3AVQ+Fj0PFWl`u+v2$oHsF&vCep+UL5 zKLwVrX-{}o3Q#L&L@J`zCcEAY0dJh?QbAi)*N$dQ*Wb-!rq$i z8E)5Q97cY#zL(M@WIoyZ8!YdAD+M1->)8>)o9AxJQ5c>r~p4k-`_*oIImP zwxouMI{ZD2&NSRSq%xcv=kk+w-Tx9u}^T#}Dx>wlzmx+3KUmxzv58;tNV=U7x-z zd-Ia#%7eb|bKe}ux+!ouxg-H`pKS^kl4bcCfmH%~Ff>?`ytcLvI0fB0%>%j>@cbPp zhR=#b)v_HNyO+PpD7r?dK!~VV{bTf+Y`gv2w5`WyMf~CVGCk1+a)Y%#w}@J_8x*m2 ztO&1pjRt+>`?&NzQb=<3x_it5@z9W^iPH||`@aL)a$0u7=O`>g79>p^Of-8~uHV!I z1sF!U-t)E@RO8jOAlEWp^8$NRZDNtJ9a)*r{bVObNpZZ&e>WmY^)pCM}>bx9Y*P zUd?TE$`db#fDx5sLlO)*onl{Bsq`Oz($Jw(&Ar1*d3RU00rK40R3FN_3plgL{UZ@C zv~HWa8h_Z#)Wwx7F8AmqoeB)fkP2mi>K@S_C+?d(xxqOEKk$q{{tAMXn@uduWK=8w zd^m^+3{SPJa!F@n@)0enjLb5Ah^|G+Q_`@D)AMPUQ)q}h_a)n04gGI+ zZvILN@Vjx26E^H0wQW%x8B}m;`MY=75lS3CZFxLT95Oq@+B^GD(VO+=M}L?Du8Q9n zFeHzt%ZOS<6nL80h^dpuTjH2pD4Y&SMiK%PCSmqqOdh6~1S0;6G5D`m{!J947jGqP z_Ynme?9a0wWnA$3Y3hqr2F_}>J1g1%zRTSjPhG_#i*C02zhUeacz+*`s>JfzTE1yG zi)ZNZSB*CqC**nfe`aRL^f$~}iPA;IZ(@W<2J<0gaMu(rO_WP^8TIX@AVXZHQa++9pTXxte$HAV2O1^HudZ>2N_ktUr88XlE?!$C&I?-c-_KHcqpx`r8+d zZUpo=oihx+_q_RFQZiNt>8Zah?0lv?vOtT-nl1c;hNw_0->WWmvuXnWyzA1>V&MrX zmhv{3P<6nUleMqT&xwD=ig0`_wJbV(1ZMN1Tg7R@fq*^G_cO4&&19BCM`m1M^~WUr z*%|ChL#P-0JhDj4$iW-P%J(L6~!< zds+ijBBR?-K-jJ_u!%nR9W*V(j9hpdUAPP> zR|JdgqM<(38Wa>iOcX$&=RTKq6DBJ@9+Hf=&;sBSmU{{z`?;#={LT(N*~{fzzgJ*^ zq)Yat;NsQswoe`#al$?O_jw1yKKFxY?#kJdDSJd5xWCoe*lk?!%2@d5lg~Ln!G~!r zE3&{OGi#@8UL1VywAC-E_^wx3eOE@u9~Srt<^FQ|%-lJqIq_g*`zf972cdCiUnc~I zM)g$G{suA!)X|hQF7;!#i4<=0InyUOUv%d9b+GPYgR0jrzH@z#_$7a$FnY^}yDD+d#F111jG-vCOv;OzTqc6*|nOJW_(J(TE1!Ae zwi}McYKRRN27SxXE&etdcfd@o@D*(F-C zWD9{<#UnzvzuIDCfR|G-_GgehGJlSkS^+JLAK6MG0G#vhSBcnP0evgR^p6Hn*yL2K z7*|K2W`-Atd&z`R9Gta;sy;*lCnzKLO#Putc04vZ%dE3RAp&Bn9A|Cp6Qw0`?d)VFW;^U0~ijkf~VJ?cdU|34WW7*~8 zuq71OZDTYQz(`udvqaw8Mkp{9@ekL9!oj?ANoc6SzETOxMpCjaBJL;2g_vQv7?nhg z6oCR$?skmMK5FG3A~WLe<8q@oIAQc3ET8wc{^^!AV@O8fAX5UN0SFPwg$NYZk{@Li z9^tBt5%p7!>=aQ0$#=2hYZ{fDuSOA1zW)Xc z5{v2MlQunkV3|p+<+Crz3F;Ki>T9Mmw|iN4_zgUiWd3mHKIToWnrS=krG~ zU3b^+O&yyPBeK82n8(A4#S_%X%U!osew^xV-FsWc-2J6bTu9QvN7vtz!S?Z_f#Q=Djp`V9totRe^)HH37wtBNoK!2`$y`2RN3O z%Ha!j#;*ixdiR%l#y3+qQ1<%&KqAI{jvgMyK_n#$BY+u^TQhq@6f#1U_+=80n3X8n zT8JAR>;aBG=i2r4a)7&{sg+aOdw06na1G@(mZwFssy~=dL$&D4tDYA>S4m&%D{S7K zGlG0i#aCG9#p6)aXRKiB?OvR< z$vgMt#!7jX#j-#j*X*RA!1xW0f#;oY-e@l&@O1QJ-S+K(kz@B>xO=|5duN5knoYOE zx6mtaIaTN>*J1Ofd@XRc5^L8Ub+wN}HVDQ!}%- zJDSe3D0x2qo(sz6wwTwCAk`gnMmyn@54J-zdz|IuD455;g#|5y5vv2PG! zmSrA2gk>YMQ6(6>ah55b?1p-}1vUvB4n`YOdA_>YkWv64I=&?6X)!_I9EC&1@_dQ% zT)Tagz}9S$vR*ClREZfDyj*+gLCYtS-{S5Dg^N#pyX13EtzUlD?e6qssZ1+CxY_fi zGBunsr#&8Q9*hU=JCvAVjynZqRY~PZ6b?Ot&V9nM4>3aVb|sD!wp>4*C-~ruN>al* z8tR-L&sUBahHT&{(Dr@g@;FfrOJPR6vqG(at_`6*rNnNNfc1LPo4v!@hQh_pd~(Om z%D7xX3aV=ee)mBnD66YWy=|QQ@|0USihp5OVWe$o=FC7CR*XGzeBiV3hMI3xwfm7G-{04ef*RREa8@3l4rjuQZ z`fLY~_kIJ>w*?n+InLPVKYlaB??3obz}M&P^o);a4+`2rUfymj;Fsv^-L6%%Ug`_# zw2^jBzM!+=aCGmzikn>>@8*JvWfPP}W4>?0Q@-bvQKYX2@*)k8wph{QbBeryg}ge{ zu2gh3h`*|Z1zyqIg;(n)-d%VwNx7GuUJ-}2Is5sSg7NNCg(5LLV z4!0|nbgW|e+L}cIRUFz~ihS}nM#c-ng86M!2ai9pky-3@SW+1$Dhx`QT9)t*($4cw zd_8*XB+Lvu6Xi$sjr1|k+*}S45avr_irKEWe9+|PzgHD59vW)}%!Cg5Gr;4JYioBY zf4=O({(DqlR(YHnD0m?GLwJAGBB>2`@3JCVV6A}pBM2@4I4V6N1rt8jgKeJcw;?xdv8UL=lV0kA@4 zx)A7lJk4q80L8nHB|lR3>&4XX^OKet@*ravsnRxo=$KC9rO{C2;lK`)z5 z1>D2hNIip8SKos_odu8>NUNFuMy+R*+I`K<4qmWA2s+d(5v7}OS0$u!rF&$-A@wdj zfmM8K@#k(f)DtP@+`f@~cVMV3#7IWFOt=zpN3`u?!R|Ccs8h&TDP2RV-FXD#aoF4} zi1Lu6^@7M$SIoSAgzZa@;10ZLuQx(No5qq;?04+@^+n4K|5qD=Y*LH&t|lY(+j~Bv z@M3SuM=xq#?_O(~Wp229=Pp*`qjc!SJPP-SRk}d-7iz$fp$7rSf zF@&?XI)tWz11vXC-b5iI8M(>+Kddk*mI=ocS&aH=O9FmqsvgRlC`kI7E50E-LM;A^ zLq`2UDK>v?{$w@G-as{Y6ZczF8UI$i=(ZW@?}<4BXD}X={+fmelok_U&NQDj>DkG1s7*kk%KRFy~6xL9@w#zxti#Fw2~EBnIq7!4wL|8-FOOxy-fP zmO3>+>w<+$h~@oU=`O5xdu=RDay+TSih-I-?8mDNk9Zvkc&ZAlk>hZbXe`VEp_gq1tc{_c2_Pa0ZqBI(=+84R=Yc2fIRh(}XFQT5` zq65EmLoNLVBmku&0S!_4LcZa05ZI}Bbzebke6e5afpgA%G^}>>qn$$k1$`f_3&+;i zo*wI#&Uu-J;K&4hUu3_17upuQ5v)28upVDcDB*50RryK+OX2q|MB4)?joR#8BU!v^ zI)Oox!DzSve7Npuw4*>X)$Lj%@Dv^u7iRPFa&VID@jq3b)OL z@=R5ic+SMif3DLnarspNE9$asf;v~7*E+=Qu5=0yGbufE@D-)tm?!tiRDOM6*tCI6 zuHSOYXKKAf@mA(mvpR5(SWv~rqNYROI*$96uVA?f4pXq-VxTfNN!7E-O|ljEMVHu zscR|ej0x(3Z}tglchf`5-+oI#Mz5`%az%;G-J>u!+X>S{Y*SxV`xbNO{}?fKCprsK zShE}D{3>ZO(Y`pxunrVtZG75MA-zjzEckJblh@;HXwXytk%s%Y;_H0h%;(5=9w(pI zAz}9pk9yG%x{l(~6&zNY4I#n4aMA6(jkhl|C9ZkK&Jqqd`nd}5ELnl*lXVYJHT=?c zu~2PH)T<8F*^6uvZOt22V`E*z`@=X`=e*57a%zBrj*PEAoFBRwGYP^=fk%RM{`l<_ z;t|>Ldy=Pl@M?o2Wbi@arnI1aLX1#u%MaJy9@R?b0W4QPa4#aK30x@0to*0w7jIUtmgLl*w{u@m?u$}+G#JeHDWl6gh|YowIqqF||j<$peUGN8|#U=C`W(raDi z% zXy^{1!!DkrL;?&hP!rxOKQS=0-y`y;8j3BjGZJ@0g~DHm}<1LysZ=zcu}Q-KS?l0mj$laQq?hX$??$u}f)b z>urh>e7#mkUg4&bz>9kTdP7tQXc~Go{eV{`jXBCB^@0WQo$m`#z|zomes)ihr7jp? ziFUrZJY-e7;y3H{RN4zCdg(VP{5(!P?BDA9W#agmcBahGs+gGHpzt?vCIkjm5Sihy zn`h}HQA6NMFP`Hu zQ%rFTtfr>$y76C+tz5ph+;rp17YkvvzUH#f0UH2iWM#4_E1S-9rbEtDQMJbPvg?N) zemQxTC;nd25&S78VfcVjr*sMk>zk@SPtUzKi{xAS{B^Jk?|MIN!D){j=2*myV207(qEczVO>anRI6#C@|XbZL6Z;t46HteF%aZ7(lmwYF4XWuVZR8Xh-h z(v)~5N-60WfI8s73;gploaRKf>uLGP?3tvFdN}1fwBGwnbnLX-{WN1VbT>r#my!L( z5B`nYmo5`euj}3!xR_VntM>819H#ev8ZAaK$zoHu!5y<6!^n#C|MYxKwdFJ8}7}3337k&9E?Xn z3ljbx4I{IRT!=9mQnFysB{FELq5uV!&PcnOO|h?_Fi{zRgb!u+zuE_EjI^t4yP?0H z{QUwcjQu~;@&CLBW@?Rw2uQqvzYGyIWYsUhSitOSA7;G5;8;ifh$0ylWG@WmPaFIO z1~mK=CueH}BuaGTMyG(`FnP2g70Y8r8{1#E9sAvJe~lLdta#}T9xz-l-Zi=%esN^u zH=yyBZ>Z@G?2hewnvdjI_4xx|vLV9YKwP8Khuh`+gu#J;wmEScB0utnMc^yRR`*(dqy!N5Ffa(w;3s=Nc>iymt_C?j_+Fa#teM9!=|3bqb-uGkW4(0Oi`o^DH zVl4t>Q$p}p&gGw@a8v|f1KRvb?Wy44JAUu;k=q2OluG;+zHBO-OMk88R#EVeJnb z(~nU3)P=&u*HbU<-FklWc-o{!KjD~)vpA0DaWYZv)gh6`jnxR?6hZ#kzg?>y2_q`@ zOw}F>sEMt5=|? znpMt}Skf1}^AYKDobTu9b^fDSHIhZ(tth38QJxu5 zdfMeXh&QdsE6oZxwJgO3?){;zQ5!Yr`5Tx&f4t-m&mA{;9!8CtAl-CQ>+22$ zUw#A0_WiD63f^tya|e2M;<6~pmB{n4hs7fx)}GB@{_y+j2kskI@d!LEVW)7b6#NFI z(GC{Z!agV@trsPY1ziDP57244xLw^YeJxHMK>{`9T+Uu`Iao1rtwA)7rG(dq|D2q) z=D35^aBbHwG#oE@U3jdwPMIaDCi3l@ax*e+FY5n5pXLiHsgOp zAL;zBr3?S8faJpPkRup+X;UL@k|CC7Ha%tZk{u70hsR36p2zGVQCz{)d8&Ncj07%~ z$~-STv)>=~__;@p?vxshNkY!R;SRxo#&m*UFiNzWB?{~%%6%(-^8Bh}=`F#^KZ(%HIZxkjr5#1IPP@JctKY9ec9YD-(YPa#pOM<5_Sl>rpKyd#JB^je*OxP8iK-zFNr!k^ zDL$;FpK)GO<5k=#FxSp_Y@U%1i3@ZJc7&ugt4r5LpHJRS)uRSmoiEEyaLL9ztm)9q z4CxT)9W+qafF~Fbxlm#G=>jpsmh*QxSfyI}v6)`V-`GH;=9-xc;}_igfgz!(0`$ekTC$rI36b!)mnv0yviUG;4@ye#5`khi!t&zq61qEoMsd7Q`;xqOlzm}lQCoB&>mUL*3 z-ha`#@Zjtz$gCgutTtJo4!(>Dui=uM>FquxoRvTN{ZZrV;iqjC8mGf+Ewn;V0Tdk5 z_&sLNY>$VdGBt;v%hjJgm1ZV=0%gh;B|roqtFL2;ZJr3E(;;#AwGHk&DDj)`l_&!) ziSeBp>TA@<@yY`eS5+Gyl4fIKc+gtOW+GT`Wo1)or~uO5mTlQMIkPJ}mVCYV&}mx! zbA6~oYEj$wP)K}AR+>r!cj2=*w#LRi(zZ8z#Z(GvZ0u(^e}n_>kWA?K(>TF~yOO5a zZRRY)GwFH~1wZMhr0IU`BlO?kn)XrozB>m-g9D82S4t=>0!;~RUhYU?`XW=9`&i*+ zk<(YF9DLwujon|fp3W^EC+^@$ZdEq75J|Ow$ zbeX@_R{L9%k6*hqu_MKPgW~6Z*(U#@z?apDdi}L2&+-#ht|qbN9)=NT(9g~IV90t} z8hulXhLDRnz4Ha~FcsgDY`K25Txj6BOr#tdzJ&V?@M~@Q=Y=N%s`S~qO`_jDMqljN zxi0bHq(G1R2Zjyu#Lxj2=EV%RyL~c!I3SXUmT6Ivk(D@rqc9x$VBu~fpyQE&B za8&JXi^s{g^4V32WwWlQXY-3fSnm-sn9Qn|5=h&^g3;eZUs!a z)WgfzgF6@+?tl6o5~UQ_E$bqp6onMBY!v`fe~fX|CD%8ZmqxrHYKZaqeE77h>io`L z>;qR60302$-yDAf_Lf=q*aB5V%5Sb01!&bMYE?s$=+;5b)#!~MVibo+x^QsfleSchuydgF_o#2~oVizoedA|1xivRB*Nz(#$VmmI zJ|gdvUY_5h{=8NA`kgIZ%BI#t>Z<2{wFjsv*1_kdtF90214YI1X9)X3-7@vVg^TAN z$k8`4RtE(rNXpnh%ota!z`twahk_3HH@Inqk%^f%mEdQa)>*hChsz zJoa@cin_Ef3&1nYeZ+1@FJ8H|M`O^()9{DM?EqXPF|R=OJ9+D%VINFNT~n*_{c5Ce z%w4A);y2z@Rog$KF&7>cS=#3%YAv5VfYqK*nB{WXRJ5M3YVy8%J}0BI6L%z1_m`d! z*kY|S3=e4H{Gc_VRQ^KR>tKzw7I`wkGQJ<2F6nF?jgManRFeKunQ6F+-B(f7C$U}0 zL`?IC;pO1)H@W|H;V_W%r?AW>Feuo6+hp+{KtZAmdN>=**plMpj-a7t3VXyMG}K&- z`fiDXqs#66L5U8br&Or|LZZ4cvyl~(G`PU%q3F@HfVNaD&+|!^ikV)PsD78`U`RTC zyXM-fNOg_xI3|_e;pdWueLAtsZZ0XT`f zN06%g$#>>gbX`xwR1$}aa;+PaYOTjNje^^lwDak}A3k!@vHd}ZpqH{j?vsb#u1Gfg zJaBR6N=|%lx8~TIcQ5Zr{q!j9a0<8R!gLn(lsg_?piti0)T!+hzP>$6)EHv2)rz`% zaOkeYoENK?G3z`JEu&XFL7#~i$u^5*d%b*vqb?F}k4iS&y)1ZuCOj{$@jN})VNs)F zz*O{B2zMCOe)FZ>RR_+rn}VYB#8DhVkN$Sw@?!~8%xlMY!=L61NOX~`3>xR><^oE7 z)`$lC(Ro*|Nna=SIkf4!WYgYlVbR!Xj&4!j2OFwAQwP1>bnKioP70)coeLI}&YB6E z(CPyx2)goP7xXS*&I(Kqh6$V6$r6q#a}$%9uA;n%`qDnlxCUs6$1G#K+_}oBKQJtC zXH9we@WDQI8Ba)^iKw}eQJ}00fqc7fHM;9ktJuA-Z+1E|kr!1Jz2~f(r!_N6*0Iam zwX1#HXqyptZSJJF_pZr~&&hqEp%_mRcy254io%zm}y&;SU zDqaJ6mkQ*^3+qpGofq$VmKGfs4!xqdbB0&KA=lvJ#~k+1cU6zHUH|cvc<4q)#mO7s zvtz-A(hJC;{&11QL3c0CZ3^4RAS^?R3DD38bUGq+PHGnT;v@YTTw-La2Hb z6|A2PQ|_9RP)XtRO;;Zn+k1Fh#HYJ8F*4?vttB}i^W{tST+8+0jC}4q+e~ZCbV@|4 zSTg39%&UX7d@pZkklztsOZf=X3s_76FOY_XS^)3J!%v4?+&CiVI0y7I?Z7D=<&bT0 zZXz#BsM)p+N2I%1^2w=Urc6!8diEtzKY((3jrC4O}-ejy-Ldh)nyHGFfMf<$iYOCEZ*CvmgpEVEIqztBdOReQnItIbna zZTe*N;ZkMBq1?(!o;@{$zI%D~@caqc12txH@)X|C5bVC1kD?|{p=PqOswT6f-7n@B zwsN|4LZRK9fRU>xq^;v)^l$L;@bzz}XW~$hF7erO+cghiy>Mp@%Ec;AEoU=8_a-V* zX)$AYJ(85GHqj4w^GTrKh;Abqu%8axuFS#C68D^HRF~5xM~bMIGh-kDd@w%!uz9eJ zK9(nGA%AZPn+*q+C#k&3A>K$^5gbueS5!YF*MWl@j1qCoXcU0VnPIoFYz#h#Arbta z{<9NpVCYQAKKA51e~3#dRY54VA4q7AaCj$ckNVPJSy;?7V}F>{D1B@XW}Cw1RLWT0 z%nY=JaB`>+8vzt3%1yT;0XhF7;-2lI+)U!1JRvpm=$xrP?C7#XU8``2^YK#q)=yaB z!mCOU7TICv$On1 z{>yc)H&R*;540s{(pYv1HD3tWg=J8!LrW6f2jZi9SbI3tC0o5N^gcT*D@=onG}rVS zU9ra_-#kziYxai^XvbE0Ebr9o6jhtEc7&vdV&~8E=afZ$q6P{jH4K}I-tGGhsN+4U z6h4C&DVZjptD-&g*yUcuZ&A4Cp0*}Yf7P5n3fSCX9pOyd)QIuR;?8pKDzqzju-(iN z=Mn+#|03=^qv4FczTs;OMsHCQm=riw<|NXq{e(trNkI(ylnmO0mbIzV~_SxrJyZkokho%u>gYgixGZVLu zn-(p9zY{ak}bl;2u(hQ!LrjEPZY(YM8cD_U>`h^r+ZSR|;eeHLT7s~}%smQouHlF)n zo~=MaS)#G+8JhO`8j=W ziE$QGsr?5tbgpEf1{DwaLJVp`QSDM_>Q*`MX%3bUPehwuiuC;#xo z+*UwJIuQ|o=(lhDWji{nIWCK+7gnualL^6OWh-NH$IF*!76}1B`yVkSrG%#sFE;_oeBsQbS=p zHNFp3ZvJd7z3xZ@$gEPW9-hz+HYgPf33IAB5j_d#%}g^M!;TqE52XPIs@jILDBc*$ z&}`Z^on%@>6_!?aFi+ysL4_*dd^>--&|LWDlca#yOCi-}Fe@<|FlBmN9Ccjr`;T5? zOJwjJ!|04@lxQ?K30SHK( z7gapohO>N9P-W%J`?P>l3vtg*qyNISNaO@|iOF^ITnGFi6BXr8QMdBm{>!4*9=_#7 zq$T){aqFtscp;i7<)7(0{Glqq&scZmlby_T17wnvo*6nx0n9|14vcZeYi{T<;%XUi zy=n4JJOL;)YWi%<#|*}n8P3yM*MZzO3>^#)0bvQ;qFJaI3^6#fk%;KG8+gW%zwpI> z2G8x+_%$F?eL0wB`G&K&!J5%4uEkYfVyf)Z-Pke6q`_9jZ?yxZ;|dWQMEZ}1Jo0Z@ zx&3+ftFCp1C`{naxfKeRHDriMJ0ZYgJbE#nR(`r|ZAfF?>}F@5_P!I*g(829sgd)G z`yNd3G=T}ouT{4S5)!hYy`L#-Twg@(PA{2x@ad2f0L3&dBaEAoLhQEpb@_7Wd(QA* z7t1IGn)@9AY;P_9Y?>x*Y>KwFua+Yov%XX2wMnk!qlK6=`0-$RM%U8!?N81~?PtPh$-($8Ps z*tBuf<#$nym&PnoNJFaB;o0qHx)Uhb^iOtPAgESl`R0qv!sr^zF7rAUS!_0y!^#G+ z?W(O8nGA3(HvE?gx(2E^wKq^Mn2Vsr#aeu)vK@nr&MYut)x$;S%=TLkZOlnm%iM!d z0mWF`Yf%85q{lnr9cNC3ae0;1xh;vVyoJTc#0KufeSmn83pcMO?r-OzU|})7($JW` zJZmWc_PWOv8&7L@=ljeD*Dp-_qpz9bCI*VPSos!uU$T<(C9j-(iAvU806=h-y`8l> zy&nu}aPFBzCE^6nL`hI*pG+B%x(RWZaN>J4>}dECUhU6pg|QAF5>syb$=tr{$jcSf zL%!(cq2~Jxf72--5o|HB@O8zVs-ayy)7ycXIOZ4*Z2Yx*la+njM3RwQM=OgSI zn+le0$x|X5k4wSMZ_UnMV}?q|JvV>P=x=-&abCq<1(%w1Bm>Pg761SR4$* z;RHaov{D`>O!qWt4pJ(O`QHD$n0dM;`X*OmiKGsxF8KS?>YjpyhtEA_j42@uaUGHY z4vw&58O2o4sA{prtN=*qxsstObZgQYR%VZ6w8pQ6wsf2f?xIv+gl7 zGd#xib+NQRdoAqtN#Vqaq@=oVhzvXMyt`Q^X6P~csSGcPc5eKp=5@X-BJZ(eQZ-Tl zpvmaETQj)LS4^38o_Tuw^~?QmGajeHPQ%0AZg(J?M$&ILyBie{dk&3|uJ=)9XFnbW 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

UB2Oq)`5oA5V0% zJ$}j1=iTT%Qruwa@xgJ(>CdJSUn0BQ{MS);UOZE-%;sP|nVCAO^5`8tba~?e_8Pcd ziaB`lxopS9eraXbOzc(Ke~$uAfXu4DCji3c|2e_a@?96>k;)5=P1#FlO|G*~U`19) zvG!lO+Wv6c8w@tDRdT_phGJSy?^?EdQf{>1;c zI3ZqX1n>3xQNQ#W$em~BN&pVn=->u*s&1Da28O)}eW}|tl(FUhn#qDkkSMf)0tgfG z5FmyN;1KOm+v;0F#p(>vhvCV8PXLK~j|+WcqVFoUZnvCTu~ozWo05K1G}lM?c;hr7 zgon)->lY>hR!(b{T>||q^lf&SoRw}DPCFfCG*gJ4&%Cgeo>}ngeRSOR!Bl#TQqPk> zqC@C6gF=J=9*pkuQ}CyP@7&A$Y_p>~Hu+Y8p`gc&g){O4jDa0VvMTrbqM`n&u*M|B zmyzAetn+UVW)_nYLpe=n?%v&nN`}1BDV)*~daG#1nesJzum&4CE8AN zDeCPy+P~5G{xqXu{saJ+k8Y3h?uu^;5ep0c35_hDN%7!-m;dJTfx)22q~=I1+r$~Y zYFvhO8l3mVldd6HRY6m0AS$abjL|Y!VLSN~&2sS`s0j*Tksm`PE*I1hr(?J;W}OQV zruq+WYrIkWkmcC9#1=saTheK*D7t~rwYslxIzg=#B$`ks+;HaK8katX4x;T_snk^R zOI8$cH4=;zLd&Js?!Sz8+1`HD>gAE$*8T+mxYwM+P=ht7+}n7!`>4@E4TXykX9AcS zOTh`6Kuz~dlhU#0=OPlf@?xW)¨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≈3iPq+}VS*l%xG%`(8s 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
Jk*p9oj4#%5cwcd>>HXARVU3#{VXX7~ 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 KDg)|MEq?%&d8^R? literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/DamagedHelmet/Default_metalRoughness.jpg b/interface/resources/meshes/DamagedHelmet/Default_metalRoughness.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04874cb6e9aba270a2c5d3b41f487c0dcc7b481d GIT binary patch literal 1300661 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

UuP`Z}5X*LuU6D3E*W;aPJVL=#FS1L&~ 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%0AafFg%=Y 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

E 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

aI#^a_xHvCDW<5O(P-}q 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%0D`~EtHQ}iM{UhLT;0=~v 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

DE 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

i9DwKXoMJyW}u_ORKXGgLe~;mpuy$+ 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�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 {4fhJZ88=LWX zU@v$gR%&0Tw>?ti;U+fqO9ejNFKI|&DlkhdK%Mll?DiV}vw?HHmT( z=6TzbYQ=G)YL4L{7bZ>M1=tK3;KPdCYafc(thnHd0U;vYaw<21=2!?7Qz*om?A`9b z@vni(zYhO-%g{u&;l+0YR1Y?#5t3XU%u5SpIcyqB|K3EbC`08R#K;iiRi_UGV)vrX z-i8PbYvhe2&dH0Pgk4W_{jE`w$O?OQynn&KugC9p1AZUIh*RL}ny(l7J4Sd*tC81x z)H+)|38&lY6&N55)5zYa{W!+Byg8lZ&T_HWoeOc~0H(#Ind_Nle%9%eNPlqG?q70- zWg6UPhJx-zQPcin_4vGwDdS0Qi%Y`dVT}7ib(oFLc$=$~+z*rdD4LNUcmliZP-kOt zQFL4aV>u>DC^J1}GE4NBHodPIn44s^k!M|SE<`~9gc>oY9~BPBjo#9j=#-COFl4hj z>RQs*(ejg&kQAA^nUeCe1vJO@(5*duyG`|EY5crF- zFz7?y#1xItzgD+!)P~$uud@c48%((UFhy9fYpgo>cIwU05359V4nMLi6TthLOHZ%z z)&;6wZ-TXc#xP!YQ8Q%>fFxjs{TqdDPDqWg7#V8G%Mp2(i=ujoO#YKVzvUjDj9@5d z8sAFSn?r|X4hc43HEzlmFqPn+Q|Q-JP;HHNE6JTnIG zGJU0L=M}HF@jM&n9mR(!2ude`^6-=EZ@kO3NJd}@e&K@`B$!yLaGsTr8q(XUwN4-F>tB?*8ER{cmqP<;TbWltRZQ5S<4aZQx_g zCw=;~j)5Kt&7DF`l!tw@OL@?V^g!U8b3xI~VrGpb||@ z!*Fr7_IQAbh6ZGv z#bzQmbZ8-`)N&$eeI>}w$!Y)^Vn4#@!KVQGtkn9;f@|Po@Kq*0>KO&H9oF8@P|VZD zu#!)U94n!fmk@?Cccj;L7zYNi9KgBX4iqrn2@j!ydr&L>LwTFw!i>{{uB+3U6q9)E z&lh$N^!`>Lp~f7y1lbP9ZD-n^4y?Xx`GmIa4ffpUjMk*2g#iOj^xm-XpO7l^FPzt3 zyX%HBkDO4eHJmozDw7<+Oh|Bj5K9?Bl-%eGhn2Xvrl%Hj@q9B^Ssl-KKD=bY%$uN6 z?+s%4Yhk~ym*eEJEdS!y8n;UlyHys*`}?Bqhz2caL;k@Z>WwNtK{0qR^Qdp0iZs7O zx8RRHCXjYsUqq_74N9!;doz%lX;NAw8N zyu9bx0vX^F|JHB5?*M%cQ3{_rL$`t6CDki43)=4sozyIiZGn8w9)dig5~_^eMxA(eX@nJ*VA9#K$0n~j-2S1Q3&3@k}RLHdMd z+sC_^#U)f&eb0r1D1I^^mOjfa0 zh$z}PVO69{W*1>DU%7>9+&1aI%HZSitGVtjky20u5Qi?KceJ;+s4{0E^&i7g7Gm8%$F)@f9`3-%tBkf2> z*k1)Vwj~v_Stg-(YR)?TyTPTUah5jSnv+9$Gwttd6-Vlo6f-)T!9zP@V6YghwS&{g z5%R@>|L332rOIo>gU!8@e~2Cfr-Z(00&W=iS@Smpy-VOr%)+#I%wR>unJvL;I#1gZ+iS9L%q4@zsYQTe284X624;*+2>DMPx$b&5WxN@w)MLc^ z{^}s6XtwE)4Dhy$UyME23vkB=)=Foofg7%Amk%JzN^xm4!hJH0Za302x;1vq*K+T5 zBgN+SRC@*suLI_nW6IKZj&eGfQPV8S7rPU-hBTYv3cCd8?y#U8)zx#kT6u_$ujVR5I?gBDZA$R`$O|@)PcGD5!vBQtX`~! zgG=6iMh5qI0|UZ4GoV>NC&>WOk&ai4BQuxtu&YKfN3*@F>a?v^uT1PR88G?$H|pmV zPTB|Jzx-f-6MJJu!VQv=_$$CR-swDls>A-n~`oh&a3b#=; zw^yqb6DGeeH@jXAiF8KyUSCdxcW{|}(p{O4)o=wR2w0r+K33naknQ>D&NV@IrWUF|s>P!s>Gn1s?K#^q1S2jpQxq&z!x)8@& zw+*5?tv;R{(!uKHplklAG{Mz4XL`PcN)cpAo^u69bDNnB(GNnMY;EF0pzL{+PY8?=YAAsJirN$^pHKCw+vRt~|NZQriR@l@qmA=5kwVRCD9gJcJtMmdc@Vt?_MFOnk{XNE%ofIGpSWK2ZLJPb3l4Z{FmsBOWl|)= z$_A_C8hLw#1Q%3Xq=uDaw4Sdon?Ev(ZscKZQcv<(_|#R!05C6Tzg1MrM%Uuo$AXix zePOP$o%VNLWHE**Mb{Z8jipy`3T>C4^rEV>?^FbFHTnRp-fe5}?pv?RgfyHbiosQ4 z3*Zs@zmf<0UEj_JcSGZ!#26E9+<);!pv8AcO}JEwS1kBJl~%!Q^Q6e&xcC%xsN_gH z>&yH~w_+7570>2(xo7(F9iEP7*Rgf2vUF=?0N5`kXn%5no{*aKp!D^XiS=&x>j{@4 z8JBV&<#RG1yB3Lh72bn1Rd%?&3lMv`ik%P9LYl8hEC(Z4c0y7e^Hg%X(w+={L;{dd z(PGAt+B7q^0PS`9PW*I1mG-2>dx?HOI^*%51vysq;i6Glhs(P)Tuc;BdvXcMi*i`K zeGb2rWA1(-IF`2;7`mH`o;LqaPx;pgZ~u#hVs0M~*e@HD{v8t==9f_(@47_NX>`#xZ zX6xU3R8%j0;5Be`n~e*Al-(HiA6W|Dh^4 zuw|>d`QAUc8uA96-Bs(N2y)8<@Xf6`d!5~ zo`PU@iZ)(i2+r`3+ZZcA5Md%zU*^21YBttIoc!N~88bPmRAt=KzB`|5_oGX{wQgSn z7|HTC7)^jnh#a(g%w3%ZdBicEsV^DDeT>j-2X2s-wzPSuE=-5<> z>Ux<&Yv812i2)8Aj8Cl#Ggxa?7V7ceKhEvpJpXwhm>IEt<{FCqvn?3l@kcj5x6|z% zKb!*dFmeU*Zl>&e9*|PkFOb_y5K#ij){Gcu%B4;J;)iw1$#CAyu6K@?{na{Z;M?4^ zmMVYxUE^_|Y9Q-$MT|^|?D)zN%F~q1`iI&1G~TE@GI17MHxpN2bN%H88DMM~|8}x` zfkervG&wy72kuxD2k2lvWQ0u(LP}OcTb}7jXEUrWP}3$KA79%=d2!>Xs?%KBi)m~m zYT&Ktov~-z!pWA^U0M5#%MkT}SP6cov$sJl^!6L-t!D-gn-uM(as?adU9A$Ga*&3I zUs|oC=n)7vz0i`>EvL+&@ZU34<|-D-C@!Yb@49IlbyPv$WDeql&sr;jIn~gI0CJnxg^&!!!ia6kMw_%+Ph~bSEP%@vp6zf^U$H^+>7fBYt${U z+x6~ddki%tP)aSP_`_KDA%DEf)z469aYEl&pQlv~JCy5)XFet_z$3o#8tv2%R*&^D z;ThOFKU+9dRM{>1S6G9Ie?LWtXDL}&##q9Wi%-dbrj7NVaZPC)lyQeTwHoCaRchF4 z1WE9ImB>}XW}EWT3^7%q+OY5>nxEzH?ft?0u<7$=VfCJB=f&H=8ZX*d z#hKX^yLQ-A;Ug2~kF9ZuvWQQ&+y_s>tjCI<;n9)C+_!t=r}f?}I7XJsXBc~H3~YPh zryi4DZ;K`^!V5}2r-*$=?R=kq>B02YrBd*{z2D8@C7{lRfzbhH^ZNNw2|phhP`RS{ zlaN6M^xz4OmEi~LD?5kDbxW1tpt!hW-jhZfVmRic_g`;Ork^vM&UefY|Gw@;koX?B zeYG&k&9phODrGW4W@k;bYprvcF)Z3E&y#a`rm4$&1X>`qV;~h3k?}yYJdpj z)Kt?Tx*yZ>X``MP5h#@hM!5yp?54mS=RWF={ImiCKE-Eb0LLL%?nAz+;a!>Jvs`s_ zWGSycud4a&at9TPf@PT~Vsw1-8vC%D!mKN)sGZ@7Hr3cq>~i0PQYcAHVw5r-;A*2{3~LTIJv} zHXh107F9$|qOV)qOuS*F6YCNM5k?05KC||?8nPNxoi&UHpW+YW7c9@ofVS111u|fa z4DgL#zwRXi5Lb-@XJi0c=8_CRLoege$0$-9HyPkzzIizh+$IAY#|q*1KZ z$#k#P{DlM2zF%y22)p!--x(tVmI(1-ntz+gfYwXt+N&lBl83|T%7yf~wF6P%dY25? ztGXhP0bNyBgesEL3eleo2#Y6bUL0J7#ht04EQrd2J8=9 zA56580jJA5#HM3XtAs#zJh4G@uTy4)mJIME18UF%JP?LFgd#+ETIFrX1mC=0_rKds72CF-ieEDm&l_5*ODH1XFjX|ATnN+QN8`G}EMm2|v9-oGJv0kZ18HtLMw z&!9!3QqO*l5B4>_;RSBp59Lemy01o0eJQ2*l2c@kQ*cZH(?}UwVj^r-YWIiosx*hb zEk{;lq2ZTb?a?CQ?p^Htw4D|n3FdX%?K7kBH;`L)k5_Z!Q<1uRA;x>)hX0qhIovx7 z+jyq7zT++sKn4gmk|5`ih?Q&mZ4wzU!o+z%1_%d|Am;)nz#}2=s^WA1K_7hT%^QfO z_yRH@fD8~zCIXNCd+`Ia^dmM_;W9^70UKXHA|cM>VFDZb4zT!Qcr5DZ;Yt7*Akq^& za{VZc7ET5TjynM&9m;4_`mZSl3D`!^hJ7 zYEAK}nev98P@a`__XpWYOR4DIumwOOrUSG3#a6ek`-Y?w>8tmr#`Fz=duqC`+g z^9{rdsjqODhoH(VVg4oINCBRDrS8IDsiR@`FC6(5?_%+Eajp?E`KkdXN7{=RWOJ0S z5ND|X8!o| zX~!5ro?eRD2XP(R*1o`JdZhcaMT1;oYoQ#MBGz1c;exx5CxT=Iv^^~2idAATQXCC! z5mAtYf2_#%&HTsCX&P^?elRMf79`DmRQ|h%ofLljx8sF_c1kQlFIY8G<{^K{5w0wj z`;JY5Xz(H9SUA|nC_LaP=ez5tR25aNG#t5lhwyW#bA-=<>yOV-Qu|rWZzQag+^dD! z-FpuzV2o?RFR|Uqu-87HGM6E>WrmsN=??;i69R*~`g56JW5rzGHzw8pu!s+vP#oVF zeKZVJun}~Gqsql`P;oozqq)#2hjgoy7(c68LwWS)6U4C7nlskBXR$@QCEhTPqR-pZQ z;g~d7OcL0ug<{%5NmYAf0L+0z{iAy=AcT~+3&xZ9xJXrdhgHE>P+y|vJQ?sVzCj(l ziAG>L6Nxe|q-7CkU%Ojfb7RNw?PjsbNs-BUGVWP znAjhCkU}ch`@bdZ#cl4c1f809l7L-p5De6bSmjIXDm&2pKrE*q^}ec#Fc&%S+$Ls4 z#crI%u13VJqhk+}NT@UtB87x%A+6jXLfwc$XR&yVIHIU#bR~zSeS+tBPRM7M$=Cx| z5~AV%NaGQhNF}cw`D>IK@{Z#m%vO58*e@WxSVTH#LalQ8s|Rb2cz@uVecMMp?|raN zY2_3}VTw{hb>fd~tGQhWw?mpw$&_XTZ_;|cx$nnYn zb&YH}hOF%bR}Uh^*oB zYn1X?!XrCKzYF#sChQ86(QxZaSui!Ns~H(k>Xl7enR&ZH%ceHU8B6_jm1DkuWUDci^3hw4>*NTUX z^$v`knrQIYo=PMp2eC@(<-6=YwA{R09OzqD&4Y!nd8z_aE3;$q?OQN3_jYeViQNad zmt3gKV3zTS*k3uW*GFSHV{0!XT1;7LpDY`nk^!El@t$@I4;zg;EVKYYRBy4i|Mbu`I(HB#_@HF%4YP^O6Dnf4RuyJ1(nMA$P z5@Ru3Bpl8(7rYUsKRV2&cH(Cbp|O`J)ldKl3Nz);H!{{ZHqT-;j8(G+D%0-aetZPx z-ODWP1Ox(zOfxqmF;F8eit&TqNFUgOgX}b>Mv22ju`le|`@w(Q`)JHMMz=JR z=QWl!L1?<;IGp-ME(48}^F!PXq+Z28$+%XLG=qLL#Y=-a<8l)Z_DN;PNzNMVM7)3T zL^&mjxoKfbMNd$-{_EB4j_mpSiclu%jV~#DMu92`0cOf$ zt5%CPw-y(kFm%wB%fb5wN469+)TBmTq)>9xV^$0Nij^MFusWkcX70pd#z%#PRZhhq zfM%?EiYYUZp^-1p4TJhf7wUKwWZ(6MQ?tUP|{N@}&{VOlT#_KFPdp3Z{j8q#0{R zS3G()(KN|4=fDlXF{tptRq#{%6VtCy<5*j)5FD6<_PnqCytcf1f2;%gFl_4W2n>Ez z@_>nrhjQW5_jlFUsi4~Y$>?sn(jjg5Wk9l3M)Q`r_SU9ktm4{M(BH9S*$S=12d;hY zJmU4m->Ue_yf{Ro_J%t*bcF*yil$p*b~}QqA1Q2f2e~fzu<)T)AG!F5vTFz-vCc*A zyJOT6W$gozARYxJX{>IB#T#|Oo5`ZoNGd1l$N(Mod^gH0V-CUobrCV{tWKW{MG9BZ zI>uHW4qMU^;KKCZ@)%C;GIYz3BeIsos>@Hv-iE1Q1J+Sl@cNEgG51cWTvEzdN{n8H z-ssPgMwb&>OX0PpHJ6ey_slZ?Bb_HGiLmtO(!_d={9dD7THAqM^G}s8c<&}|`z(C= zDv}H%gc}l>72Wxjy1>R9cNvkBe%z>t0p#VAPs!s|(Hm`R^m{6M6njDh@F3K?po6oN zs(r3Kmz6+lfj3i(j^oW6#kC?*{9|N&;I8Ey3-Ip@)Q5lBzwREpfRlDq-dSvS(B{C` z{T^q|+F?kKCgP^}5>I~7%yhVFAI@*ufS>*Q#e3!Z9_vK!?2%3#JycJx))$C@=4>7( z$RCG^?gYP@tCiOYq^+4BC^vdtf{d(WY=udun|wXP)YxR#xpibBJ`?~SH;swDDVN7# z(MF8(Ee#3WuWadlcOFAC2mL>5zWW7k#7@Lg4><`a&4UPUOt@D%fbXo#*`2m1{(qp# zynI)&**!C9qu5bV4=R^h-ArTbd)PPgMc_4ER8%fihl%}TTE;q4VTPP4BNx;k zQQ2iN9!>apek182`@eLZ%wrBcjtn`To zO8jRh`5F}86XZw+;UrshMY_b6q7^r@z%Ty`W6dSO@wg^ssvd#!S07MAHo&D|$15L7 z()?=d4_WTLnVkSK;G5x<%`xda8SvNP`bV5*NOR|Pc+(^fPX;`J{);nUs2U{$7Ju## zjjIkQqYsus$$&y!+;;rG$oTFX2M%u&!Js}Ih^mehuw-{x z_H3+gyGq`P2M6)&953UqZG?N5c3-?JivSxIElGkm$53ro$z!KFO63nfh-F=B*qY(6;xFe*zaB zPt=uo)r28cMqGs+SxR+lLPlHpw$F2{ImOXgFG4eiIv8}g;H|v6rTyt&eKIF+V{%{c znr<8jeIf+&58=#gdMq=uig!O(O2m+c*AWi5ElUUF##@|OP1k#o{q#6GKB=#~gND(3 z)@6NH@J?Mn)_}lSp~vOh%)sTxX@M=ALaY0hZ&Kf{m#$juD-R&8VkC+W1WZM07OwX3 z#~?Eiiykw$$Ngi6zcE!^WPpD#v1d0Kx=aQ%k^xR+fD1T2__~h_sJ-g>S9MB32AGos zNDik8*DI$3*DI$~S3P?lt~7VafcM0q}EO1H&G#~{2pLS(=)$`Bcbme;GlnhviM-%EvV9jMRpdtSMwB{)p(AslK z2DITFPT6zgdb-JgF}|ajlGVSXJ0zvIS7i>G&C$?>Zl&FUlk0JUfcqJ$nSS%sRlR$B zU%=g&homHPuqPGdoBRd5(h2pX5D?e|kO5zOl;FHNQS$n2!eDKQ?8%8gAl#U@TbGqG z?3U7pt+vj%ZIP;_z}>1VPU8Eip6)q%bus`y9aw*mdvH`n23TG(kpbUDemTt+^8~nF z7Ey-{sI_S=KRGKOS}3<4G4pukn%Eiu7h?3VeLTYC5rmr$_{FB5b{qqu4wf+KWBB+l z$7O0qopp_hu`@-1-!a-z)$aujgA?C>$se}kdr_&dsko*rPK7cV1-sPpZ*%)(Kt8`f zbZ^{g+c}CR653UPS|+S?YFuKS&-|AS5eF_i#O$c6)eG?H>eW%D>*b6(q~`T;~j!W?H#_BcCxXz?CEw`M1HuR-oqV^sfTXv?yliY zF>;p+y7RVPn{?02_wL%udz*M#Q+STZq)Ao1w^qf(g{1P&O+fco2-S4Wv8M z9ET-uA_%YU_-mY^Uuj?3NlF{IYK$2LJ0*Okm?$eDihK-Cj*w!OZdQZd_c@1jbPNSPFNg#GD7xv z_sqnZ3?TR;2q(d0Kw0v&qp7CveEMGp+_P)(J8>gq0AAu{{n^;S*{Ez{-r!MNe8!o9 zi)I%79z==ia-;{l>HTeGbdH9P`t90HdhGLro+E4J51F#2Hgwu;PGPJn48tPA5!T|I z4@QG*t;?hIa1IHJu(mx1nM$kSSoue znswk5{Lj;K&`6g}hPAs>D8&<1bDUD-*qZ>x)(l*~hWz9&6kFeowe}X3N9rc95&dHU zYwnAP6IMbd&~3TDw<7fRf~!Z#&~I>CaQe>^Ol!lPi<=#;cJ+EDn46>XVakOJpAs7O zLB**Ik>8hTtYx33wCA(U<&W+Vy7t!>{W2D){c8sudGul|&UA7j-pW`oOa+Hlf3?Ex zzx8+;!|_8qYM?LmkGc`nXX)WPHXNDo$#(i|Q!KWjk3 zE6TgoIaB=zisSZ_BS(;*$P>c?uVW7!Xt^X7nHghbw(9a?xA49O#rg|1rl3VhQWW8BQm6pJS&Q7!%xc0}^QhtA7i`&66WUE*tZJ|xZS4h_pF0Xi)tR5Toz1>=EGg0ineL=GFx z21h~IJu-mxJNB=zyxDETH(L!Ja)*gFO?!eSO0a?!C68@dpZTaxrxQMDA2Bo=V)~A; zSlaa3!#7p@?^u5QeTeMJ<;|@tRaA6Kf1E<0>gAuB$nX%`yH}h>o!dE???s1E{T1UO zprY3Zc5X#*Oh^VTl?Myc^Nl2{Btkjxu|m2KM}&lwxs1_Ywgy8*{(XCpy)?VePQI7H zkdV3V$B42YMSSAHpFR?>csV)u1!J4e4N&0H&BgD zrM|E#NDTk{?b{|+M!D2HC|u9=PDLha6CJZL+ur{Nx>Pv6l#5BFRm5i1zwe=U2uS8r z8(%^roHPI9FWEri&+sQ03J1RH_oox)OQ`KmTBl_);3@MSAG+gBxM$I7IVJDcvlqR| z@@OEh8GW7~8<=ytp9d|(B+d!;4o4>2A$JC=46d&^nd4->uP}H>)ATp2cRP>jKCPXe zlG@90dC^HN=oE0JZrY})`MWYo?L?H8{<2K7WVxHAzMxH9SE9!N^Aybw(z|!+|L4xi zc>WB`9p|J3Qsh;%>}|>KY9@4dn@_}l5s(QnRw#8*OZ?~lcnccNODUq}(o){T88n<` zfzOwN<=+?%4G?W)_3#=*Y$<@)x9AU86lStu4R1o7v^H$k{PKm}FDM(V;8MHu!OR>S zin6O;uiBaQeEF@g|ztIb~H4p|$t)(<|>_s22*ddEq?lo@u{uM40#N|hz}X6~Ot z`oT{XfwW#7GVI+hRMPbCh6C!(>`sl@2x1{Q1>+}{9Ra>p>I3S*Qm`;p$!i%YLlsMmGHaMEN@FGP4sCH9S7)FGSO)xq8n&KukOm|Hrwo5hbygMQdPi8udaM6BhydMv5TNyH@Fu z20gX0rrEYPg!S3n>X~`w374!+z7ZdF5}$;q>9g^}!Ux0Mih$(NC5ir1wS`NQ#LZun zAP<|o(=09ner6Y27wnO%NREgaJDr+MD@%j36~Gh=eJP6glmTRUh9#nds1MBcK(W;Q zvC+PED=36BXCIH&-zC&d{po^>4xlJ=P?ci%t#JF21Qx~y86Rg^L6Gr4YMab?TwJ(( zO&nLe8$9vgx$N0GH^PO;iHz1*$b8^+OmK`Kihw7!0Ne7Dxoa*uRq=L6uEG7 zB_?Xt5!E!qOI6&0Ywp2Y-lE3v4UjgC7A!QHP+?cww{_DLAN)^xH_L}k^^sf%?hnCG zTa?totzC+yl#!kzabj!qs@9gC_2vh!2wQkpU71kqY0kzIs7|UZl)X%GOYLErZy~BMnz+7OiuCp1s*{dGRFDsMG22QXzguE%8u5_p;LE6nZqg5tAVp z(#nK;L^+Nk?lyq|Ok{o?Ud!y#^B1lW+SD&8hSiGqzOh{_r_8B7brz z^5jOcn8$RWi&9)dlpA$9=AB1%sdxKEUXH7P9{PTyPd`|qVj#Gk%R{lUR*F~KhkkUI zFmI_yu#f&`N`QAbnHR_?-YB;o&J1-LdN3x|AKtnqlpW}Ll*P0=%;9rnys=DqOMZ3C z&B5H;Xh{7E$oL?2_8|;(8n`8{%OM`V&s(_J^bC{Lk@9Hq=YfQuQxi=Hk)2is*~7MY z6t_(V%!QZ7g*}dpnOWH^?->&~vvwdkkR;7C-#+UZr@H==5Pl}B#R|3Vq+b~9GqHlR zPis%hu3j3c-WqOkjn>B=*Q<1Q&OjdaWxq-Oc{I33d#qGjoL&CFF0xrR`Bls7IE4>v zN+aeU=GF2~r+~bcamP2JJV{+%y*4fs<0M2ZeY?4LVHJMyi6TS51DpL&p9gLAtU zXZPCM|4E;&r_0ZM5JHZ8!xuBUs9&0Z11}l?fZyX6VI;hR71Jg%d3<+_R7Q6!rQB$V zy6o0A8O)96B?Fj{?}19v{Zu*5nOIgo8SSkAyYD-bs9K;f1H46s<70_z! zhJ+zCZu~M28~n-N8e`(M9IX?DTs^|H#&0igc*>qcB+n#Ce9j2scDBLB?M9OU9SQ|R|GT7y zlK8Oa<5vsJs1C8dtA%5Wvo>}999Y(hF~7{i5AAVr(PO{N3}d?IT;~LWf5cpYU+A7J zUHH6j?$mI%21+1C;RS$&jo}BK@fN`y3P;1^IPSCV#FwRUhI?($4U+zS(BZtoD6n(i zfP<2sN7N}`uwX*?lvzDT12-T@u}Q2{ySh#rqWUrs(Xa)ME|zFmyN+Gmoa>g?F$W!F z3V*q)oS06p+TVM!r3TvE|H z?#sm_pEtIKuxqs1z)Bby@T9m?on+o;|FnI`KcJYsLbw_;_mT{7F<8o79UL&NM7(fS zAKEvc#nkl`BD&IT%ZUk0wQduWskM=j#Lpa|qEzF_#P; zL^*QDJkG1Z8FskJPi+G|^T*#7YqZhnA~}nA)A)p?ZVa{$X0-*;JHBdl4_~YhKg=!2 zv0|Wr6@Bn40)i9WC_0?7I_2*~Bg0X_hX`jm-mL)K}hi)s(tN`rfWyM`h@N-ZCn*Dx596V@Z9b$giF_!un zmYujF|0F}!q4u06h0jpBZ)+;CRF0cncPTEyWf7llVo4plnU7sX>8!F{hHH98#;dJY zc6aIae(bcv;}3AkRma2~V)=;LK+Khp>>MXGu;8i{X5`_zMkE88AD-tkAJ93Nd)^b) z5WjuiC+O`uR|}<0EE8Vs_p&vROYH0|KGagGU8hQu6^->cP5w`)dwGTnq>KdlMB;>>=VN;xXmP{ zdD`tJRN51%7B?C5hozdvq?%Bs|JVLuMZE-x@Kl+qf*7ncYS9X=h7Y^zl)oZ_6u?c# zyXJ|3gOXB`Hx|ad997JN>SUuC1|kNk>aMoUyBAgdISa5uoPsn)pVw3_tS<)ev!C7N zBDj@srt^a$9Kt+Wb`Jf*9sSt-zG~C5g?}rU%t_>E!i}+iWU7$w<=8KRie)8DdI6@! z3k^$KZ%4>EJ=u3)b_>=PEx#^4T144f``(Nd$)A4wit!|3;?qmEQ^@kR@ztt!KZh*8 z&wUl9`gdVe-tT9!F$b!0f9-waY8Te`f`sw47uQ)CKz?@8+4*U%nAv$-6s>*0<+=XH z{|4Asdk%<^JW{)?BrV7}lKt<&F#tYrQ8r{HStk=ePS^MAk+!EEuHtykw2N6LxZ^a*FTmvxkU)*)#93%z`4z zuI3<>Std;PxuN>OyQrczUpnl4cyDk3l>VVoZu<$LNp3iFn$uXdfp(pa z>_X2ECHh5*Dmh+M9q+`r+V~0Yp-TQbOi0Na@i$4r7*St(Fk?C6O7DB;o;(Qkq3dMF z{_2SFHfbc}JBPZ&2Vu6Fr~1C^zW{XwjSLPTql_p;@zW^S2Wn#Cfd~>PAG;epJi!I@ zQCA$m#f1NlV*CDQ192DtoYt;Q&nRL`wMncNAy&0UDIIq$HEL_mP8!7C<7`@^A*rI; zZ?$HL+Iu9#-ZO|jB8ct%ynn{?!-EnC?han&+LCOOp5qQQ^quoKo9BB~csyLjnM%1k z!XEUjU3#W1+c5iB8vpP-kCORIP2IqWOLB~yvnd#UAS$qBe@l&{Ejq!Om}SXag-r}d zWi3wEGoQIYqWH`rND15bag}GQ#2;c*!Op|JSaW4Vth?P^p8AjujWcNbjv7+qf{fAMx z8<$()Kemq1JvBLo=|N@%uY8y3>uQiKxGCC5Xsf$(+c{S=w@vFt&`a)*-_4BD;e4w+ zidrzs%4kI@KwWB6N}y$OW*OhZQYBVv4VHMIUz-^qkeBXc(*VTDO~EknGwHYfn*z9+a0#55UUT_A!k}-6Qa+L^>;dPvXTW(RCihA|Z zVF&IjZ&MtlznK{M7;t6f-#QXZe-Nfr=l1J>_*Xb*j~H8cx8yiC8!@u%*bFP9uayBe z)xe@;H(q2HWM7+!alZm6+O(j=MO<=CnpUvAv*j)iHJ1dor0;I_*{6-q>YcR%e~IiJ^A zQa*n%s7X8bOaw}E;eur`DZ%--j?S7^s<{=k<`ek+-!BJX#v390Z{!|O21!z*1qr{@ z7QIr6Tf(^GiO+-JlLOpQ>8N5Q?FF_2FTv1(z)GtKA%_Wib}(bLhyXMBNp!7mrdl9$ zixB-YlfZEZPi;<}02{WVqM$Ek4!OTNcUp-kRJkl^bL?e1`SrExN~fnC#j8sGwIixd zD#pxgy_jCLOM~rM+s1N*q=Z~XMkj4Q9POrxz-i~Je5PC=jy%9D^>Ftzf_w!SB5iY) zP*f9`d91Cuy}$TR)}Y0SCE`5((CMS&Y?N3whGR$G8C{Kl)&}* zs}V{kq2wd4t7h$u$i{k?FXEa`z#&X22}D9@8H z_1Mm-A^l)BCc=eCKSJU6+v;d6X0BbEE8(C@ul* z*XSU|+v9!6rWFzc=IyzIq|Sywr}GLw$BZ5 zyZ^3&H?&Guf6nhK#C{BF4GV^n!Bw&1QBBBW=}_hNV)I??6hSY;Av%i+nO#dQTm3-3 z-dNhsk`-M4*wzvAqsd@;&1bDgi(4@;;C5{Lcad*i%H6AV3BJZz>@g>vGHJxQ2#L>* z|Gra+uNbLu5S$L{BY^)8I_u@qf#*J$mPnw zwEp9^=qZHsmFAOHQi=KI@BWqW9Gt3`N_@Bcni%U0J-wNL zbOJiyBk;L40_Hjoa?=c0nM{84&Ut2u8!{Vmwl1GWZ1-9?uPMohf4&0HTtdRjJ|7E+ ziM`>{!gm#KyKMkgV9LB-ioaRik8S<0rL8<0CYM;iRuLP5=Ci)9&?^8AcN7SpiL#YKCLkhJpjmDU4{z%{ zRcZI!3Cv>0@pG97@8mo?ofbw!xr+W55F!vPzBwpmMe7~^I#_CUmMtVSa ztO^UiOD4Jy^m%t+U5xa(#799AXEWip2H30d&oXAlb6#-k?XWl1V`ubC#W#}4VUcmFx1G5;^evw72Y&)@K{mYRIwS{7T0VUt?`+YwL7bL`qMn=?m zC5Zm4{~hT^PYKY0m=+Bqeq0E}{A$}+-!go@@Og@K@%UvHhaFk5`Efm8uFblCoVJ$L z7^2-RX_1C0NvrS1XQsGc_Nqy%b`Xt6zy-JuRlquz;+%25mt`MXMQxHf z;FtbDHi$&=XZ~)`cTv>fCQeU_4>n;a|>*)>x*%E9{ZP#L;Wv8F*GKR z+Ecc&gEVEL%N1ZiMASOJyxpZU4)(8sfvLQ8h74pDU51SfG-Cc04EePA@AHb6y@Ag8 zOscl2E$w0HNdkN#f(<>REg5yv!Y#LU87m}vIcQHxRPy4#pLg9{q+nTn+NM`do=^$+WA$u45xz(By1K`5%Nc|*@%Ei6t^0%r>kXon~1*_+` zw9W9T6~j~JdUsW;Q5EVa*OeswoDv`ij9J!gb#fn;6g4F(Ee(^trS2B^PVEt@ISzUK zKOD+@m#gjuX72Pb!rrD-b!6^phrj>CQ7?31AuP??5ArtKn$Z8UhD|fPL+J2fa5X7V z-1_@T_98+WD@!PvqL|hlgz%Ampb667XsL((2|5NW*?w1mwx;~CZfNa7oL5 zZ)5voP>CXt3sPj&tW{*Hj7LiH1w|)A6Iu%^o4ZoU*cnjD@-%_iSBTax(J1{qLcng3?oZLmB5WO0up^yM;}_H^|>1 zs5`j!3NZgbu>>j|I=qA%Zw~%tH zW2+2@bl$0O&F!c5>(~Mh0^<_zqCME7=6S7WnOODgY2ZD`Acw{BYir3?#4WQ&U&LRp z-a|V0>R!8}P&7u;66s5CsW`xvkZFD>ZwUiG`3;Rfha1yc2p?_O!ORtaLL`j41PMJH za{B53^;t8l{k`I$o$K;+74)=LkRe@`0;#H)cnN-ha!;6Ni`uJr9cT*5bQ0q}Q>Y(0 z9sWSEAqb--+|v!QV9v63Ouz2U?9+hjeZBu9sV=W-%FE5Vy7rV4a&qmlF+6Q|!s>0@ z-hxGP)F*E*Nw%yzbat6Z|LhE4PQ51}$RK)+k%}f;`_{eeTGbBxqgm&NM4>he z=azTSen3rp?rcyOR$`^!%4YHUP+OIVKVh;Z#NOk#L1!Yji4E9$fvT|sq#xcW zpQVI497PxY+(4}6`Ch_LPOak_=0ZJxIyszQ79gW8^P7=PTgI1cdj4u>iN%kW?7N0S z{%q2AUKF&-P}2ZC`7T>pW(0M|mlhMV4FS-X9<7TItg!2Cj=H-a$j36%W+JK}wV}@C z$&}la?j&c+8aAuKg4n0Sj{9ZPy|ju5a!)I;qr<=>e2j-%Rp`Gq1e1Dleo~kkKaaj_ z;U4J~@+;-kRy2mU-5NS%{_Qe(M=YQz|H72eREYB7^K2fTj8z6i>hvXd7vtxg#}!|) zj0phN&>-FU zT|#8li{B`6HCKF)>3VG{clSls>f4FH_8+l1IW5B*T3ankL)vxoXW<2%p)W#%MY#-i z3$tCYm*?{g(AnBJJJz?d(XHbCRi7LOfBu|55YA%vUGa$7f6Of??UYF*;>}fZoa?~9 zl|IE-IVbkE`;)I_aDH^2mI?%cB?N`IU5r5g8n?3;Yju1T;`FJUW8Jd%%AYLkAq*@XcMO;7SPz={=O4wN$kT zJNLOOz_JNz-eyQty^T%g+tBCuAkDm(F&+i|Fvl~B<15r4Wjp7if{zG76)5}wotx2=)2Bi=^MG?$mvaM`o}vn7xf ze_r(7qFh4b;2Of?PlY#p@~aIdt$0YddgqzbsmSt6?!X+bX-ipU#k!X;M+6{rf%%3B0z0d&JRWdb?VQx&9OA#gn&mu!J#GEipP`GwCQz5pAC!ML&10c ze`Z%O9i8s++-ygZjn2j-G$~MbM`}mZb4mr=0DbhS|I@yCKBeDm@7QLgw~u`L2_Y~t z633f~sR3QG@~3PfPhv@Z^((tx-a(YmLva((i{OXce^}JlYWP-4pG2!i)(5bXJs)Ow zAr8IrvC3yi=OJ%v%)N%|C}8Zn4P!UBtlXl)XM+ZRJk-K{-#|=?3yNzGeH)JaS-p&D z%N}PgQc{!Gy3V@#OwBi>$aS#p6Q==8aBD>=tn? zfK`%nv%{+qQcTtDsI}(=v39%@r>}^H`E~i*2hu|lwWRzeHa?W7wb@bqyG1Fua-1>$ ziU?~SmJS3^#%`%=ziAo^u642KRrpR~$zJo7@JuWW=#Q2sTbaG#KrJrKF>xQ9pHK5Y zX{VlSpS6oW9Nt6-;q_`YvyLkL)^j}$Sd=z@mLmhg*D|dSD=A*`?;|-6Jk^tWs`(B$ zx<2I6TzuRMHaolO29QL0ovnvte=~f@ycE|;=2oj0$oOmMjc_=ZZn2K6?Ghhk$VTU{ zqsRfjHGUprDgD$<1YQ}*rKK{0jq3XBcPQLxwBd0mBAePJCOMJ?zFXtGc?y*uG!t7ETb zLI}_FTIF1aEV;E6YazN4`+0oiOljLBtN($Ol(wJ}vEDYO-%$j>?@BYO%pct#uv}J$+v@kYUGr)+|wg=t@vJxQWuVi?ehsEad@O^zACkDJbYkvSykI z|6O^n|0&lx)GYH;QcF_l@93cy@eq5VasW!5uu#JHdq)AlM=d$h-*zl#v7IPldy z6Hku%_$U88HdTEBQsc=?a8{G1w4^Q=65JZPOZdPOI)EK>5i**!TZs*YErK??b5uNB zMhbNC?3A-v_~T?g5q-ATA4ohY{w67bVYW7@Ub@W+#2||me9Bw-{G2~kdE|C>Oa6>; zTI6@UPQKPruNu^%Ry$Krsva%B_QuOd)D`p+P^*bQrgDdd{{G*IS*!8SplXeU(@>cB>4e#k6CEm7&Q8no1HV2cg)2bmp^QkuZr~@8~e|)6{n9>*gA|5=pnDT1y zKzii5(1qutk-D{vD2)f4jgew=%G=@^caQNA{Pa*X=gx{&$q862BxE3ohF}eh{nQ;2 zN-|Oc@vS-TRmIA%ZmgVy1lLgo%}kt;Xy*@^4cj-}W<2S6mredOu6na*n3PFzL1Bh)WnE8C;gb6gYG%Z3uq0 z09APDQ8l93JNYp!L%p5Nq0gU&)+oqP=6rYuW%u+JaSnRkbav9wvx_fR8m+Qiy#gQ? zTTWK}I&Cd7#sk^lge6Rd<#nNbcL0J86#uFT*=!>1+!WqAKR>mcDRXtsPP6#QcB6e` ziM&h!JG)a62QIeRM4xpfCx@92dyjebO24cVVslO=q0VzD|1&;3OEqIS%+&~9hD-X2 z|Ey^>v{I1G+kx*)_%Q{>fH96g@tm=mk20+^vdri1?bg3db}iaV&3}5DW|8iQP1SdC~ytW#60qYM~e$+oUG)*ln<=3D$EXVh0J zQ0th$hLH*>du(1otyg~J$7pi!vy%N4sGy@?hVaIKrz>wHw1$ncJY`)?Mi$c)7t+Y{ z0a@Hx#at_8)6p21z;ew{KwNXmyB;w_m!ICgi9Z7JzJflK3XImb5`Vuxz!L-!k(afc z{lGqFsr;hlhQCZ5&gw;AC1HA9Q|5^pW>HMMZkvHMLrlin&|aS9XqV)*a3&~ux9cJt zm+?A@6`4(Y#~Iu>{8wO9u71lc9vS=l50)b!8LmaDFWsjR;$~QM#J%4tvR451D*$Vl zIQh*nYv`VFXzO&-L}(W17<2_ta@6^LY391E(-ZBtnW0PSOWZRbJ1(scl~0c6yNJ62 zDED20PSjG!R{%)p@)ZE2vmcsu&VF7Mnsp+5X+#SdKM7rE>gGNP&CEE)E!TE!>2zNK z+LP7xAfT>=>MOwGmkQgaO{4NlN2z@wLyTHYOkGFkJjEvp=cte8PT}YBeHSk)kBfpr zMhr@Ox~L8%Cw1rDRXT2%rU|^}MSNqZThN=S(fMsn(zfr(ek|&eP3OcqbOkQnj5{|9 zJu$qzUx%Bp#9tKc!xg2ieNJ%8p<6lxgHV<8+AF~1r48ncv`<+(!L6jOIRw5viuz~J zUSXB{jNv!~G28ly=K)+dtX0LaQK_P_Gi6_YMf5Z@9sO$N3IM4%P1zsLyCCh;aWhu{ zD7=Oen(^O!9PJ>5?V^b=uj93^R4mSa9;3EE*XeoCgv}7taWVh6@8hF2E*EqK=m(c~ z?Nn7&pS5&ehtVYGT7T=!hd&yRRUlj*O4o2J9I1W`CQa$^oO|d@XV#hNvt*na0Nz`{ z9MU|i^|J-MH|VcLNZ*s4Ml;=NT@j62HWQV>ye!!YxCc<0AErBPXl&26?|<(Ds;$yX z@P7llT4v7?_%{Xtg${O1m(OVx@Ck*4Op$o)0TijN8^SdYxigM8aE`yzhs- zU4lQl&Ljy4oV$QBIMJP|jqOM7Q^+fL&K>=d*&V&zR`&YX^$Z5LwBv8hjPp2f(ne>wneyN zK@1}*tS{|eVl}*n)1@ouu@7-`6!_hBaOJkICpLEW{^(B4jwO4~y>+KYQRN(ye-Ug{ zQl26F6jYaL*vwT$0~k`*Uf++@sFkcSmZMkX^(Z2**_R}A}o z=ZR0sP~A_5>y*oFo#`cuJFur6L4Pf$xa|gJ8Wz#RvFOsE*-Iz23YJ{Ot-{XK9TjR& z+WQ}kT)ZDt?A08EYqL;xFCt=P9&K{)*Z{IoQeYTJ-BL*XFC`@bel*q^Lm4%i5{AM^T}4>nPwyw-Qw z#5FlzGWq7J$4NvLg`t9x@ktaB&yOvt==7xq7;$`_?w9PR0G+g*=w&Qm-&FiTv$^)? zcx@a>8G1C~7nP2{-}05~&m$C!_6HfhdQG$J7pRMi6OLMW@qAg1V+iHO7XGPivffO* zUL;B=?#_LqQ602lPG3DK!BaHA0P7^pW)g_A*?6X*LR1+r_IzSCdCPg*h{D%06PT5g zHiKHftK_!sSSMt};4P^Fnb8H!xz|X}4`O(1`o=|dC1~pCN@FggAkakPN^v9nf+D-6 zGrs!Vj*gezh{e1Ba(8KZm>F~e#{?Qv^Xqu)`Yj*y24QYWH~}6UIQa^Yc*x6TD2Kzq z>eT%wAACG2VXnV#J(}?P7WL|4JFT~}u2#Hr+LdRk_V(}YClhcYYJ)q!zl+5l#-|=R zYM&f%u46Ebt|uvN%{`E?Rku)4P1#-g2VQENwgw}$qnb0LQ(s`PPB*i{XDDevt9!fSiVl^v30 zji(@FLLGa18Uc=6YlxRkMtiVilq$U0Ztgbt&v2_(0mO&=Iwiu|?F%leA6r$_RQ_uv zEmN^g+c>aTciFqOmvZ9G0}V_l=nMW}oj_={rTp zx%5x;4f#3*3eMo{>5^gl!1`wYBop^0-92Dc)&uJVqp$$n_bWhZuJpml7IS^04mTgk z$u9$gE$x@@w0Wy>`jGJrQ&-6kOW3b@rKL)2wjgIkoT2zL$sU9UmY^phsCK)dxiPCQ z`*fb?ISbY-l9UkR;iZGa_3*d2=CA$zldLA#J~K89=UG~xZBAC&KV>O?<nHJa<_m>4o~4->+yji0?20H)jyFUY^lllc2ozda~!e)CF)K385tt% z=KH>Oy39ySt+!uQTP+SxMPwyb@4%NEAeD1aq-0~_bj9*au^+3u%Ak6N2WK)mhwsf( zC&OIF?~D?EjD3+F3f>cz*rROUOD!>zu@xS!R{HZlU31GHH%!`dtRk<~HAa4Ow-RZ~ zT+?~~wOG@fZ`mg@4i@>`Zd{W|Ry^=qLyDQ!j@A|g3N=Ug2>Jvq6=!q5V~X*!-?r~k z4ClM)VXG|J5iy4#FM3Oc*WC@1t9Gk%qYSHz*cTT&+kTg64>Fn4gDI!HpXMH75ag1Y zF};Vbm2HOCPxSQDeLR)NLy|AWXC}}>XS3IYg#t@|XOsNu(}M*(w7CBRj5&`znebVB zCNcyPR<8899W00RsIZnON=q-+WQ6nKI=4Hc*BkHPI+ocMPadij-|)Es=PThI=?Y2I z=jBNCIUs1M1s-s|uQT3t#H^<_;B_;%ype0#3O^Rt^hf(L`$cBb;m&yxtO|@mT!L;9 zrc^XA`geU-LhczP07#5<^WA>F?>B6p_IA@7DcrjfR=pI5_$N=dVWvdA8;Q`+x3-S@ zIA*o8{2S||W$~(RI*32hH6Fw_Q*SNfo6+81^lwMX+W`WU7oFn1n%Uxg3Lgi8?5dk^ zGLL%5o)EmscOhAib0sQ?$ce{j`lDSzC8> z3{3qjtcU2bU-ih6VhYy~?zNH(qbQcAl46WpNRS|X^bURBfr3mOp9 zZqIR@|7`9F(CdAUVx;+0$0hW=?;4@`CLd7om~NTCdZc(Q)KFks_qGWW^_wul;v1&{-*o@o$_$ zOE`Vb3_OV!#H z0fG*P1BPEjs?QBW%{vr@^rNRx6GPJ|op)s4h-O$| z$!g+%(?JL#=*8WV)i=TEbi?K#TbKEfrg=s9-QpkMsFfvzN|)>f%k#WW>6gJ@)gLc5 z=42_n$dQ>8P7P4DiMO6}KyeWgQxqk$yj`{?N3B;a=2{1Uv)FPz`GDj z4K3Nh6B1NO|5~cI5kJ}nPmR><3vnV_(cJu$Y4>EhUZ zFB%uxz3vgU?*gMc;&`NY8>tYFnN69k&v0I-2sl)GR$)}QVaoYog7Il|JLG2vnU~X+ zuKz|b02|w@5WNwIj^e-ye!c?uSJ+%&1Iy0gK0-k3FLGd|kc+|yiX}lnB^YVY;BO2+ z#75PUXJX~d+G5+^5n6awe024``uk|p?|y4Ft-|SUIEz9=K1knD-9kGF4m*U|+Gp`o zvt(_9Wxp|M3kG>YBFxm@3Syw2gJwh+>dh8ZG=n5FpZw1FvI-6?GF45m-6s2apybD& zV;3I~`W!V!w(ZvepVXHfBOZv~jZOxu4K0veL2Izdq{9@*$FB0T&I@i|NSXUgV%3pA zs2}8#RaKwDV>YCzqVE%+<*A>h#R4}Dv1znD+S0c?n8swKNaF<^M!kD7VuaVYh=MNB zoc8L}z=6iygeAN_(wzeO0sVX+7i={ZEZ5oVqk8+~lB~m`Cd^9Z@gH}XO4i&DF0AXb z(;{BliBEWl^r>u%EqDC!#Ff+t#R}>$*R2wG*Sd~BHV~HPUY=|fEcWQ|b0^F%q5hWs zgdEpou`rlkmLn)^&yhKt9opg!GsF84g)uHe~H!S;oN1rl0oH|vfJ%lUN(<6)SouYU^pPcbNPXNp$XOzelOgNpP&@P9WQ! zDN~(O-Z`B<>8`tl&Z;euM?kVChQDjWPZ>#qAfJTXz+dL74FZ(iuZ@|X$5fv*P_`@P zR!PeJm}fcdoa8b0tmm{fRbIAjNVu0OH8b)1-of|x?wb*;RF3xxAN;ch;Iu(_cSpH% zN16#v{}a`VIN9E~lDK7UQvJE#Zlmkuce&G;3V498et%mdH(8MR{t~`4j1~fKt-Pq` zFV(eUBLu;i_6P8hf5S?dTD6`2UQ8l9UpNY1t-}s)@(&+Y?C#?E8oAi?*+hsBV^tTW z{r;Nq;(&fG$4s01<`XEvk0^a#j_alpu?(x?J?Ha1myQhqy8HH0>YeI@Ydu#0HjTx! zrm6B*=27jE`waFI#ld~>U>dxXe#b^VJLc{T=;Tx6Bx?{-znFpeu+dwO+*#xLw|4|A z)+xm5(u2J@tWWf@r-O5AIQl=!O`&;q{&0sxv4*CJDW9{Sf3@1}HxOF~yLzE$L3f&i z`la`oWvn1q@dVC*%gm*mm^a_5MxTQSd@oP{a7O^p#R1 zF~aC2ud2S}1!p&nZw{iQa-ig&S#3LqMW>%Cdk8~3Dl98z2@8TP9KKIb9%1C0%fA!W z`~zNZ+s&+0{(@>lL51Fp+p(|yaMzD@=e$c#cHOPq2;kPi?%B3#?d9ThYvIOo&fD@I zsX<$*`~em_){iFwwO9<5!=`!QJyf=Z11IPMVA*T%H-k~i;27693(lb4NFZ|s1&P&8 zJ&pY%rM%oGH6*9CMR|B{9~T1t>e4cKY*3c5g1w~OLDV~y3J%VuNz5}bbVDrH3x-^y z!h@U|RkV6D?r;mRs)?C7+Osk&=7 zX)Ty*GbY{&;_xwSf1ELliHo2E?&ccA)6DNys6W{u<7`WH}!>fk) z@xVO&(qOU6Kq9CtP-h0lAt9Zr|Lof*Sq7M+=2UR0JVX)fzHuZ2y;4*`~U(@a$#wvPJiyuQZ7 za_L5A+FR!gTQ5L-J6Q!k&cA>a@I5M|@r%{`)~GiR_=A)((D8#=bzzczbDVWt>|II& zD+Y}4v1Ew}&zX{C`TuPl+Otp9Q7eGPh%9I%Cg6=VT{3~8qvah@gX0SDm#trZYZt4! zff(DJ&Lv@^a5dtaK;~RQGZ(^-yV}Q=NxvMbS#zz!vQ-Ae8cYATz1bKxCBs>{Qpr_< zPv_i!eU0v%uaZSWY7#Cgs$Sn$bFFIV=8#SK%n3r8*lT9b3v0(tNyl!P)pH&x!-|Qa z6ZTHqez^#-yyWKL4@V&i2QZbkRBr=#YV|B#o#&t@6kvqPFCn#dkuBN&5!! z9pv1XlBZKW_1y=@vJz2~SXG8^YCcisuiDFUUy|o4WIi@(hqk{DbgegSS?$AxJ(^9j ztJS;CG``L}`a?@|bC6rG0~nqG^S=<@?6=HJE-`c3h32gt)elj>YvbWv`9DGKuF7kV zTe|V;^Vj)X2$Da8=j);DVF*JobB&^NH&sHjrhN{y9kbpvOgw%3X4W<&{Tk~0tBWUH z&F9e|lXggoark)D<<|B5>xfFl!2169SegS5^;%%hv&FzD)iVjf+**8s48c$q%eN2a zp=cfkzw#Qo7R>iI!Y2@wu>zaB<=Td?oV$EZy-T5upmYwQCMOqUj&(unP1%zJ12U@n z;ekx~{F9Fb1kjH81Mi&i3=1*LjjC0kjN5XI}w`mTpvNK;)(za(`2YmB(>~ zdhll^xtA(v%Ucf}>L>n2gk<0b?BS0mC$zm7L{EVcuV7wZCj=5}$tL*~w(7Mr1xbX2 zMSCB|n5E(DXE7Fs1dhy>?kAL$rGbZgzxB(1*$ohVByXL_I2z>|WN=xn3snXKu#7o{ zU*8B+kC`WG*a%E#ay376eU(n-Ex3N@>dP)0o%eIts_%VnwuvR14%CzuqvEA}-)m`r zgCsa=<)m@S(t1N;T>)+`RrGdd`e z1&w)Y;SWPume~3V!brXX3loOQ^O&YAmZv9Wvok{N5OtJh?PA%ED_q&uqt#3%tZQn| zp7ZrqITCa?R?&;m;CtJffNpn2= zn@6$lt^fiUG4^Y~U!**ue6kb|p^aMcMLxlWiTZ91nw)vhDs9qd;8Sh2YkZ`q-w?p?w&of20D}R2;O8Y8Dz71X^i{(Hn3wBO_*vJ2*I0oZo6FT zO_SIvC$F$f{k;*KS-$JM+81fh4h+*YgL0j6*;9B=Vu|CEkdtZNnF&>cg}J^e{h%Id zt&{b5O~dvMe-|-fG3|YH_pY6`yQ@Fx)Af_-q;E58aX~_>A%#uE(!2EdyEyF(hiF(2 zBN+5zfg=us(NtbB$;q>o`QEWet%K}-eS30*84an(OTM??or|tOdS{sZ^W%p{W^Rpm zzHgS6^9xc9uB7{2)bZJ@Y6^LYN&JLc6t1v3W^lH6W?kZ`V08t^(#0fh&SOHP8_qp~ zS#>-WDr0n(2XzuIADx*JRDTI9QMF0{!QG-PGfjt}G9-N3s12San^Jq5moB%mwI4X) zslCian)y>emr>Ugo$V3-=iM55WCQZEd1=nXcpgWr>0#e_&HM}z5osM6%jRjFjw`ED zTFkrt2AQClOqL{bDmmvzW;4{@GmKLrx^dRvWl=N#2&VAdI4!2tM5Z)^N&lq!M=<=J zx1JcyxdIG;E1VC;|2IO0Id){Y`%@+TJt6fpb0N!)Uz6s(?QU^u-}&qMzAd6=zi(6* zv@4rT!pM}&di}XY2mzD0!&0E^NE!NzY*82DDw?$Gq1#%Qr!2_W#&%le1ct$vYbT)s zt|8HBNVo`Wg*Z7&*=>KjcX|!|+YfA^g!lE7*1$f~4pwH62-dK5()j4yYEr3z0V9Sx zDu29GwW>}|XGmT#cn~XQc4y}3wv<+!+aZN>H~ZfGwTJF8b_09vvgb<>s+4LXGE}rl zXpOg!`ZSlr`51Q{J`1+NBGa!U10nm6)#|tjF^K1N4UGUWf}{!yqp&)66aF`&TV?_B z9ha{dC8eBa;NFI2d3c><`R-oa_iKrg-TdKBu(vwlLE0 z@qdn5UzlLp^&$J~B9 zb2|@=kN!f{$f-;+J8YI{ZJWE-WwH)^(f8#vtJK?&aq5Z9`7!adwukw;`5pfgT|*YM z=wh%jd+Fu8njh@&=3+G2cK7BtVtOe8_km(alS8^WizYIldjstn&a`#jzU90RlvB9LHK=GN-vcAhl zsUb@j+2b9Pm(!IKdKbf<$~S`xBv2PQT`60$1!t2M@-8uOX!cP&&7Q;skHrEZWn-FhE5l+tVE}zZp31P21cqpFs$1c%!oz@kimm z$kN{zS!!i=e{lV%RhPX2V8Un4Y0Lojtm|6)r|c3vSAadEQ{YNkV+xn#kWlOOeu$#z zUdFwh(T)a+`$Woc36#1{b@BoxIlS&ke`MK95@ep|){g0!PLIt#QS3B&5bf;e&@Uqy zBQ7-N=N~!u2>*IRX^qKeo$>C-t`9-=#g8D~R{CphezBQDI1I95(zc$Z2K{A$u!&0o zCqs6clje=yFsiPOf3|2{?pb5`KJJuI-Tr9kUEc@wM`l*ST0A%RE*90LMO~B2g&m29 z(jUANJ9)n}bo2n{R>MyY0-x8}GIjYzS&8!ha5RFoib1zFP}yVx(q^^p0mp2+;#$ns zpNCyQtnMl|n|g0q{xHWuBtl#g4@~NzU=oPae`d$_xNq|(>`k0??RD>YJ=7iC3!T?l zEl}!`Q0rwGd%Z#p#pH`+-D_4UXAAo3i5ULzBtN{cK{4L=WI0T)HA!tC8!4i)&g@w&^cAL7vXma}vF}CCr22+t?>zxqg_kW;YhtXy-1 zzGT6dQOpgmU5)mwI6wA3c7MU+oB{VdifUgSsF13466^Z%s4E>N+WK%*NW<;?lwpdZ zBffm&D6b4^%LvDGnKw>-Oa`O zD3HjwD*7Qj2#R&wgIou`**AM(*paE$5W1c8mRlap5}C1;6iuyo1j8r|0%L~FIkI!`~T__c3MfS zBR`3`rLXx%a!GQ-TXKi=?S9)pfTeUQ60~`2eX5~&e0?|Fzk*`YByt3H}7Z8GYq8o%^!O`=PD{jo-0R zkWI6cDUnuC?F%!>Ekk>SBO3XA@vv;)SMEW}rp8*FmE+Q!MIDjtXNjV-mPH>DhZTxq zmJREJq*7!G?Fa~W!^lCTtWU)cEIxhzl+8=eVc%PRX_0w6_yojT59`7X9Z=pG_})|v#!7v=`p>s76CGv zX!!j9W5&aS3S#0=q5EZRYZ5Pdpg^@A`NWH!A8@aXDd=j5c_7~fStEBIgh|Q8v2nkv z@erMf7k}<{5gi^~1=S4pd>g)V1%OV|qyBh=vpfs=+xbNHN7$uoH%e}q1{vJJbf4e{G_z_!9hU@M}m& z5X9uoT9Wwe6#$>ZFx|DeI}mzop1)y!`|w5{RS|ZZ)luw?`~70acLFbs2Ydaj6 z(f@p$T^nXj4%V?&0m{1%8)P$)9Q+BkSt9yE<4WRu$y?fCoyI{ji8K&gUs}{%jqy_t zd_r~MKm>N^>IJu+jj*otPcdA|0g1J?(@>*@r>_NNP&!Np!uM0s7b^QJ{VEGU7`CVT z6LQCnx!j+#Zy@pz5?ls1?;^|*Z`yYRCQprQ*O85KHh*4MCPOC(V>{+WCEOgB7XkYx zSAe@;6w;jADD$47>Gy5X=9OU3DCJ4mF^=K)oADv0l^H!_V8g|<->a?;?9Yp7hBx8@ z?QZncLE8{Tz!<|H!s-k^PQXx}3q=o;Cgu8@c_^CZdbwvB2+2FGf+59;%~FWpO*IOhAX6{s|V>8x(6Fg&n+{8eQ0ZWfpP; z*jL1>h*E>MSgJYO#cIvBNhNR0>gK6hHD*DA_?$MvUSgFW?Db;Gh@#gOAg<+9J-6!y z%w7b<8|w*=dzWeW`BxBh=NP-T6qh+R-PaBh#5V9-OXPM2U#Bvwc_gPUxm^ao;A1M0qfk@;F_h#z6#<~u~$Us)KE-l$439|Qmz1Cd+voRfFP&VB+!<0 z=)t`(^T34rt4FhMChoi{L|Ug}>utzOF$%I=-LpR%!a?xaV5Z&|>oK&3+Qztp?oE(y z|GW8vCvRfwel&8K-o0*Aqs_aYkqv9E0FsT-Z6{}~{|6R8 z>A&Cn+KXZd<%5Cup8X5Ma6QSmUjyI#woIN2Zqo?_veV7v2c|Lce?GRa(tY7Grr3@i zSN)89@)lzH_4+#W&;I}(W+ zkmkzL1T(4O40FZC@eG67Pf6G~wO(k9m78RE+mmEvn)*E24TZ@wnSG~?l2gv3m|?dE zE!N@mswXTBm)cmu(anZ&A?Vvsbzm?b=1)2Y_KGdpMV}Go+|_43PVJfvGnaXB{_Ir@ zxGlLZAm-~cFDbgo<-L-gRpInFxoBAzGpxvmG4^g*l6MMmmF2{TwgVmCEMuE__2S8Y z5ksSHM#p+*z9Qfuzg{!X)=9S-ZoK~O%^CJE-o9r8u0KDSo8n);H(i_?XIVIeWHfbf zl*R|+{{SHnU)lSRDE8X(hvVaGxBRpHuw;H)aqr>xyZ-=(-dm~qB`7KR@RGp4pDP9X z9sd9>z~g@#ZH_PP^M-hSJ~JGjMt`y?ag$U)yF1|ADEM5Dj85a{x85$GIwz!q0}2r{%yRAYDw}ww(&-0s*C!>Jo0o|K6 z4nU8e6SU`;w|))?EQ0Ut`SF7c$NPUXhr#n1pWX2fZ;kNN{pEiwZ(#hRI6c`=%3o_@ z{NfgLf#@csxmd1S2pIMNi_DLzK*r>rVu7BuqJ7`y0^epiPloaRLmiJl%VHlg35l|M z((eKNCz8tZ{{SR?&riGqk9+t*kA0s10Qvs_VMgTt0Myz`{(%1g@{iFw zU9O3b7f(yd?A=THN1*ES9nV)t?teud;vKIfcXy9ab$@%Oso&A%>De9KB6gm=FEjcS zcE?Yt((!k@H%as!SCZ>?F2&mF-Vr{JMtiyw>z(f;^?6+`hoiLi{(Ig1PXtc>tD@kB z(#*Fu?t?B#Vd(imtje>FeSQ(`5F#Peb3Ln`$ObA)n3(7d@b(0VOUBOKejTXT6| z$bUCS%I)Y=hTWL*k}32Jd2E>u49cG6ndgu0eA(cHhI?F>;mq`W2;x3aH{|31f`|JU z{pP@*IA}|k5YxK=1uzv^Ww?((D&Z?kUvM~!IP=Id_C^GUcb1vPvy8rWOzLg zb(5<%-5<-G{AYh^cGnMc;Qs*M%z>|h+nZQdz8jB!{E&@RkTd-(i&omtj0NW2XAoFo zNr+4I2mb(s{(00;pA00BP`{{X-$@co#y2Y9yK!1A4y~Nu!99+1gcjh-c+ns9-$TD zA+#6@^;iH1Y%Z>j{im>BX-r&12sZ+VarrYB!yeCHO^3ckF=xru|A{xzNd&kX^*1My9RIYk)<9-B}H{c1vQzOfgvIEgg)xpCMkaF?|9x zTv#S-R`17h!n4iEC{bi%XgSO>zCI?!MpLs&iWW=4=j>&xvb@WL6jX4WR|9v9;mlro z;qFt9Z>R6(Vm(i}4ZlQwleza_dB4(c?EB50zlrtp>A#45G4}om_7Ak@>Yr2je}>cQ zN~vY7Qt`@WVd_I(z_nI+`rO2NPb{>>01$;o>k!f^Q?g|NUW4{$?Rb=oTY}@Lb?ARl zVd?mowig%mh^}->WBSa~)Wd(LQh@aPAo#zzXzE=0zc76ty!eqI0^S3-gbw?0DF#0C z*P)sgw|+U4mgzjj@xG&G-d}e3j=w+Dw%l$3Q1B#dt3(b9D!MGeYxr2bMJ>fV)ku26u z9{&IlT1Enj;81Ong`G!J-(F@)iCA07b*P?KvgQ>x;peX=Fy3^_2y!qqT zL!MfjKE9(D{uDH{$OE&<=`UvDCrj1)KtvT>((~P7m!?CEzO+nGf{3NhUxIj`aSLYC60y&H<^O!xV z1V~ta`5A}_Cq>}?MpM%1yv`+swVe>p@B~_UKo(06f51Qn2Z)-q1Zk=~MmleBk&;*j zR#c|KhAkn+0hc>u&W;aiaPShA#jM@QBx`wPvLAx(^=H-ec6)-(( zP>4BA8INKdEj9@iD*@p@no{<2rl4+KA@1aS-EYWAo-(43sxOC%Jyo z*dfqe6h5^BhzosVn2iF;J0S%)54;$Dw#u)1TE9wxYJ?S3vge#XtB2!#r`gJq_Fvu~ zr`P$84}msr4PR43_?rC259EEPAbyPcjO6r(=b8SlB3i6d3ZYJB!%8MncY2L^Jg8kv z@H`^J3hdn0+vR3nQ-su5vAv9CON@6HG>tN|2Tsz|L^z34^_f%i8NA*Y3vvU^Sj$HP z#3Nx9y(MuEErcy_ea~5vkX=dw<;i`Z*6qRl{opsw{W*+o@b;A;eMx}QRc36U*9jJ> zN3sCBgNSvPmFiYcflsswrU7B)nKp)zWIC|?!JuU34pQj2C5cq>5ab<(u2un8;G7R`pQMGrzAoRDh0|Ou||ETu2T}o6yT{^p%T^1V@9v?!pNE@374V@;Y*50FWUP` ztF>_h1{sEPU%kr>47p(FqV*SWCm9WHJ0RZNv4GySzGKz!N+YO@$%Z>7QmaNO!!C9! zAqDAwUga0Os^ZWsymu%n;a(FoGg;~mDNR$3BHHcnjhNkAAM@4@RUAID&{h`6=(Z)! z^?#V6V#T+=W@rQptK1aG2691RWtIkNa?;X=685yd2&KI_UR}f+V|Olyz{)D3Dakye z<_};nV&THtK#&FUaq9q}w`Jgb#eo7BsKA(9A2PVrVKIJ@#Ah-($LSGT4wn6XBOb;m z%AOxts7<4QM*(pP7m-e&vk{FOW219Sq2<9S@R;Rw70^9AS?>iDEK)l>G3H#ZWq|__ zEl@sY_9pF`VdWu^IQ2zoSe(JH67NG4#P{_Ebuv#x=9X$f7vv#J@|P(Egx6iFx#koO zAL83XOUxjSwHcQsMpZVC--*C+ES(PGfUvOgx+2EcRCu^GuvKc}BD~V!TV=ddKwNow zAVR(ZvouNrZQ%a^er7D-qs%%Ug=%O!fy%rA7S(B7C$H`*k30|>CA$ZU%{zSfh*eK3 zm00vKWbxu%mg*|E2G_q>a(c)ik$-*1TgUA}K|v9HepscME)EHJABa$E>GJmOx3*yk0u$C$QO0^qo}_b<~cVGU5D@YJdC3d+*HnZJnntlwb#Odl-4#8x5X z?ll^vWY>y>0N5|l5q(2T51EUC-72=UVqA*41+gkRp47NB=XEyjT@D0Dlw)*_V0o4;r(mD?f+4OQWeR@r!F4WBDaNioTpS5owM z7g}fDQC5<9%zg@C9X^vOG}T#_5IiL;fqmqab#GkCnV|Epf>0HutL9rtPp=RlIQkI? z=Q)bHz`xW7Hqj++arAL0r{|F0lg4)!&<(^&#RX=RY6)c?PFR!(8H+_=Q{(sVF*Don z!}FunG@8wlxkd9##_ehMj-jrNO0Kou0udKYe{z-?zE%tVrtx}sCzEvkgfYm>z%wfJ z#M^C(I~i)q^UgQNq)5TCaN^=Nmu+rf+j?+9LYDJq(U@YjgG5y969~$(jq)+XSG-rm zbw%>eq%6^9P}3fZIJ7K%dX@#-D)E_MyI{KcO#Oppy74VMYiHEM5Ozd5qBwCwD@a9^ ziqYTn`H7UZXr9mj$-t-g0;>+5<%k2>28BQZhGOGGp;kKm^qeZvwYitYrRj{^1%zDM zt~Uz21*N@_ho*djBFJ0QsNofKm#lb}OG#V${a_{v+1vZ}m6g;BEbhgL5EQix$^_m~ zY_pVGQTQu~O9I-g#=g*^+Jeg^DN4kgtH*MU61A+?I^3?(*=_MH6jk?gCCsL2oy%Cs;*ZC3@d6ohLaBF(8M6{?HWa!p(IEwYFr({g+-CB4#4& zL#ABAFbKmR9wQ>UmTj&h%Sw(X0*aN9Stoa;^_k)UYdMpzKd3>*0IE2YZr7cJ>XK^tqRA+5_` zw4tw92q%Y9E)ixZREm+CH82j#zfb!C)bL!oI*%e;MxqZ)8Y+dJAZReYT8<7V&G9W> zq0AtvUlPStaL$nc7M0rq95P2WliH#|KtLp_*NoxZTJhDRm;~)v+g|~fpeI(?bY2eL z*-|@SQh9~H=$B-2ibP-BaR{|`#MrtWiB?<^<~79S0gHc&{t$ctEiSN2ptY)ciWq|& z{{Z6ZU;^~q4FPI=48_3*GS6t7KlNi@z+6jH{{Vmx1sQw(Dg~^(M#)q|nduj*ujyMDyoR#n6(x8WDO zrW3ccxY{(-as=>yXq*MKvkU9Q5FR_yOr;0pso@7#8#^`07P8(0GQpAvvsP7Y$#LXC7vqq2wd6@sr1tW^Yg5m4SB zHd^Hb59%rhMYj_&U6Anr=ECO6a9*K{s*Jxrk=08AjGX)P83(k1iW@whW^6Rzd5zLp zj9p4m)#2i$6db6sx5T4i51DtVDyBCWFz!-;`AX%`;@AYL3~7wCz)`q`LwHO+k+2C` zX@NjZ3uYtaHa>B=(Uz;-`I!vDfvC7jaf^TuY2bOjA$S%;?Ed3)Y*txNc-@0nk8WRy zh%b=Es%@uOSPhOJWR^{3F-0HtF)1#vT4J#fYL;^WnQ@HV%s}&u%%&UGy?cWh`_utZ zv0GpPn&0~~?MjO{_?BpBR&c${%cys|m*EJ^46@@rT+uj&ZbPji3X5$d0~AdoVv=l#idNG@`1PL5LH_{Q(JW@t2z0LrqmLVdBDr=lfJV(R zU?5V%FheHV+1v_X)!acL_C=M=(&KYAQzd*~Pc`I?Bhk3=i@tnHPLbJI4MOkWmy>E< zuA|e};r-Q02~|ttQ84TS+Gr}9vREjW#6?vOQh^0JAeF3EG0Z@*(Z*#pvZ1c+i;KC_ z$|aoVeHf}UE@nAH2ce9&P@!waq7@pSFvUw?ti9*u)CR2_TFxBAe?GlKGf42~ocdg|Vr-mB@ zD{17>uSktKF8=_2Vd_8i4SH#*wmnJ15NqrwGRp;NF5&^ZxGO94fDJ|xX2$^v`%NAO zK)k&_yy4{ux-HbgzL>>ViA9R5E+4!$&@T=>Wk5vv7_e3Cm|TI9o%(x4LQ{q$$h`4T zktxfXl@w{-$W);kOjNMY6BSKM7Xop%Ei)ikz9A@TrQ`rTo{-z9*mGU_MXDUjOJKVM z!C5g8XFJQye{cx}aF)Hd4aFzV#2p0)3(+^e>gd13&H!y(`M2UXAX=5r>OdAp7#J^5 zdu8eckb>y{Oe~?=TXPiMaR^)oPs$rF1+P`>6xnE_9567G z7ARK^I+l;Uez3x@k<_6;*t5(2LeG^j5WO&HQc*oPCk~+tJUphm6;;vG_i({V8MS-< z@d?|g5x%0|jt?-a1B*T;Jl&UE{^C{J_J-M55Cbc*N7~44=B&i8j?Q8(Ml*%+>j_eo ztErQ96g!6%ZH2ZMUwGAMfXTUS0YJ;4hk5M7=@6(o5Qr*~-!=G)I3P0S4UXvh@e-R& z>uU_DtMe*ro0bs1_cRxnrlGjmw>=DvQ?6oDq5xOOyqx&oVw=(ilZ2UhxIuY_9W z1c6RCI+?*q)?fi!&oNEiE*-Tn7RMf!_nC`Bd^W*FGQ0-i76@^3h_aVjxAx20HkcQ3 zz7eOR38bnUe|efB?P_g+)Hg$3k+_tm;@H@>*aWZ>dSYP+D=Qc^Wm6%mi48+_vk<$GHpb0ob&P%XxO(bWiW#CD+9 z989#093{{jI3cpd@crC=bv)}3Zk_a0JJCl*Vk)A?T}lAEUsO`_17!njIF6iK^^9#P zpv(hmdE7{?IKS>uRN<(rLLP|8$jsU7xv`48p7@KSc_7&KfNH}_^@(StC~vk6;nYMK50MI51hz+A1 zy<^#>d_7Y#27?MXm*C~X+wKNxI=1R*RP|6T%NMcCP%aY(QjlBJTVO7Mtz!*BLe{CM zb@jxhVlbG`_#c=ipw?I)mZD!X$@BZ%VwNb;##S4kAC{Mh#Y;umuMq=4VXh#$b(3UZ z>oyHH9rRrsm#^)Z>|n)XOZEAQgrYpR_=trGpD_b!m_u-kYCm6J?k!ld>Y}h~h#?s} zGcZ8t;%7+E2m%ALBwx}2wisPD+RC#UGc{V8uDxF9qTQ^^35xDufay?H2|+-<;b`SE z5uKSv{1uW7$P2JGOa4|y-a~Iiz;GUoZWjumwpf%e-2_& zwcWxYP{m@VP@o3+&mSM80B>h;05+!&h=r(5^lmF!97Y$cK&a3Sm)EYM>3a|@6x3$3(h!m>Ct=wGd1BZkrQsIUm71oOze5aR~ zmHas%gVHg>{jF?FKr*>qaRSx<0F1PF0I6!a2-*rrOBFQdUB#-nQtQdjykHbw))iZQ zaZUJCWeg8Wr_mz}!D2V<>j7E}%K4}>HJIy5gN2Q5wwO z5f(DJfjc;54$q`4h{a9akut$Nq%yFx%2~Rnx`G<2@v>j)ctDs-;NR9YEG!;n(7jI) zQfZZUEIn&80M6ydx9{E+pyYU;R)&M6`^=lV%sE|?0pbm%Y@b>A{wu)jgjJiI4s`T{ zO3PM*yiR1bH(xw`W&m0{dFx+Du`uw6oItG6ux7nw{@Swn_KC3vuMxMqMwn2ub)Kdg ze*UoYcm(9BWs_WSl?|zZ-$=FyJE&HnsN{V~O3+q9%bs3I2iYJC}Rg$IGg5B4Yk zPSRS_(+*{c@>ZV=p%ennBf;$kZ4}qC!HI+=s_aOxLY4)qteq0Q)NZA3RWBM<)oCfT z6=;d+5ut7suVx;M0@%4dB8HydEu;ugm65aNXUTaDo)TH8cm?x4=SRMA2fsH4mrzh; zYcW);!nz>1p}8VR5p=~iz9nJ>7LAzghF&$?wkC4CvD;i{(jY^z$$os0#@=-Lb?Wrj zQvexROXd6V0b7Q%$vFFdBXXO|d`58y)aho2a|A#EDzTre6kQmtIUsMBsPvRpPcR=mLRNDlejRfY}UFdD2?C)zD&*u}Y( z#;XlokR7@xFK}u~GvwF#0Z<4ANB+YPop7kuWaa(-_QVm^1D^yDcqT0R2&miCRcL_d z_jM`$7h`(}(CAKlO+o?L&!6K<;t66cO=vJtFwR(w-)J;Tk5PK8CrmfmtzBF*3X5ZS zU!qWnJR$i10N^cQY62`^QPo9SIC_7{Q8k+xDgo5U04O419vCZ`ny?l*rvaMnwSj{+ zl-Fp6#jyKhggZ7nD0}18TzVB@K{h3>;j~D3)V2gEn$~W-+!eZFfhsh0E}==$@dWJL z#_hev%xW8|r>MWi-@+>1UMGYDt+3ZUbqXYd+9|raHAbr3xB>{Ki@|aJ%+_Wts_x%r zW59h&gMiZVlze7?(f-kYyYDO$Y$glQWMD1A^2$kJ^@NmZiy`=r?GV)!wz*;5v0Z9M zpp9YtO6L}(M1M_{_r{ORz~)s9~#9%Bl`lQCRQS9P>il zZBpXZ+!ab1i+GN)xbxNQmc0WuFEYY~Zr#O<(DRr~$?-Rv zU_F^skZD?wZqY+ozIO&rVK_u#sMD6E`12PO4>9m`>0a3br6azocsyDLltMd@$aZ=*wX8CusJd5ZywmLK2Rjx37D5~fOM zjcN6cbxrjtQSH5Z#4I4JGGn=v=FHRL18inciVhq4Kmdx}yB|p8t(+p2H9F&{0%C%- zYvNg2938QRdxzbDm}sUI`bs>WO8QIIN^$-DW&zv7_~HUB62qtmDu}NT1(0I6{mT(x zP}~|EG!d@YT!|{}lv5rZ%jr5-5pHCBN)qOSrNk&iI-=t#y_WIo2e!ij8Ueh8$%!_K zUSI>Tp)#x)b|7HKVgBU26&Vp^aT>JbA*jMM%zCw|hT3Sz1fda3l(~#lPYfLr^TA;; zlRrv5;99zAU5+>BZ~>(j-BXW0G4lZm0ZTUYyS)DM5T{`>MFqX(FP)qgGpm)gOWHZ=S>Q8&zObRsbUXh5VKdOepFtI|QQQ*4-PAKK-=tHo z@?Sr|x@HY(0ZYOLqv)9EyL8bFF!~iu;#=jK4MeVr%uBW&Afs@>Tz)_IcUX@L%$3f$ z@$2F~#04VejT`lkZLM?`5kYROR3I({Jj&sCj(PTBn@I&|vxxFhY@+6wfbx2Im7ute zZ)c>rBIIyVfp1WW(K3aZ&mMIY2}>=JBUM@z*O*#Z$&B#mE%Ee%GN^9G*>k9cmFRA3 z*Z%;BVNkNnD7Nt^K11mV^A~`Hd>i7@fXChHJMh=ycOkA&LD_1cTX|u$@_h)PPJnJX41C1hktAKaVhR}hB1h*-iLR9w)_461&5RWdrSG=^`NZ9Q09Bvph>2(OhzQ3j# znq{9x?^6&T>D1FdZ^TNu0C2acD-@~`muqKnl`IjNf~SogHs?{l zLe3*9{(MDkAPpxmA#%#(irQV6NnSz9(=#V5e^8w?8#KD_<_+DI#d9t$ zYfxQ@Wy)H0c_s58^RoK*h))HvnCdSr5GQ~tfV&3tW;zOqOOr8>V@6mUSiSWS!0I;a zW`Xi_z!k+#GI)qZdbat$FcoXFMx~=ed}3URd0SVk94w_d`H1bnyf^+!5f%!;Kw(h5 zoh3BcRMim&APb{EFpvi((DMe_FFimkavtR>Gs&%zir6PC1IrU^4HWQuPmGsC*&3I= zZVr%*ovYgkfdwx>tb5zv5kQMVz) zMG$)JOWVWSeDiFcgDy6C&& z5}+r5f`^wTYBUBZ+!*XPoko?4x+U0^tW;ZY*dlUf%M~uJ^r~*nEvgrAXk~Q8iN?}9kEkmoJaXVnX?fQRz`DJQK0_&^U{3bt& z^EDG63xsAsC7!UtMG>r!Dqa5o@HJX4Sz(hPaN@V(55|jiC=UUwv}TJ@C^X2XmWaYy zY2dB^WY-<)XB}m>umuA0U0Uvn3uGp&09`3c(%Wb-K_C*Ra0S%~g6%lA3>Mdo^_g>n z2KWN{fQEUQ7AaRwx$`hG2z&@)pOP)F{T3sfx#?vT5HuGlPPE-)DF3d z?ZN*5%;WHVfdZ@B>n!rq(kMB!&6%QL;Hb!8#jUm}+oBNg?J`|$>x=c9{{X@6btx<7 zXnZKUO)w~_=;y$#YbYS4+XBuj(rk|b`J4PeMz=7#>-XukFMRL$OxFO-oA;JgEO8PI z+dRPuKuEFJV0n~EnfHTh1-Pzc0*Oa}*`q+#qtgh$Oc|`jaA-3Vmdjk?qa}9bxWh05 zGUpcqK&z^Q$Yo92UaZ!`7mzRmmKfmxN2=dar$p${>ltLa14K~qVXQ#VY$!aVh~!$l zaF-kufCANARH^e&AyhlgRm+v)pexqVW9jS{xojmouu|P-^RBHN+W??ZLbpcrL%xH& zA_W0sk8M*6hN{DQZU!brvtHG9xzCwL(U-Dnkk)^3FcNP4o5d8*2ibz_xFMXES3*VB zxC?<;x-Q#&>xknIX#2QauUrH-ptZf3^9iV^4cg`QKC{f)Z@xaCSkMN5;=4UmuSckL z$}YERxvWz8ePW78viU&;u8TfNfv+KTS-bjIytiJ{@E@2HCqKk(FGBc)9Oe(^C8xO_ zU^7=KN!%Jprmx9~G#``z!%4#{6cxMQv?xXzEntQTMCPyG?m=2C2>#-}e4wM7%C zRSH|Ias5iqF1vsr7dYYpa)2(_Yb^u<@&$5U)7}tlY*ya!gjnZQJW2t?vgvpt7%uNF z3`YDIH!mY4(B|*NF`A$zaPX?K{KEr~Q|}fODv(c1F75ij{A`0*@~*~$g>=4oPA_t9K7kLahe{m>~uBEnMAjNqiM^Fy4Fe(T& zYxI>S-w^?pS@e|BQ#QaI-&1>HQyy1`8eVq=PK)t~*lJ|T!res#u^XA%xodoyd*juW zS}#F?z<486_wy707)9jNY>#|}_2^?Bo+-p?6AN0-aq+oEqO)-TGfdO~T!%5iLQs@^ z#t2&EbDrQl*LMQoFk&1rVNe?>tE*7qN);!XNV1b+BaM-Y8+QI8Q=bn%@;L=G6W7)n zNw7i+)%@;m6pq04-k1YXU>BQ%QY()roZ``zz2T}B?6|Pe_eV=~%3h#_0(pSaihJTJ zY#a2ciK;Pgb4)Q4OzVq+pj&bI2quO?zBerhi)iLovq-W8-Lia|B|b@_{VnPOEOkcf z&@uIbBH?ny`hRekhJ!@YxBmc_ANbNc1<`C&e#jyDg6)CJb&kJjRB6f3R>(%d-Tt zs6k4b?tyNzFT9i(%B0~l{+9<)1Y#G9x(#w+Wqy}C7%fiNt+);NQkQ(AW|91lv=-kI zg)dGbEwBw0EZI$4nePyc>lrT|huT;=7FL{&2WvUqP%4AN2*qvNF$Owqub~61isbvj zNwVzelqe4+=i*lZcWKk~VCTDJT`%sSRz?|Zg<5oinpU>D97hV~5*i%XKkRp`!9rTg zoVwPfnhBq$7@0r0qG7dZ^}odMZ1M`5EWi}`&QN-?DfaqH@&RG(OHOwDuvFW?JO&Lp zZRZ)mQ~&@1Rp*e?=s*C_8o{vN{aibah|1#x5d=kqt);IA9 zSqG^ozTghH=!R-)JfU010C=xhf>S_Dw`#LPpIBe487QY14AFl6A}}KYCO`=FZn-Ad zEpG(_jN5$TyunbyTBVZil@k@0P(=YLAsc0vgZp04=4k{<5AI?ypseB*x*d6onMa$6 z#GpOW{HGVh1*;;leuCI*nNhF;z=dKaU2}VXq%A?l0Y@*Hct9-c#JEAMx09$KsVG1> zxKmCH?xSE;o9T=K<9UWfFcWx;(ZyM~h9auRQCJ6gF%d?ptVYTXvBXQQzVQaMY{a^2 zEkEQc@T$uAn%+#TbdrOgijG_>*Fs%Oo0Za2QBX>Bj}Y6l>hyr66dH=npdOdc;xfv5 z7suW|5Ms_y%OK91@#_c-T4o$|5ERzGxpmCS#lhups>2eoLCaeuFyIeFP#&JL*9BCk z?2dp3(Tt-#KVuEp9*!MK2-1}X^L#-TpvUnl$S0GTRROK4Wj$qBS;iQQRrpH7Yur+m zc3}W8tulK3BTx#>H;Hnx=>B4|hk)uL9kyX}}h(&ZSL()?z>_$`05lO~h_u zUm~KhpgV(oLmp;5M5vTvI=G2&8iJF@gM0c@HyC0*CI0}_d!AZI2LM22)EqzoVBm_! zuw@H*2ajI1_#!X`4rsZv*Z%;6vQ|_T_J&a0vqsr-a~+<~1nw!rtllH(1wbM+wx<=ph|flxD++z2^-}iSTp_-nqoYYMpaD~nOXzZ@G#srDlZDjy$$oY zg=*17^~9q}s-tXWK`}NBedWVfzR0$Y{{Wi?g4?7206TvsrO8&v(&m~y+CAY>1@MzT z%DhdO+&t=Cg77t0jeqQ3aL!ChU&fV|HZ@>cv8<3W-p6AHV7&zd&jiYG1Oe5X4t&>` z;B9D_PA=b=KrsOxdaY=VnxytDDZD2Hu{Nx}BG`Q!s$r4hz>Np-1t!^D)g=aut3_t} zgKISxqJqAY9u6s#L${(XlEy9#JmvY1;d0>(;(@N>?7$?IveAB{8x2RPFRx^`s^rjC zs?_#{0KF3!X!lPg;$m9g2m^^%G3^&URkv|tt4qOB$4aSI)#lkdO-k1#BW`Hk<1|IAG}6eO9{WaWs-^f=}}Wq?(O}#fiw+}w7fN8^y)tNfl^mx z%fXY3cVe8Yby{eiPInRu=E5IUN`s)(5~j)L2i9c`N;-dP9t$nbDk7^%$;Wdt zDBdH~Iyvl2C~+5Ubo<8(4(O<6wQTO=Rr{vVG3Gih5#yM-h1qoXH>xn#F&hxuxupzF zY@yGILuHj$+;cIvQH>SBnYX0IQQ8HIQ*IuQSb~}wnmCozsi5H?rm;XcL)DVf9sQ2k$~^YFbdM_)Ebjs$zV(4Fvu;-44PUFPZENP7SU?4 z#mfj^w5uU?#Bdi$#KhZUE+(zn#2K-akb0|vCSq$xJmxz^YY+mb75>eDUzRD6b+%vz zgJ*2BD!kzPN3hGYd3X5ul#B-u%n@Z_L93&gXeh_lE6v*%H$<{Ra@Npy1!`U&itFRP znE4g2*%a}|+R;f1?)xRG2m)w@wRHz-}TUX3PA0`6b21LUK z970N^ZI%p&0c+6_N=sfH4ugKtRVb;ZCJ554P`o#e(^*`WwI8!A_-yJOTNc*4j*^^$ z{GXY%L6Y$emWu3T^p!`nvk=DWafpsGzViqa5yvrk0C<{v19)SJJHe{uzu&~VYRb~J z+CO=!hm{3owdoTP15qtN%umRKEIxOMa*#vXCbn>9T?RTS^A6=dIfOw1aSt>90K_ZS zAYWEur|{NMwS@D>Ny;j$*LdSE@eskOn+2&LKb%2k zz+hsQKI{q)n8G_N*g4Zc7CmSpk!Wm;V3(<3JC3SdEm+6@02@JI{{ZDsN{j)jzyb6> ziYaJDqTldW{&aSOyeL_8TC8gEEZs4P^5;DR87~QTF{7-e0+?)Tn}7>t8D-|yG*s)k zQ{#B^5lk4n+Z5VZ4a;p-)?2P(XLFK#N-`R{yvz;St+=StCDgF*xK)DLE({TRhM@U` zvFGs(?Acie$W2SkO5F@S+R&H_TgsLV3&jnmk=ZygQWh9ThidVl7B|;vUK3 z>=Y^LEhl#jQd36dYOqW6K!vjbgSgy@Y{`LuE{+BUsHQ_$>(UAlkQ9Ao>LpjEuHWeB zi87Qcjv~0d&3(veZu}twZbr+k0jo_)T(uUEiUlnI1+D@T1*ZWN{^-b7!dsjwxbDb? z!Nm%_oS!jo0Gxw$7w#R0i=a zJdkOnP;rk~T5FPX=4H4_7-_B6USk{%W!=P9bk62j!4PUSAd;E=sel&Q?J3uOCI)Et z{{SGMHU9uI*(v4hmi=SDn0>9^oRZa1o+1uc$P8F$RAr)5T?0-k7C_E}C>2VCrx}5i zsC!Lf{6SabtOZ_|jJ4(l8v9Y-q`3sL%-$F+NmWQ1FE;-D-~t&GRD8rLp!Q$)@dV9H z*r`xLtV*K$xr$L!VKLz?@+O0&M&LzC12}Eoa1G{JqP^Ep?tm+IR98UX%02ej2JtLt8pzc~A)*U{ukS+N40I$864*OPR)pZ8Z=lzs$DYwj} ztd)55xMw^M>IeoZi(-&q^UM$h6h*5Pqt;h!=X}8~2+_F;3No(EUNZ-SFc%o}7m_w* zwSqH;6VSxA-w+;PqeF?3{on&c5wrqkDFw46V@i7ZOSwl~&1`B0SzuzhaeMcQ#Z}qd z9C;dpeI;lw&mZ$q4HST7TjmLc>~$`jwnm zd5W#SHNUqNH)ex}`yJIM2)xFT8cHFNhj?i_IA1pwkXg5o{{SV%RJ)-I$ELsR5NlST zK2+b&5kOE(X*lVx=tGR46K`*LjA38|4ud%JuW48mvu6DzgujrmKOc!?6{_$2n8EGA z59p-FhBh*u+y4OLnPmmFJlEYoD?oLrfQ|*IT>{iH&@e*jZU>+hq9ASv`V3kgkkfi< z0DybjU&kN%)2Ktzmu*E0ML}TJ4J(Ui*E1S@&qfage85`T(yXCYtreMdO>n8U>)Dh9 z5P$YErfUsZQ#ylJ!zdw|v3t!z&DrwZH3c-iVO4ZuCc?-TyV4WKTWcAMGDTkm9tFG3 z9$*PY()HWaJ5<5_h>^$;Z#ahvm(l7O{{ZSS=$=?KHJFpxU4I(FGbss-XEenB0Lgln z=55}4gTQJ4O@M<)k01iO$zeYw)sA$~@YLfCtMFbU$#9e9B zIwgJTj%9o92(emP&|fn%(#`(75k+Or(Lsw?j@Yg&+*HDblIH1pcPM5;#MMO%fW|i* zQ%k`V9E_?zY^-VE$59JQUGDz?ZcyhFsG(cY+W|$6q5^~F#Isd~Cru?(4p+y1C5@Xc zS7GQmJfe({2V3AoRIWmRQ?5Dd~;DJj%0 zy=BSmlR~oeLTL#{6e;+Qkc55)`XcAB?7F-s2&Ci4{{WGEUN|jKs9!Miu;oyq_142@ z613e|d4}IH0$Dl@VH%NeRd)&uGU7msSCu)A8U-90gv3t|G1?VY^v5JsXEyppwp=#t z@#0bmix(~iA+omPKf8p?frMc$Nx-JNWln>CXW{`0p|bIDbuJsIRU(TMuOC7N;1^wy zbXGB^5GsO`7cL7?43#TdQ1Jnfq7C*-Mj3#tz+B0A9wos~Lnnvxu(8!&OXPJ2VE@mO27eNl8HJyM{HSE7lQQItVxl(EEDC z@+v+_PF5kFeSYzkm9a+^HVSPrfwBwU5VGboqHTY8K@8*86vxEZ{_BHL+yXdz1(4q=e?rO(7o{4v!{ zpuCs3a`rQQ`g}(LL?|i?3oa20^_0&CnW>ju!jcyF);L#~H z3;3T@?35Xgxtb^~Ak7lO=GcH>!_i;m~ z2<6b#{`$+D+GNi+mAQP%>2;$%u@qA|^D{3>rFp>=<#rhZRLxhS;k;=^s{LcuKx;%S zC^Ow{A0Enw!w089yBW}P?t;LuK&-G&ESiZZ|Z<7zv zh?OT4U4YxxO7kw7rc#Z%D*FEb<7m|B5gp<7X_X7(YS?c0At-ZbCd5pLhGj@oJ3&*( zx&*sPd@GfY0e*wbJGv7OqzSrvJ?Xe=x?3foXggy1_5#^5RSI@!nMmR>ZL4e zV=xIxp|%0#>Z3qwY#fiF=X^y5!(nNKWI7#9Zg2kpB`u48z{32icZ_>x1KgBC{HycSlzRuq}sJPvRJ3u7}9Lx;6pY`3uw=D!k%U3qSWu0Mnq9HDFq?tdL(z zD?x`=f{-hAU~uS1*Bw&Gj?q-z89-720v4q?r|L%*__*lb*X=T&#i>oUV8+vuC2KDZ zroQ?J?0~@s7by$0L2>H>6)SE;tM8K$ECN^{YPMCk5+=%ISN8?qC^mdPlFmazgWCSE zPLb&zrpE2&Do|0w%+v2LXg1Z9G&fja0cD?b{2Y4cKzQyiNULZ1Z-WOb{1+3=t6UR#$XOC`4jU6dfCYUEj}6#ax5zV`=OguROVmi4l=kOu41vnC52Gz zMEA+e0Z#l}Ldz)HDPRz-a4YK%FDwB-9=3BuCgubn*$l8ZcUgsZLdx8Gqg~hj#mAq=cq<sb6UA zOMt{Blm*KwQ8PteAh`v6PVoWlFbV=UlYjO!3VgCnYlO>~xm(k6(0y=B$OXW8W+0Gg zY9J{^HdsR0Zq6p+cN!Nyvh~%TVXVh;`aDat?gT1=bF^|OglwWC!(GK)-0-s1fT*dw z9<>)6E5_k`AS2sd%FctyGs@~1Y6EI`t|fU6E7U{)RIwJ0e_Z;;9EG&K#Zko9Hwhvv zm-6(NQqxOG!81ielgt=8h?iYEm}AH=^Jg1+_?0rXKn3XI*@+-lTRo|zeF#SPKs3C$ zI^@q1??fU*y^r>7MK7rK{{Ua{x)rTnUzoB;Ej>Q0^Zvm&960p(*Q6^Iz`;71oPZpU zOYeT8_)qM+-|9{X>(P~3?cf}Y6`L)wjqkj z+yITLxmUO%r7oM6xnVa>QPP@d2)vw0s_muC05}v%)fu@?*9O&I?aD3)Fb4Y zj0G5jW-j{2&#c-qw8L@em1H;k8?GHhhF4_PZMLcx#N5?XUxY{Ku!$7mbzxVRoyw*h zO8v=+lnG$!&G<=NN@#Lw>KhN_-~J491#dHYE)Kr739u$ab8z*H!PQk;5TO7TYc1bo zXW=hmaxFQ$oF7YT`0un`S>zkUw5LQA6)7&09!P0~rJ%e<9F<`^mqaEeDGOTk{-LM@ zYeFEd$`=`{Ci`-p*DToW3t&+%)fr;g%FltDO~5k&99SHoC3NO3=iUy>m~{y0_(VAJ z^+#a}9LZg}^RJ-M%7v@>)y*!Qoz510I*zF+mbEE>I8e$BEn7oE(Jp$`)V9K$DVm17 zoiLc02PF zy9s5~tXhddXalv-g)FvQaW{vOd@~Sb1?X&o+rS&91k%H;RI`<@Q42~1)nB9xrE84T zqZL+c&B1_C%UGz&7WyTM24+TZGh9Ww$IF6OqS;h_A%KN~n#mlUO3_r=VZBZ@$~k;Q zRV}uaj;3IO#ALsC%#gLfO%@SBWz03Zfx5Y3JWB&N<|vdCwicH1Dlman>*hK^3s(n( zfhK865nfqUPo5!HVfcbGYAE>#iHIpsaRJ;IxOd9VWzC1qCg(9k6FRhj(OtsJqtS`L zD~n6@0@CD};90~AF#3~%16VOCsCigI%D{Br#8#G1vI~QuSoQ|5khqQt7650tr87dq z0+49eyr{F7Qf;RY$|W365TUt?;s{M5`pk=gb48UnHJMh>Pcx7YNpLJ8`>2l9xs1-A zNT|{6G>f#O3R6rX1I%4JzwhV7qgip~jSH~1S5lGzW4p}}grDeu1@9ETrCp+*cxi)& zC_PD7MWs1G8Ij&uJ89T0HY)uA%#-l=_^m~GP^}6#{Ex>df!s;a0c67SW&PZ@e(23 zWYl~x?WMjYLIgqce@~>QG;6HKvja^K3BbFsJRg77Q$ipD^`_!Wve&7FgUv&#f#L_d zdO#c>{AzQ`Ld#Y^mw(EHGi!3a#(>5=e-x3=^FjAuwHgK|nM!0{=mVBmt6CwBgSF$# zscIq76uFqMkNf$8piCT|Unr=!ge2Xje=ljd04BgWKK$T$nC(gFBcn z1qf3>gr>-MNVJwH$^>lFO0>s??>eT?1f}Z6jjLvNhWeCX8x8bv65tD)C}TO)tg1XP zLvs7dl(j+>z-~N|*-E4XYPc)7&7v?VZDAGmFiJ5sC=0uFZ10%)50GEk>GHS#0Jl^p zg_Q3%yX^BbAQ3h;L>|=CDz8OFFgM{RpiGF>VzSZ*S;>5ceWH*B7Xh_(@fWdM$D|yf zvFcqBxd+ehm`4=q!{62;1&6IV2YadO8Q?Y=9g?i85UgA7CejeSv3d#pjJq`%s>FJrQV=}qm zX|?wiZUITCp1*gP!jkt;+dy6*eTCc@7i_7N#023G2o(6JlXnn8A}Bl=O|l&Ne99;| zdNmqmpe|NlYfSsU5b9a)6b&H31=*RCxpw-Lu=~WWV$4L8jU-DHNwbm)Tng?dDoa-} zq|m6bg*kNLc#Z^G{{TsX@+~?e$|iwrYfJ*N_lyv$jc8wnTPR-XONH9G+H2xci!es& z@^ywR0_xV_wl*^9F5UjewM;XdkA6}qK(rx%7T4B55FJ7bR1$-M$B!@tfM-T`kFEPa znUGNH*BC$Ss;XEAgMWEYFw?eBHB`gnh%}2hq@;Ps192!q^;jG)ZsE~`b}HO_=hCAq zDSo62u`IkneY-UaG_DcMJ&aW0OyUlpIj-f9r7R7lhEp_MN)|vA9MT~~Ey6Nqb^id! zl;VuP{6up{j{g9i<|>xZ25$L=(xTcCS_qala9^+Bi&X6qa-+^G+?dWP>hW}SE7^eh zJDa2HGqa+dZqJ9|4gpx8O0Y|vWw}cQTvgrM=CA{xIm{_5nCoQLeQk#S0E=XC7E8DP z02rfPiZ7+(*Z#o8kq$WrhsWPbcV0uE4^Qt(Erv$I`#!IXrV%kpoQp>y9CjMhSh8Rx zncxq7j+5LesdhRXBxea?r&EvPNnp$xG0iJ;LlMlh92yyPH=*6kMshv4iWY%XYL!&2 z7_GCAlwKjv=ND`w*2;pZSk^s%_@#dUEVmTl1lWSviFhcDCX)q-jb;quA`w=WQJ1m8 znyPI|ML>X{whE0DhI_fUQ%KokNry;1!6~dS&qaZL^$@)V;R?%UTw#X7K11av_K8oxZokk zf{nIA$TDiVySfWlWdqew#g0q0=YtTg1N5>pAYUOWqJ${VY&2i1GC{n~*jiw~b!ZHos}3v`SAqE=E-iM9&bMp>}e{< z%FMC@Cwn~UnjDqP74;>p@x(LF5NPt;Amgc+ zu2+HPT=qgtUr=4m!>RU|wY$=(xCe`zoy?G}O3zV-OGe=# zK&YDD&wBp=mmJmhLA$`b29!Z1fNMv^#0pv4`<&P6l_@R*MdRWkD=Ldvnm87`WlN^N zh%RCVGL{EK!o42fxZIF)v1p6xj}^(qL2zGPO!YI=D-$1?l^ypSrU`l@)q=SH0N~2AQ52CWIR60G zAIVCW4)VQxTp(f+(gwgh*Va3GH!g$)@fmLW;{45x_Ja|1R%4&RDTK=u0CwLLMYbb% z<@xmfOIKAiKb8`nNb5Q3J(QPDBEch1qO^K3ot~7!HLq2l^6St}vO}y>lefpM>zl^v z$Y{J|uW{ixNc5-)q1i4oUX3Lh14?Ues9(9>5g=ogzQ+{=q~q-{Kk=*jjqGzi^2^Ff za)qtuZ{kuQ6?#ZJkleRBTJSBp-OAUu&!j>C$v0?H_%V;fQy}%&xA1J`e8 zMj^HIyZik=jlcT}U|)>J6p2hv{#uUKp!8*D(TC1zT7rV^lMZD~ji13|63rQ7n3WdF zj3l{($$sQP@gv#(0SHravX4|&FNaAgtV<-M)a1x$t3C7YFbu#71Ch=M`ZX~HBH|dU z`!c++_b%JK>*4{S2db@M&Ua~y@h-d3VJ8&nG~m`R5ox$zh#y#da~k>uL|H!fm7_q$ z1VUbJwKTV^QkwYjU+X`qzSg7N~3>@zX~qiJy;+4hCdU9N1+=^%5&i7ZGd-s1WR1a^3-LiF!L>rqlGf%t4k~GY_X|vkVe~h&vi}DM8jE zr0qdZiIslbjkt$MlVTC9m_zLb^7LzbOCefK4gO;b5iX&7%mGF8CEagzjIR^gdrTqp zhooUaxA@Oe^41lln3c4Auqo{aRcyLWNk*wk-Zd%_o+3oGS$K}awFfmRDT=nczuxC! z9FoRV8ZKOD@)g1U)Cv|MjLgcEeIUACWU8CQ1xjsf zp1)j1m4?w-wlXb{fi5P*-pp2heqqe3ZAHK=vfnw2b-{96a0=Mxm_`uRHpYNsfJ8<} zZ~%JR&qP9u{fu-PM+_Pml}JFA7*5p7C^k+10Q6({xp9>%nRPtzFh~aV0;Qraz`l_# zUGPhmcNYq(mAHyCEbN1C@Wm0aFv>KqxHQHlJBu~lcysW)L@mP*eDO)y?7+aacKois zrkgiXR5Up6`0I}$z1;<2^zMeu0YbzH!^v{>9lG_r12UxP)X>(rfL@i#d>Zj` z-BnFrd`vB6M<>T&68_0sN0*m&`H%1z^X(DRSN{MrFhY&ZaGgTh3*(rmq&bc#{{TFp zxp1ot=2X?-{r>wiLRcv3n+XOKQx|Jb ztg8TGqEQLO7B)B+t3#}{WXAq0qRs^E7X1b)U>c@x2$i~a*A(fIj)dibimmmF`oigl zW%Kh0T7qs@^0SxQ$tf@{HWyc%H^2K_hA$HUMMu{dK}b$atMC?(tCosfg}hmC%s{ej z&k7|}!>@`IO-Km%R#j%M`I*rtf!{_Mb5;fIhPXqM9=aY%<2Dq_eV9vQx4M z>HdD7z{;DK>lMgWO4smiI4Lx1_*%4$UlCq}D?>y?Efa`MWCk}|`oz0yudEOjDYKt_ zLVK$M#Y^uHK!~w}Lyl8$Vip^W+0IG6ph_zMFKkiQ+8(e|W}Ca&6hw_#uW@&It=`Yw z3r0fV2RK~(p78fl!h^~A+;J@2qFa7f1b`g{)#jvV*GqG1yirMkE}h9Rg!1V(5Q53z z1T^o~Du!y+y+Ro9!GbY{)}ET5BQ-~efqRVv!K})%Dz^xQ3FR5R%)PM^T~-@k|yODf`DCtBO`z-T!Omx{y}lX0%@GOEl{;^u3w zc|mt~al=mpS}ta6kzOOImTn@bxRj$unAK|*G=OGe-_ajAL~gg;WPkl>K6#QV3K) zs7#i=Ba||LE{@s84GERz<>0lIPnNhm$`{%fR(Oa=&>|NP(mCDRtg~^$KxX;wEo}*# zytM#H&e3h+zkMOK3)@!sh7cH*g%#~C@Wuc&CIPbsdUCq;zxz`ZRhDK^FItI&Jd6vk z;3i>}K#k~Zi4`>zIG4h}7$GlXSH;66;F@xU-fDU=GDkq=>R~c(4qB^Xo>x$6i={79 zoPFg8S)Rb6atDXL;hy#c0lv}AuL$)RyjUC3+^j|npz%-MR+2Ks>0o)>#Q{0RJ{wo* z7WMlfBw-+7e7QB89Q;5)8of8~bCH@#uA8NQQ2zjKSQ_B0J|?5uk=)!G>Enw!PnnL? z1wybC$6}>)AKWOk)QTqS7C!g4Q38opW4^e-IdD#g`x4k_paAB83)Xj!GU0YoLh;7n zso{V$^)UV8msL)gji8TX_$GN#z7&RxEi5SW%Z&IQFpw!JJyFwce!g;0Q&~!{*_9|| zxEf2>m*wsNb5IAMp7R2x6he6e-*r5PSR3h8^2{PoqmOcERuuJ$DfQVlA;s4IVS3`6 zfuABAMo7~|vn~zvI^KCbhl+XI=UA`gi9wZ7erT(5{h%tP(m$mcn=~TuTvh#O^DRqI zz{0g*NvPms{opcM>T=bet!{AB2n}RGJyM=D(i5to&G_t%nt6>(PK61p3Ke zGm(Z=dXJb*6SlQe&qOUgjDAEmO+w_OjYvN z=P*{Gc@29?-FiHK7WXqXL6Tgy(OUJER}rflWrEA#&a3BBkXNTC99#$kd@a`ETOoyv z->lUlEgog+EyV>}4kOKlW*iy4qb=t$CQ`7(Us%i*_IDQYOThx_D>{tqmXu2yi@ahq zr~s$$8q%2!V&g1i%PxgD8CXyUFtA;!6P9Usn-Wx|S~O-ePFrRb2G{kKmoIoAzhTRD z#GtNsLk0VCz|ds+m;2nV1>~(%1%Ua~T5nLcTv)2aque^jCGiCX$%U(DzV#B3iL5TY zzW$J#Mez&=v;{fLM26C}E(Ze;dh(Rt46%=hq)@hV2W~~wMS$)N6@HT&SiUYVTA0l! zKr3s(?9Z5WwR6c#@_$zq5p#Br#72{>Ly-r;Xj%$glxiUwtF(DlwOrb(ZNV);{-e*{ z6dHHbYCdG*BTY~ndVwAv#?MsMx=Mh^+N+;ALg-RA0$Vv&EwUp=Gc=Tb^nwzeZcSJq9U`MQA!UUwnP4-DJicqeFGRBXJ&o;1Q6+()>dDi-Po3kEsACbfl|+!#;Vg;>>ahV1)vM zI|rRPsBq(BOI>3+@_tMl<8Tw4Ux@p7h(K{;Po|e?)=}P1DAp{K$aRl;G=v}_7*@*c z@e64w3OEs*g*wV>Dq5WU%?{2h+9gwf3vexKSg?BH0{tp^=-xqO0`X?JDq>lO@3 zMD+`J@YCrqKuEoV6KP#rx5i`Ob8c`?Ir)M+s%}B4LDi4Mx0=W10UKG^0X;IMz|psM zT(25~zyXGP)98zB00o?@_gzacP*P@=@P4>u0LiltxW8$A9_gx>bAi{aqB`(L;VkuC zRla>lClBz;XM*R}U!X35Q85yA}y!Raz5)9PjiBCXn)@ddcFQJs6lF=Ms2 z73sL8wqQ`TV+*0tL2wkhZsnexyrbzxM~}$(ok7${h{~}+t}cJt{0H%y;cUAs&=NC;}N!|w|Z@T zi(;h!AO$txmSaHm5FWfl?w)ZxM~APl$j4XA8T?<-E` z17uM~0CXZH+b2FR+EP{pl7<&xWc+H1Q$?o3`<`|O2VS1BhQ#M%)*(_y$ZTU8tR+i0 zAhDQmwf2QC?@Gsc&g<#oQ0Y?@)o(CX?!Z}bRnfkqLWtgA+w(DMT#nA3AnKI^cKCk8 z!2qlmtq4EdO>CfsS!)f@a!T0A4_thl5tyEau89-mi$7`>U9B zV%K{HkuY89W%?tOFW@ipk1;q&KpP%~D*YipND>^kkJH*=lE_|JOa!cET19EA$_A>e z=Q+GoTO`WrRnQfi=Hn3x(1zNxD(kPrB?elyUfD{~DC$_i9!tbiBwBf9rAqz{{{R<% z#Y)5=0c!UXCX)fLHP^#Y1ESDX>V+{VAxG%`{{FBar7&{`Nyz^9FI73+f2jS3OLWqi zU8~PuXUR4+ve$=XGDnl&`}^yX1f`199}AJ z8pVCCqGIk}@yGCP2-VE8$Elu7L@#U^Wo+{qdk?gvCY8)6NC8-lAElPs^^bsOf(|TbY3fnWKxMkzK<2>3n`FT2or@S%qDZ+ zk^4$5KY9}wOmz`tQO?-dIMfLMosMyx<^@uKXB$j@)L5o~it;b5bqQ#RaXKTT^X(t- zr?r(8z}9tZc2vF2C?egf=LOy~w=k&nD}#7`@|%Fw8zl`OR$zZ>bMFR^7$UN{Le^BV zKPy7B^??l;lx1~VQiqylYsG72ODfX1zOeWU&;mWvVnPLl66QE_z^l|Q2wNDSeOI|2 zq}9cM3#O`__X?(L2Qf2K>N$e2eIvMU_))B4Z4-WV5GGF4tdO$HSKH;|>!?b_1QmGF z<H$rj*`FDW>nl$X9UO68X7prvwW0ix|_Bn8o@-xOE%w$B=_fi_U&y{Y&__P;>99 zl`Wvj;rW?oII(aVrMfDJ=vtwDk6Bgl8_hvnX#=Q(MJZRrq7g8x;(S}Re{iO^QpZl| ztcLpaiiiSMK)bJ!TNNm?U3mOVfG2nKfn8|lhC7deCS^Lbh$_bN?j~IU)l1!rXMMu0 z!y_#kaRN}+vsDCGYgva|-WeFSD1*DsU<_nS0D#Eaay-RKXK3nz*r2RBt8)~x15-@W zaS$pjT2`QydA1oS<%QvuZ)Hcv=a(EVaGtWbsJ%;C_2t0(3zFrz|(-rc;$KKm?R zqt`iuniR7j@AD|=vJ%QR<{41Nm#AfMzcXuNtVO3bF7fMe7*KAU%kB{X;}Ye)3z`1_ zKf*XF1)j-@h;0PoUO#RhGeFa+I100zzr zm$(Aw)AWf8SYXXRiN4a}CaU+$-c&qCLgnl)A1~S!gEuDO0YwpIUC*QVOoYr!R-aSo z{r;3P^bULzZeY zEwZ;LWOEm3md|;k0`&rKF(JW5a60h>H8@_o5A_t1gOTVLuAgVXVK7M8m+@6zvVlgN z?0tCngjEP@NWRbmg~ct?@P9Jo?qZb>c(fq#f*Msyw+{_^)T7Lz3Qo#`1nSD307zi{ z_m~21s-KAP{4}LrK1uAs4VjASp8(V@mfb!2X)N@V8G$*sw7|h|4VsNQE*|d@ z{{X2+H|-nXsZHlZz8~W_LEHZThY(mlgK;ww@@}P-l|g3+`*Pe|wyt;LCxBZ$FW&v# z(nJsI(o+3GC-6SfR#Oo?v?+9E2^84~^qff?5gOXK(&U5 z2hf$q+aAiZ$LLG#C|94{N^V?U@;uI20)>Rxgi zWhq_UEuDtY3>8wPty@m49JXncoCvqEmg zNrNJ-mL+J$EqCcI)yS|cM8YO+C9N$UUFTIt%&sdN$SkoG9c&$hdDV16%o-ee!s)HVqLv_OC%D5U!@T^%VE4T%&;NDmGi%(&ba7cSH!iV{{UG3 z0GEr&27!FiWBrv752~OAU6xg_10@ftdkJ8M)oEI_dF78Tq7%AF8+2z)QmEIgT327f z;gkeKpfCgr`=S2yTWCD+BL zKerQ7pz@eO8mr#K2nL*AqS=dDP2Hzkum2r)A8=bVOSSyzg?@1(fH8I*}F~t;rUJOMS$z zO}5j_Pb#}?N~4zFC?={G22vom31lK$_n5G@qzh&uJP`o8f8#XcH4Mr&0|CC$c8(r?+ z0i)t$h9iN90_AzsaR%Ff1-ufT=)t2!`$8dj`doKsJ`l3M7#Hlp`0vS7;Y}$8b+=ZL31mHTp2SK zyNbwR)(tu?n3WW9oO&NVVg+arTDKh0UY0>VV!5!$$UBILcn8Vjh=W*bTP_kr)we^_ zol12JW*=EX#YD8K%RCdE_Mj=T6=*eWB*$!D+J8|dImbQ|`G(gt4cewcl_4bQ6(TQXXUf{fx+y#tA zKq|BcFq{VztMs_mu^f>jpZ)Rw0EaNo@bCHC_!^6U$-m=|{3H&8?h#!Nhs1KKO7b$1 zH6rG{f4Hq_n4#zXeIu_1(%O2&x(U)S`Y_$Nz9s>{Z>M4GgYhdOQIb};rq3cO)X;A@ ze8k8@as>P$%qfGVaWzqgBk`G@oF5ndMyj2xvH-8)Z?O?qTpLHm74#!2x7#&6L}7OX z3jv;Gi1}(|Ncd5%YAet%6ut}`cdg6>TTnzTW}AluKH#5KO@THx{{Rh7B_T7ZYygVG zOhJ~VL2(loXwy}#w}@SM)Ruy&ZTH+uv)}{_!=35&~XP-bO0M_&+ zM>w*ZyD)gv*~+G^4DKxsqpo07y6P#1L9#hKKN54NZ z={Vdr`Y^#PZmOVqPL31SJQ%7IFHxY)Q;WH{v@EKH+L41>XCS|YEpZ?D0$;KAh@<3((0J>0fD40qYHvQ8HfgA1{k^Rh5M$f!04Ig-Hxm)neq;1+23yDRK zUvea2tkC&>Vd3HY%idhR^1R{?Dt}OUm8orzC8CO`m2?40gXw>mI|97EV)ImHBCB(u z`g}3umSqk)n{E6B*qMBtLR}FX0M`as09H)lDZmWgIi0gIDv}N*p+U#Y2&x{^?V_wp z5tdjQ@EXbN*$kYKof?|898oN{yfaSQVXQeA^Lc{ZFe@s!O4UDjo?*BxoIqD^T8Vme znq^+03KRxxv!CC?0$TK4i#_r_^#d1l3@sdR+j7?I6qN$^)%k_4LW@|xSkh9ZG<1F- z%JPEI8syEb{_@*t+@)VhOdiD1VTQ2xH?Mhk2UlD5hy1pPjl>;9P(fO>H;~uvB~Z~Z z%ClGRclwuwTyf`N2jq)G|HM^f5gtIP#khh7nH zcZK7kD$8qe$Nu(~KaHWYiGrI)fB4!F28WuOLw;eW`0rL@P>zK5&+sfC%4&`5&t77F zJ2-w3XrOKCHK4#*ERpcUPhc?8hqS@=8;7sotgM8*^ZhZF#}CkEQz+KC8}!$|6FA4e z2Y#YT2&6U+aAqqN(XC&2l#we0J~#G;>!5=*=ifW!h$8eKYQ@K{0c9Z?bOHQ?B3H#>Dw&>I88>rY!EDb?gH?{#S1&!1$6*ais?sa zXu3Wnxo}juVpsU;bu@aIj26h3w?(4B4A$T4`uf1KC}~9e zbyBH76q!<}+l)g%64xNBp~i0b z2IUv^@&(0)@>98JG~=#e3O*l$QlBefB2I{NC)uCeQ4H>g zor%cj`iS-8sOIrCL*hFu)LCNhaaE73$8#0A`J2qjHQKw`YlA&Y|vMbwz9q)pzSQ{{XYn3{W~neIZ_nYX0S0tT>}C0DGb-hAx4O zS08+VMc?EnD&KTxDIT1>MFOp{V@w79gEh;5wPF=W@WjvRP?t*1FSNp}GK~-zVtfZjMzt#l_pwGQ2 zKCdu|Syh<65!d`g9NPt%JZ1HY%0kg9zY*Ky*80>dcRWI6;PUj<)kODrnrkmFFKt!S z2YtD~qXUj5*>i>zXsGcHKYXzuT4JsbVqUv+-@6zn0dPcCPnh&T^o0-mC0Jc%V4{Zr zeqt#_^@h!3W}qxWg;qH*=iN)-I-Z%_<>T)G4Dk?XoK;X;3%;gvLEwT0Xn?$so2jM{ zEoLv7@?SIP!K_<86yW(ngsXVT!9A#%m3AA&L_xu$7!s1vk&H{?%PZ0$*CH=IzrQil z5t0oM3tN0fcJH}!SCem~&KNGUwlRVH=Y{uq$7I@o5r9fCT>!Dk-mkfrBF$hgj(YFr zG&u$!^XZv#8fajNI#w0qfA7{(;1_mXYNBr^G;x`Sq2qp%(t}A^%&sU5QBhw&JTo{w z%}Xstn6@%?{Ee)`7?1IC0i2Yk7t8!@0CH2-p*ZML&zt;1s{VzMCkXJ3 zDW`7{mct-z@ytpN1z$)+0HS370J6njI1|!p78b9L=Hd)GeD&)uURBzH`*_T>X{rH@ z{{XN~T{GNW08r5Zo#O`zHqss;8wqG(i9qDX5{2%H@C8z{ZTr_!+Qg+q?&~j~tWYek zEM@eB&k0sR{-}q?EBG;9VnB5-2XQXe*h*Xlp~nO^{{X?b)>T6jY3mMI~ppp8SSGbi;MP%>hd zK;74#Jt8%`EnLx;yKZ}m34kqEKucHx(M4_LwOaF2naW?Rvb8-$M)w^>i0yqZ_vR*< zp+(p62zpx}WD9Ie)b0EZe~T;QabZUFFN#tz3vQ!z+by3B@K!9|13|@xVKb%u7 zDS%5y3jY8SlpIhMpIPLzqvS3mP}*9=MzKq7j-hSl8-moqN^hJ$l)K0FnV#+ZQC+-! z=&#cK*e}$Bf4*WwRZ+i)fKhq;!0@2N&P>f41Mit}I=*oR z(LH0J;#&Uz5~F4pUgIIlf%6##?v10i`Il=ba6|>-WX81!5mj=%-`Bs0Uhq0UX<%|H zzOsXb``_v-4lWUbhO=KXfw&f%I=GSrBtn5=ZHu-6GAfpoB-Q>dUCGqHX{?sZ_x87DR#)+xzx_W?L0#5nPBPG;3_UB7Xxl9 zh~qbiZ_+u`Z-6Xt-3QAkR_v%_$r$514SP2hMeL0Zd77|c^m!ANn;fhFwAYx9d4W|F@hGwOckLB?c!j@? zMxbIs2<9eP<_MWvy+E=hh>4LR1zTNz8}FHXe8dWl-t$tOK~M3={xMz|Q#`_a60zoB z{{X{};Z{E%%Rx&%V3&dn>S5YkQwa(PM97>(4dyM7l%yBG@L{-|iSGp5r=t;9sODc} zIJx5CoP0*xZEW-F6jTB?+yfpovE{|>7PX?W^RPc3G2ZclSXMFDPcQ%+ua}}_9L-%- z%CV-jHTRF*l};rf3Luzg5JvoiW=*hGOP#j*?^TM#Ii;&O?$`2yhUrSoEU9!_R~Q?^ zUw8U~uk~qsOP8jmEu{`_qqx)fRmQPo<#jz3{{WJ~>Ne!&HSC&*zj!(~KsCm_W$Yqw z%a|(f4r)7qLzzp%{9G#HE0)z?=w2M^3K7b&;4=}n=@Un9Q;`U)0;w3_ z%}#%Z0>xL^0BZ5W7+Lk66MmBJ0ZZvCglVio&vYdius0257+zCy z1wi`07)&9ooNfk=BK-`jONQkuTb=0YG)v)#bIQy=)E=3ZvN40=WQf?WNWL<7{#u4al|(hBT&~IOA_K**oJF358j}3Wi1|98l~fHa=m(pmhyh_ z_kJOSOBqXx>3qxJt**I%q5Kg;8bv9q#1&<=PUT$5!OUTh z1ll|Lu~R5=<-~e)aQynfrVnvhml5go^q86nVY2b*nP{ag!ywI%NQIhZSBR%nx3}ds zE7YZvCEaN=G+^aRzuo0~8G0?*4AgBw!nVK4^xaO6O)F=yj zMY~G@+E6|KnP0!Ge2a3f-&taXP=J9?CB{9>^)|S9hoN)5M+lY_n>c+xsKcwV!v=Zz zi7QhwBG(Tuv?^7bwuU4t4fO)zX{dpEF+1a*Gg$+*LmiOYs(U7d@5k~Y6qU`)rWDLV z>Y^J;BFuOETB=A1xr_x_$^C1uSrIO-x7c{ zLgIYV@}G%vEVp24W)9dDg!jZYY2FE9?iDjRz~9U{Qr63OzZsY|LbY}4EqKfo#4#;t zD3{oA*&o0_-EM7u0s@}G7)*AP_n3V682dpY8@B%d*-LQc$Nk1pDyEOW`4lQ2VAm(K zVG=Ghjzj0^8Hee08B~lFGDq`OGg(Q`9Pp!@HIX+;Ac0PeaT$3=j@trX~y95oGj% zpW}rii58;SYTxmMCNoT-@a`UBRg%Ds-9;3F@=dJ=nwEpH{{YU%kL3+YyFSs|e!~?2 zqlkks$&3QjQSc4RpRDPh0q#+8pWE9o}gV!!G5Xgj!a6ynQiI-{KFEBGDHQT zVKH|r>s?HKKdjNhH-c{P1>OGXg_Tz?wf%Mf0ATSm3ZW1H8x*x{_7(-OL&U23Ci@$St9)w_iE4pM6D$tl z%N-hkR|PJw6393A_k?Q5>Lm~g;2wm!CNXSY{;;}*Y`(-ynamV+%fvsW{=YGiN9xR{ zeoBf_FECA144}2IDX2;`pq?lH(YGgZMWvI9LZ4%xFu# z(jc@2lJS1GD#V~o+Lim}2g;2C-DlFDSjh&|bbsQ| z+c4$%MM@Ogs)M4QOzQ*l925|hBXowyMT^(`OecuH^#CpHKdE9p%MZ|iN;$xvB%|rl zcJ=O5?~ju?`$X>^Ow<($PNF|&-c?}8VI6VQ=F9XxvCD@BFw5s-n1F6<-u)ty%G~A` z>Gqdev0%4lhwB!&W8YM{L1J66?_Z<$i-)OWU9V07vG>b=s2K{viAb^<&g$jp;pv#9trxri0C?i@_k#lNuP!n5j)r2Mc0`n7zuvmd>+E-HRUM1Ud zT=y(ZECD2(=8=4J?ZM=D`NadV|yv_ z6TIn#c(c|Z0}5fi)U?{3nXOc;U-9<8&Y#O;vDr6PJ0o5K@qEFUC6xXp3iaTBFXV-a zNWO?ZE6hdygFAlgcMy9Vuq%R>cA)n!<|quY`48*b0GgRu_2S?Rhv)Z+v`}TVLtrmu zA04NB!&a)Qf zK^R6;NBiskz!0eNxn5O`@DLkLTZjzp5u|N^kP5Gs`f=&&EzaTnPvq1-{XApohvNro=wZ7h)< zj(2gw+N1dif&mQm=@3!_a*%RBkhf!wcMH3tS54Kx_RRxe2+?$=sj@NFgaiWG7O{9g z^KPcdEo4%)f-T?&Zd`bR&t@H2UKU-I^kHXf5eE~<-%^^9d8_&pvJ=Jf{6oNwLH1wL z0BeW;05KsGz!bRTqV0XuUJy!1MAl@QUlLYm3>nlsIh{*5#rYHuY9#vN;N1DF-;W^6-uy? zO1C2Rg5LnDq6Y@8sNPT0<~qz9I{U+>1%-;B00Rbt>ln-gfZj)@9#$CuEa<%XqHX?d z-3}6;Bo+`96=)&w;u^A2;dr|95vu@3)V3>v5M5vx6TzU`qVFYB517JXfCpxUp-E^c zjSi~{rAq=`+k0xt>J*ev0ihfM-3C3NIZ*4TmRuLkBI8|wVp+-VBiIE<6?D<0Xtt9X zf?pAVT{>J=y=6thER+q`aJZpf0NSnq?TZT`ENU${!rxH4;0u8-%s`c-B?=g8TQeM1 zoKZ%bc&;D}2vt?9k0oKEu{NXX{{STf?gA7bS#Ya|!v$2fC@B|x2ee$kw26{F(tw;E zpS(=i%n9@Pm7Bp_o8!!{G%B3|+^id1cy>(7VHB6+j8v(0w5o?^?=YJ?RIPg}#IQ)< zYdZ6$It#&Zs45LGa;2Y@gue|N2`s4^#y>Gp$&Tg_4)F*+r~@#A;(DB&>|%Q;O~;s2 zcNPz-xUxV7t~+xC(h~9i0Hp&bOwY9*4EjTRQ^Z6&@76IjdzX>4)WC2n=??kgCJ;n} zW{?v05lufa6uBZrU@nV;cwfuV#Y&|eGa#eYJG5uAKQgA&{x5^a^#f4!u>;VCjcnzf zzgTl&rF3%qN~|^A3=-nWVl%hpEU6gP5|z-M(Q`IZ&z8>PSaZ6!xpfBWx4ZuUv5Ezy zKQ}H|!v$R)J<8kBGAN^6OWm?LyG3mP1lWrsqo@J?mlm^Z0#fTim8?X1_-xH(A9a=BNy*7g4Yi!gDQdoMRS~@s@;YpWQ%y!wI*w?RT5EsW z2DT>NpXrJUZ(K)-QnYn(PSn4wDA~=iO@nK2w$QBN$M^9THgGYSH_hAPXW4$yVBE6D zWcq&jj3}aCWhG(xZ!CmlNI)%=8bJa}Qk9%6h^myojZwkIPUUb;4Y! zai{lql&EYre9h3AQ{D<|^J(o88&jGp09N}zy(rZk!s;q2$St+v9L1Vf{y%V$zz3HC#&6-jPiw(g?pmT*FBEN7&16 zab^Di<)+yn4yq_^s)I$4+&a^BRfvg&mrW9dRd&IyNOD+B(jw4D3$kdORfG_19$Z~V zWrT3bD4GsI5u(Oh^&3G|K{s)5td>f&8$jT={M_$X=mxWrR-O~99KLED0M%+Po$TRUBwqAzQ5Q+8DfD1l)uHzVN&LMW>`dZuKaulY~SZN%|i;HrP=Dn14@|lDzir{6m#Nhz!{Dz-mi=dz z*?#YdXai=x$g?bzLK6u>(YK^hu;Sqkw*sTARk->5M1gDpfGVm30k18`B>?7H-j%s! zyY+y46n$83plmmV(<~4h58_u7ly=Jxq@*3o%(#a?{7%s^K9QD?fC@myE?BG&i9ik6 zk%ldwvN^{7sduYpNFxjL1~!7kS-Nvum+)6kqFYapT)0BKY7MAgiQqmbnE0MnE|QG6 zXxHQD^8?25PW@pAu`AH^5_?SWe}um#So1OXl#JcG*15~d%*#J32mhp z*K;DQeWGYBFr5w8%)}M_KeYn7ANb2&JDZkUt<)F{P8`gz4(blhKhlskPk1$3G6XcsC)^L-2 zwbZfN`5Zu$)o}%`%ECuYp;b{z$nG)|Colz2dzgi$8OEc>3~1turJ z_eQ%&mOPFbo8vrgk=o-rD3%%j0PZX;JvS9V_jdehJ8xZEQ%)W#mJIz6W-GzXnZdBu z-v0pYN{Adam*D)YE+ASo_+#QKvUIt9xPn``$yy8Y_H76h?CtZ z@A!BB0FFQPf6c`dvG3R4{{TBEt`Xn!xo#`}015*46%R7RY~m_|RTv_-8w@w%R1gdG zS;w>=Wk$tI1sZ5pSWpHpWw$#9?|HG_Q?H%3bpTNN}Q~ScL{vI`KMPOxGVo zqRg?CdyT;D3lua#LZfO!3#==CgA`E1!Tc+m3Rc^F?}#;Th^v&-e1&y6ecC& zSvP)(YRm`lY5p{vLvi2m@BaW|h~$NbI-a;{Z5An4P?1N6xK;#QyK1Q{jb7BXyF4=l z;huoFdp2=m`#^U$sf&1nq0KZl?PKrkZO19?W*{>eg zC|=iOe9hesGLGTqNqSG38?Qz21bSc{1Uton6&kTgA3Z?;Ye1*%D6Z3t>Mf&yhC!Gsal+%X(~I=rfQW6P zt<_9|-xE18#7tFO?GKa|#L@^@oR@#Tu|iyweawBBut_7^S8E-}0K2bf2-zx`)Kr5a zk3GvII8&V8{h7k#a=U<1lNV72HE>FIOK+60-oaQ!t-!|BPTj&5R1bDE`0Lxuq*>^J zZMRUOfmyC1Q>4ZF)Il00i*K5R-6-Qy)pl^erI@G~IA$x@gf04!SgaGL9g)WJJ3sMI z%v2MMJvf(CALgHw*{@c<2*<77^sloBy{P;sg6j+UilvQR!1{sW3hDy-j}Z|a zNgrR^kFkGv@^Fxu_ZvQ>{2%_zHoJK?P0W2Euj6n0r5`{1g8u;Xu(xOV9sdC6w8PBl zHpdfWaPun#;!+xcbOm3lwpgcVf^0J@n^t9zGb8HMA(IdeAK%_q%v1mzZa6WlN**|i z23@P!6}{$IL5O5{iCFAP{6#HY-~BzMq8sFIEc8kyr_s^uFjspZP z)g>ducp)9ZkK~O%j(_-3UQgi5I?STbP&DL#DewF_b-lxRlK%6ZDcnMWB&lgDrdPCT z;?=SDMT-|5WFHVpgtAr3<{HWrTba5mI<~Sifores8ym%q83`V zlB}3Ub1cFKt7k(LE{78KJ##z<=Z*M)L&GdJfIEhxk+?BdK(te;?8FO-xR&4yt+fOM zBe5?a2A#Rozc{4|xmW4;gsMd?L1s@&>gIF5*LnNG91_*l$;aao`B94SKezUXyIAvD zi$-w9tJ@XB0&zPbbwb)IZMk^!13>!3%;GpNb}$KLS_5pbV8Y6-GYNoMd-5XK)pg2O z1B!9P0xH!-T@WE{Yh6U!i-zA>duo>zQ3wiKu3>^W7BAK{(QRr0iQugFgiB3_k{Y)) zbMFF$9{H3hZ8UwNg0`CQe&QC!&Phnj?p0=lvJ2DrV8FrL;Y2}f(UK#Q-V3jJqT8)M zedRI(TRwOH0Fd?=nI*uB*-WzP9;LSt%*l5?Nsv#XI-Ja&^4LrvG#7RCzj=M(^X469 zNW9Q`m-L1qT|YC?n}7HM;P4j*I`qHq`w(h$_&wuw1PTt=4SN3EuVt$lVu05-=fSC+ zJ`edS{{V7fA9nhlp-MbG+_0N>%+u1Z);-^}qAR?;#s^qFnLjf=30Gy0;wyW4W$?Zq#^3o12XGuTVE+K_ z>5PtF-+%m960>utc!X~~e+xsHI6TLz8Nq_v7+bGt#x2CWSB-qI4iw0a**?7UFHMwR zN6Qf0yBEw1ZGjdNioOp9KOaebGU7ITPFbf{#HK0YM6WLiuxm*Rr9D$^xpS0pI7y}t%6K1UBH>?j zO1mDRD$)3q&{8D4nq@xR#eN;i+-cYFQL}Nv$bFXO-p)vQJ@Ek64{%g4E=xY&#hAWl zOl({BmY7SQEK9y+<|X_qmL!F+&=@TA{K2ml-_%5oTOd(0b-9M(@+qE?5ZXmCui;D= zxQh)_63D2#n9Vm`{Ra5o-*BRqV2~2NcOL^_D+RlMbrXTkC+iYkP1`~-zQ)37VHQaCBS!@QO8Fs*SekMAHWVSm4GI8fPQ(0l`las=knjp9UX!L_wzo#qJHS+xL}z z`T-TpT>k**Ld8qQFir@rY*k9YfE40j17F7Ru*Frer}%Z11JyU$;Hs<6%(?DXtQ`8y zzxX%*0N;4WMQ z6M6m%2<{ENAZD0f@k=NPgrxk&p`wdNH>hDLS8kVB?>F$o78+bJa7EL8CDbet*iPuCGN93N77hZZc!{? zbixds46qq9Ow*si2v&z=(>Q@}J>YXh-Ar;-&KnO9Z{S3#yHQ+{98Ys_Xl(NWtrOES z+#@f7W6Y~qzc520h!MDV+-S4bP}KC5?MG7;4Sk?pKf;a2q-ARi@=Zrfplox@IMwu+ zH<8H!G3?4M&5ol^u>>|k5Y|{DxoH3Z!!1=yuC>ei+zX71+#>>0bksRXyK==&74Rds5VB{rvRB=o%R{*N0~4#u5o+ zfdCW$U;~K36gN&Fh_1SK%UHiKl!ZCIVVk2XS%R_1^C%4oQmbsfqp0uy05>+6uD_FW z9Tx3v^BybsDGf7;(+wlrDDEwTXl1@77Y`<}7N7j?_5T3ushBo{;f!bxEkgZdaO>Q^ z5|o#m{;%pNTn*Djdh_WVslu6ma_qlLFfbF>H3a3gl(G)TMF7PihjPVWQGK&3?F%iN zW2jJ!!-&kT)O!;#B(@G7etz++!}63gzq%s+3fN)%pI+_*xHzw~y+U;hAtmy+yH zem{eM#}Ll{0FEbr#T@)fN?osb6j9bbB@9)UGWGlds8dVav#s#97IDpAjZy6x6vF9W zg{$txvu)piqWp{zi!Wum_P97!rxSUviD~X&6kh%D^Et(x<|y~RrX}>VhX-&jXghW; z{bj9KF8$|-FCkFq5TOG5yU9LoG0Eu#V^))cEAwA6goK70=pJ4_FSK>va+r4khi&Q^ zxO3_JX${Rk`farnzTr_u?)m@=<2=1O8(u{_RD`XXAi;yXtbgmbGc zolhn|QWDFNO;F^y^j-toQVpe)g0F(0f$kd61nW2i+uf0JZS$WT*T>#qER-AlG zHDhBL)OgldP>NyhF;H+J^zkS=ExEhR-*E;&dO=ERJcxAMCQxI7*|XU`B8&1~r4TPE z>!K2C59RX`=XMgh>i}X~>_nlLcQ~3uzy3hk0@{f4{3>3t{3>kODT9s%99zr>LGQ#_ zrW&zxQMFYzM45B+i&eurM(L?^iu@o&!9j8HoyyUh6&C835~M75Qm$jvvBplxRl0@xk8KD7y@0=A#-DT)yQK2H&rR-ODx5RFUo6=o&8 znU&pQXj^G}H8fb%G$T4l@la(&IvG{!1Aq~mSiJAdThuQW?pV3?y$7Sq-%^Pgw*Xm% zFa{f|<_5rX;E1$6l9qs#7plRJp0nJ_SLdzK^6~rb%GS_(0pbI<38dQ_%iEZPNXp;B z1RAH9Y*S|NzApHvvQ+Ma?S^J*v(YGiuopfN*AUF5V-snO)TWSCJnAQ%%VeBAy=1zrG(^&1vD+@ zTsOxP4XCXzP^=s2m%9oZE?+HdP~nK`or9Q8sglq!S=DJdmIiWfsBRMnDm@^csb&7A z!e3UAG5-Leui)GVJVj)WBx9w!MPKzXFK(PsNB1p+Z47S5T^sg>zm1>;>NSyEOm^Ll z7u4A@47YJiYX?l6d&_oX$NqUcKk>)^04spOT}$duU_dmx=LgsNf@pPNm*xa2)j`Gf zGF{8a-v&VNXViU@C^9N^Fd*;qTRdius}Lc`$)SVsP1Rv6V7gSsv_&8_?k_>7k! zUzqQLKX0T#cTvSQM!lA5Itv--W*Oo4h;eG;{{X;lVHyRc!SaK|e8GIwqMZ9d1uEEU zPBXh`_ldn_?Ee7cYc)sl$MMc$R1bvb979Wo(hAoBSc<01-35NS`GpQ~v|Tvw0R}Th z?=rZot-hRoVP2N{9KMpJkb=PVGY2UNMw+W*5|F%|F$|z7xQMovTNG}&t0qW46bC&1 zB9yu%yfNKYu=#QAs7YvQpi|#-A9fHcT@P?E8dHg5lNgEyq-<&koJyPka>P!7yQ^-X zSqkOoLQMgcP3+FAtiwP{*YF*W^6oqSJi(cF8E9hmKk^otmWC8lb>>qdd|qRU34O*F zScc{WE}$kF@Wqfz3Xrykxlrae8nxWCuteCB*$C%*BUDo%H=!O95n;YUG!8os<BAoMW?z@i%ipeOmj#! zFB-3OeWG@T1WH&lj;--GRJVi$Rl4yD0a?^3N|t<*8VYsy7k3#-ja&PZGB81P=_ySv z?VIxouGqSl1Jc;K&i)~PK}8~p)6&5@$70(YvGuymL{TeF{{ZR|#J#cSa_)PQU0ui0 z5G?-y37J&nxlA43hzo&W)+_51C9LYI2@;LlcFeYD(OgRs3EgohQMMDP;Ul7xc!MN2 zghPs`%_v)Tr&82m94hXZ_)l{_pS~t!vk(=-zSw1BkfJS0P@KxQMs5m})_^{eu+Rn- zxA9S;iftc+X7T5lQW)VLG_qdnH~#>~X-A?wBQkd_EbMFs`TfMxD_e%PO{ZVZ%zMFk z;{7E$M{`LF;EWVZQjt*k;F}@8{H&g_`}O|-#^3x-Y7ko&2MK7|MCTiP$nnU^g$7L@xVX6{!xs?UGxGcEgHhs3|Pk`TmJ^?8=3EC+6b+^@{BUhxP{ z4KpEAdI<<&8N5q77`lx^f)0=W0Du<;;o7n+L!4!tD&#qAR99uI#s{;vixWB z{Qm$3{{Vov=z~)v2I}m6rGnj!_=}23(FBxkfqe)@?XT0sK%rFjcM`Whyi4J`xi~jY~)K=mPZG) zx^n(QHjM5JcLe_cz*<>XVV$Sd6~cNVCeP&+P9@YLkRD<-h49UUe2kFc6HydK09E6t zHWM!Am^rQ{rOM>u48nY(NkT%2V({iS7A3_@Jq_k02J(ij=(s{7M+|G)aFU|a=>}RD zJS`D7{3z}0mp3_9qX~5w0M+y{DvtSxjL8vL)m*gZFsQ9QupOVWaB}J{CB%2XGitG% z!05|z5DHf0j2f{$2H5Smfi#Lffgd;<8o1Eo5fQZWS1iMscCn)YtOwd4CE9s{=a&%^ zYZH2|$SzrLn73W4ZQJY2!LHdl5+9ho(&Piki>k+~@hZVg>eYu7sP|qX7#8&57+hP_ z%l`liNA`{mD7(DViA)8;9eyL;RmW%jxPr$~0f0c{div{d16Ke87h2}r}xN4)$>&hIyCQV99 zU&yl0ukh%d!*Fl-PKYdcjD)nW1WM%Ez8mlV04~=>fAwan+JK{1QlM1Er33-GH|sP7 zF`Ub2FO*Om2XC|%i*4o?YB9}C05cB~>+2ie{u5992E=@mH0pOTqh3Gwg1>`^5s;O* z@Axwt8C1JG%YY-f8Y__>(Y4%sJe^9hm{@lPJLyO`j#r58?FEbsWRTZ_fixrIKFGW3oY4gUb(&{AKJ%Q#6#L*607?H&IBC!q5=p9yydtjq93&u4$eOWZ?k z=rL6C2ud8%`x;c`#5qjDe57CP7GctU=_0UpHw6G zh~6_07mP%@E#fC%WL_6%n1Zf6OWYkW3&#*;>P_Ci!Pf&fUawK4(@pu7STbU1{{Vu| z6DEhF^A?<9Q0?DwEE!uu+l{pgh$jPbt>$ESZ~BE@|{8jq6^b7zT#%LD`)Cl|vP8+45OO5A~1D&AW9`^H@h}-t2 zKoLttMI0^)(-mRrY)E;PG#zW7F(XS+R+n82v=#>rCDIHyWfrIY0&ccmnC`QROC*p-q6u@-o$>)==EI^~U!MaM~S=bm6iNzxWjX4@6u3TU`YL z?Cb6S0FFPM*=|Vf9wOOM33uNUh|~W73m+$+{8#V`qW=K&1B=fw#9BJy8VdJj4nv(9 zh6R64e})*#+d(av4m|$=7usZksr{)_fBY@}0F?_#(UZ&<86jfHzx^s*vY5u8yJ z5JeR8lTr)P+z6SaEzxFScVOy}P>gfANfzt$3y3Gp}`#vDpA7@c-6k({u z8KY!Y7X?Bf(O7g1M^SAi2A(A#GEr|lSBNz;h3P@(b3NiMWvV50h6ot$TzL2S)T%Hb zfuzm8@gZApUZC1+w9hj<5V;4!Bu-T?tbe}p;(Gm=z3T`J^8MJa)W?saeNjG|JC%$7 z0N^OcA^1q03-n{vJ@G7=w4L7xYQ;X1%aMTHGMm52EmDx=n4Ttsk|9gVP*;6~sepIP zO-j7#1WU8Ch_0Wk6j-OJktq3!Zi~kxQIRHoT%F8hV+}wAR|&ELZEeg_a;wY~(*V(@ zsHaXP)Lac=h=2|y5QSO%d51B>USqbbP&kFCUSE*rFbSOEl5!1`nw!J9PJBTP$`cVP zWac#Wm>OphE9xsQ9&zNJT(S!a5jgo$oc3AhWLx5s@yG=oUd~156S~( zh7n*5IPk4KL1bus%-5QZIe}$bv0l)UMcLtoAcKn{Hvss{9|uE$%0N&=<$r$BW))0X zWMkMYkv3y{zs%YTSoBL>Y17)V?FOA<3FL+xIde4s0P}VOtBc3}yG|d+a*Jgy(TFD2 zH5EX%$$nsXz`0G5%l;bvHje)Qg@G`E(A>5eR#M;Omnz|RaM4BFO4|Xz!ORRd7KqiuutQfeWc~6k&Qj zBeEhTuT;110>%m!u>xI1IA&NW(E?XNPcVAIe9Am3Mrvqs!%274x(#edS}ic+SH80^ zv&bkkD_LLsfRi(H@w2ZGJSc+~Imf(qsuUVLm4}#PBG%Qj9@%jE@LW4;Ko~c7p3Uo? zNL0@&qwMwlZxP@OUtoo?`hrR~oDbGyF{r*FgaBZ4Fu{;%cQ4=zbz%N} zP-_FRfdTtU9$?1BYnl1XS}J3d2<^C^#|kDGxKb9*)uC zFth8|QwURJ?qX`f0_r)8%_8f>R|>7G9S?uAC=1ofruljD$B$lU^(PMuT)v;ilaKx; z;22x=fV-;nWt@+xQR`=uGYwhc6OvOc53Kd!isHOnrwwxhV0<#AN5O@dnK;~UPlbx| zxRt96eLdsRdWspdBoTHGk_H-9>UAG-7TX<5MUF0*L(@o<)qe`Re~o^#nc zY}~q4lSyi!Jf(X=nob9#Of>sTKKV8V`joi4K4Z(6H55+RdJ+6n#W4pYYOG;<{{WWE z;8CGaRJIy*R?LMmhXiD)cq%ALR^cKkS}bCyDDJl~CP)m$D#^TTw@>t1Mxu1h|N{d`A3==*if)m+GOHF^g}yuWAy|aH@2MTbImV#ftKpOzB_~WURqb(I12(Uoz4!kB zU@f%qJ;e`?{$X(|{{TBjNAPa{0F4ibNWK^gi|H9+ptWxQ0LTotKY@ju3IOm&D5<~v zh3+XO3w;M`G061i6{QixYQ;T6n5RssZ3eXn`%gvq^_KVzy5swRbco-t_>>om<)~K+ z7B-Q}iZE!!{$mQ4iL|GwVp1TA1(jS57PT7h7j+vH7p^5GxffL^T7aSTb1#atw=il& z^1y_(rwu^LUW&LqsQN@pD7AZ}Rf(&7U|L->R|aZ*Hx&S7a~z8Q0FWN6D}sgR+HhZC z&Bm7i27`mZw0U(k zOIBNu{^eCAfxG3YnItP_2aUj=nx`HXeOkP232wk%MZoLKW(u9T}V0n1!^+u#W>08vrJauj^-GS6X#)2|Ze z5C)4cFOx6mLc*1UQy4@Japm30K$d_r&nt`o8C{itz$}eE?`M6+BxVJ&5GXUiM(Pe; zec;_u1%|%z#fA))AYIaP!#KdVsjIT%ZJ88mu}}5z>QfzZ;Zg?AEO%Un~9Z_{94D80V!r`G7Umy(=skrzCkj6Lxt% z(ckzx{tf>C^czm>`op<9@do|7maG$;MM9I(Sn@uxF0(jb?Rd1saF32+hd72M*%Hu; zsM9PlvW0p|_X>H^MteTc+L-B?3x|wK{s>N_1U z?pu(3rJMLM%M|q@E+lv@zpCH#@N6jj%kC-1DR%bm4Ogi$b;k%t9nTF|AaDg?R)tinMD;Q^5_ zw{n$$;W&pxqr(|47{yTl8C7%!VQdsU1v7iKTRj_CEjL_KQx(L$(5r87g#^QJDkgA4 zyay7B{u(|_%LLi=@jON%0w~3}L7S?<(^A`_f+!)?V36STVi81orvC6HlvCE&oDE;? zLDx1C0w_HjD0tlBtJ0_eapRe%MH4>VMVej~1v@s$_+5*e5^k(Sr z%dg?6PS(~A0=*K^X=XbU{vn1@?aCZkf)oL_#sK_EzY3SIAHy z2OnQCXsp)P0#?J1%vOuggsW?edqCNHu&TI)h=5&Wzxy268wQ>}@Lfx5N^|v%MVENq zV(Z|k$o`Px3Jz+^)OUHn3Kwj4iH!sAuQHV0^DD|0@=9n0LN#*)OOD^Q0U7LVf0d2uO&F|JYLD!+?J<(I0Zh_z|-)um8nM>2+KkBr}K<5Og z)k-TH$9+l`>#uwFh+1rjw+bLrZ`xl0HD1iE;Dj2=D*VuGD!sVm7iAO_&JKe3$B0Un z)my2S62vdW*{EMIjs#g3S(eI?;jK&QG;!twsyVSJX=8>PG!-1$_1EG($0=`Sx8RK> z(9vPAJdm4Jd1E~5KiM=BfNc$2bUIelabf$27XdHI9W>o-&Ynf|SluR5%m5rLkYxIv6sb(>G;$viBDO+kg%?CQZKA&IX>mOz-dx@Ce z{TYO175!%qhuT$MkF+<3Q%~UE{{V%jSxbd^7-1@i*yddQhydDN$ZB_xlpH}iRpwOM zJdAOqIVMTLxT8BfPQ+;v7~T%}oXEU2sQFPlHxBFdgCk1sh-D|Rh+bE=2<4rW`o*_F z=`mih>+33m=lRkSrz>&zQ6ZI9I4mvZrDQPm5N}LFGL=gY&xkM?ZrLH^c!38D7#KPA zFm|{;vZZ9&UVOnBRIFrMjw5*`t*YEYZ6Ik>+$Hy2oJP)Q!kLdCv$s&3Yiz-n5!5`a zVu_)L7+Ta4k-ORQOH5RtQdlM9K=WU}zhLR2Up1lxji5OIRs}ZM%@*_`4MiVxGF-gw z0Rt2?^}^7Z7B(W@oy~R&$ZlSX28>Ec2ae!r#6~XtH3J2n=b=OQ))`f5Z&3nbhbYZo zP)la6B_(}3mR?*#-eN+=l`Ww|`IjJDqF~OS$iEp$NJTm>kny=qq_H#~v;%Cyky<^H2oUQ|J4LsWN|IVfz^ zYxbF#6)lLdN%w@HLuckBL7fYkeLJ@3g>{aQ(=P=|#bAhG!`Hpr8 zH{rgmE)mw(3k50F*R7mowb;}(7K+HTO|D!4?im>zgPXA4ES8N_5HX2%(k0ek5NyPd z6IWrd&&)AFH(bEMG*DjSJ(sx(+on{JpN@YsMw`|P~cU@5c zXDz>ZiV0=ysbx4z#mmPj%R*Yu-ZX7P@0fvH=UyU#(pXFJ9vJeaZLGqLU7?$tHR%sc z5;R03H%UMnq2ldLa|^?&>QRh=_~+UKxnN+Icj$B0F$wE#aOQ@Nm&tPKRY1{e0gQ%T z0E@PWf{I@kf0iw1O$IY!9xAbbB?2p$O1lyE&Fy&$S{fP+;a3IcjT(!5Jhv?OFT(Tdnl{uGji=6oarpvQ>+0O8Y}a}mX|P-v%; zQox*CyM^%!K%FrFnDxm4dmS)a2=+k@tN7*;ir`OCIIF#BaNZ ztZA3fMVf2YITerQ=6IStU*k}^h?OaEaP9qlR=x7`G;dU z6`ms(Y)g!hY3V4N?qC=O4EJ)&v(gYOs;<)Vw=&A8l=OjhMY$Fts*gS+;cOnGn;+kw z5rZ7rm3RlY(ldr4sc9Nz0d7RV-om zj2iK;#Htk-9$gf_zXj+Sr;O<2#Q zaWZF#iH$PDVhbAKPe_b;V+iVx#I`(WOQ=zj$qT+EgGB`fi{fImX+ZdeIY9N9!~tYy zQ5I8GN7@jp(WSWLgH5oPb@K(F8#sNVMiCQBqA;jw$xr(%otJtj(C(%RQG&C6&T;Qt zAj4`{)k}}VhtVG*wh%VemqC2CUQaaG=}ZRrzDef~T7|K^6L7G5gT|m@km?3<-5BmQ zDxD*y#u$9+B9aibwt#T>mlotb$BEUjg1Em}wOQ-T+t#<-HqPM1`aHl3Op50Ej*+`F zryrSHlH=s_?+Za<*MPkK^Bh`GkHe{1yS_D6A9!{<7!|{B))65CBJEz|wXo{2#f^GO zfHIsc42kOQ6|i%iiBX_CVNDW-oYVTpRYbf7U}P*V%4R;S8%xy8=!FUUqpaMe7Ae$J z#p5r`4q{+wXndlo)inK2%&OS{znB`TGkzFi{jke}$L$QKgmwHlntvfUQs7wdEsp)A z8@KnK$LpC;+pr#iF%i-p@X^dqh^`;N-|!ixr*%H0?mp6=DeE)PV3iv&8QBH!c!MD4 z_)Ko)g2gVcQo%ss#-$Z1?36BNWawMWvAy3B-qzw#0C2F1b>YmfGPT($q4%9d`a;_= zD)M=hj|VXWFiwZ^tv5b@iz~-E7!GE9n~Ir7jIk@3tiWKx=Wp*YTDp#61dfq-=;Gf!JxXDOpcDi| z2AFO`Sv}>VU~y}&(mWLltgx1e$rY(TtF-ekk^T0H1U7D)A$HPz!GDxtAT;Fr`YhNGMq?jT+eB6ogB6Ak@G2Z(8M zld0FdTDBHv;-OkQhKaUSR|I)m3Jw^S#^6<8YdeC*ugh0itIbD}mA;CImxDJC2DVyV zhW!&~Ck<3w!Q?t6)$^-6t=O@G%j`P!{p#o)2U74f+j!FOI66!t)x%U^2WOWRbrCV- z5Hk9#3Fzvgw$?LEh;8MCnxf-$ko*+tII_)TvipqHg*g*A(KQG#Eat~mRVj!y!DeGR zR-#a&k4TV$*jZ0`mx)FNap>2XX`U_|I=w@^@OM5vVI-?;kag)37pPF>8`-kssWJo2 zH_NQUCE^`pLx+SmPpbOFVV9)KSs;-lXSe$<*8Di-4j0W$ImLI$oS|K@@W~iF|LSYkf z7T-R79Qwd*CKB@pxs+{6b2;_#DC_9Nbe_{E=1&y&k3$v0Di^aV7T>G|e?%0rb59X> zr{*EE)q^fU^?~a>vk;<6S{N>vYL2e~l#9BL?h2L`qp^TgHh(7J%Tu|2u_J@xIX)VR zPG(m>{BN^Hpv7KDF-}gRx0V0`z>2v;NZ-Uo%y)Hkz5L3sEoj>oRou%l3h`3MA&F#& zi$kca$-t9);vQE>PB(R%jB@G>i@$HBOnk0Ip?Yf=^ppv^tz>0Dva0_8k&HCgr^oLS zgX~8qv?gz5>NwID^)e6*0D2TJDJ9U4I7Wpva6(-N9*DBcrkOF)p@Bi_8|;RITP-KnhlM z&$U6vS{|NHNu9^|Hs%7esoA(maPGAGLeyFsU0ho<=@R~tK)Jw|=sZMC|u}{EYC+?U?9IoURkg&x0uVx z!PFrMM$BXF{{XuS{{ZUErf~lNJx2}XmS>~|UH}3r_bBP4yp9mXO1|i%4h==9*OtK$ z6t}HTVjD7=9=|f=rM1Li2jkbMXa2McwfW?hLjui{-uUN;D!|SADS6cb1zJ}R{MOXoW$KD zUw`TnKr0R%=kEgO!NJES>uhky5>O8boqWUNFOkZ8Ip-eH2yXhQEsWD1RP=&Sml_l- zy;%)&3vN9Cl-GgP_lIO*G^MtUo}^$7u0O*59BIxp-Izz04TW@^;)5t(f!g=|^ycZZ z5@U)M>GlW$?`asIcQbLD;v2sl}I{@s9Ddu!}eg%qq}Z zjRr8TcNT;NVw{}pmf<6l1#6c5Cb~ILB=k(iRi-sqPf7>^pxpxIDT`EoVro^$?m*u@>`yR~fr=&O^ zyk(0K@hB;g^nyL(yAPw5D6*blxk*J3<9dSHo|%Z?q_`nxu@eJ&N;@;z10&R%C&DSy z&6{pYgCn0g){!s4&YyegW^NZ~tNDq8r4tNJFvc7`fnUNd8EoV?& zscJ0H*_dP|JAI=aTSe4U+_VhDp+Ogj(hmL_OjcFg*|zwdPuH;H!9C6>CJj{$zVHwZLD^rq(oRX`GKdf`r z=Ut7(RdjFWaUe?7ZQ`*FEOa>aiAvW;6QPEpFA~hIqb>54h+Qkd+5Ke-U7i@Ru`C8{ z+XcR23-#t*D@w6kph~kdx?B|W#LsXQ&L*+6RVIxX7tJ+)NqKcnoy(4P^zI=c?tt^( zuk{&RK3Gn_aKI5@$0Y0b=?VhZN^ifn;*hI^95&eNqVJilW1W%xB%MkoRYCFY`F6`DZNd89p~*%{lsEEuOlc&%NAU~UxW zX$+pCyul#9Q5WJP)%}8&OZk;wQL7k&_OzpHsJj?Z%Nf&tA;qYDq)?27FBU5V$57VW zEHoU8=TQp?NDx>MTeLJQIL@F1h&%|l+>Io6xD-?t9|Ow<4ui!=2BitqL|of>nItvo zQ~^MW)oSrkVO)w)m@4Yr7n2%~QTuQ_0Eq&a-7FX>RVZvm5Uf2E!((>Yg~oA~!le&l z)|TM4!Ghv=m13|q9Vu5Fu-huyt*gqt#X7bfJ z=U0X|Rg=YMY7^>+j!fm{>hgWbYIf0)<~HvRUhgBY&eg0L-YUF-IDz0(a`GH{-o4D# zO0GR%5Z+xS4md|_&?Roj{{AC=Z~&v$vR84?IYG=;Ye&wQ(@jRQpcYbAIW^Rywl<1Z z?$@X~)n10y!EY`7V`v;Htyt`99iEcWgV-wmpJ=+bYKr=2e@Nab(9jc%+_6xWaDCwA zZ4Z9rQ(d@0Jn|)iV#P`K4C@Py=uV2HJvy+8^YI6_qfz9NOu_<#!yn2Fly=P_wh?Jo)wjr3r) z5$y$+h-O|#hCU~$DF7~*R}|M%E=a7Z&koC+hb2Sfchhz-c`%* z1g*@NJZSn$)h~yB-jK@N)VP{~=z2#5nL9ipHUpqa^HbC;3_U;;H_C@dh22&kS-cEo z)8D7OMS)Ry-9s!&v5xZ8RD}=~c%HHe$Cxx!H7f6jS8O+iB~w<{QKIoHFiS{F;nb;txb+%+y5?w@_5(+^Oc`_V^6Bk-NZuaR{SkL4I)wfO8P$TEwmj zxHwV;TV&0~=JikS+AS3UH>TcV1q>$-p5`}q&Zw1{8t8pVhN(zKGhYb&hc8pezzx5s z>Kz=1)qKO6T4lM=Dm;w7Kk-#6Tr7{9xv%~eX?)l6nub$k*h(24kWq5>9udNH$1i!Y z49&q{OQtbmW&Fz#`u7TFcWN0(%zBAiX&#=9jflt z%G%~@_!vk9if$KD#%fcyGOA#iG*jG5c|F3!0?K-*HpIRm=25^wIxvD5ihH>+-#-a_So)xt`XJ1)gZYcmGMX_IM+%mD~sV>u;A{XGoS>Y*B7VQWs z0G1v@kB2>;mkkcYYW(}zXA4XyQXb&+z z;q!3ZPTD0{((>xymb+*@!*q(gJN2510+&QqmA~mTff}R?R>i#i_=1bQDyuY$V}Oel zY8WOlnr}TEFoG*ci_n*>=cruG*`VUH^D4n84iAK4)Z(p_cwRk8!g3iHBcl*}+_LLz zgA|m&7!1lac}F&W;%`Tz3B3k#_bxGa@Is1|*Apf?-%{?Ci(+X{GLKLSD7jnO<_#l` zojddX+~EF9GXr}3rCIrxRLbw<-|>0?C3$a+@c#fJB}6w&FWYeRM2+~{g zsi+X|x2$M)8(@aW7bu?vc9YdSG)%t$hKRf3Qbpebd4WTRO*w|K^+D2mB63yLj2lAv z9MlE@l6VKwdZe{@VRV#asg+pxi(Wy^L{;!k91kQA*wjG5>PMn6DTd{D4ECG;eL>V9 z*^)4dwh^Oz`If1sWef8MDsc>N_LeZ0E!0@Au3(mfU+_V)FslH!f=*h!2f@Uo&zA25INSe6`e? zN12ZafVTHBW%5H&l|Wo%@f4=PtV|#|5P6g=m4yrJ{C|;b$fOs}yh6?xENu3LSgXo!wm>|dWSSkY{BgpRid>wLs&oXY$oRgbi`Qsa<;uOmvA7z39r$Li>c9e+G@k8~G; zZA`07SXvGHb^idyoa8E8<{E;4=QE#4#q%sg7F;R(RV=>|%4*D8;a=ohhGlK5&0g^1 z(pF&_tg5+Jwos6xDE9{VQ>mui1=XQe*e;<7MX6Vkt2OWRe}y1xuma@;$k>V=P5nOd z_Lf9!+l@aIW>ZJon(0+uBO)0;cO9JVrIU;vn!xuMi;6`WT?al7?4E?UBr91CcXU6R z5)UkBcm;3cnL)|FZZ7c_w^Ip}{?HjDM_ge}HN`oDq@f58AhrJhdE6L>8J0RV`b=fZ zfcFNyGl_I6OQ4v%I^)E|5^|5sp^Zd$D-I3%+^JRQlMFtY?7y!Uq1=weT z>JR}pqOGGiz3BTzGA*#=3bzh%=xw4_)22}}R+>z!ezXL$>-#94_HH#`T`d$HV(R_i zougKjzlOd>GMgO!B)Te>_@VnD6h^%BTROGM_8D;rnW5 zhLl6GLcadI#)8er?09nLJ##2pIaweKpUiH*H6}T@8vUgy3Iiy;! zh6s2W!_Dx@Rcn?~(YAT98eBlq?;hBOg_ks4RPWQ*scVydxS55n7p&M{sR?1&R~LS{ zC23;Wp`q)F@lw%&ny!_eF$L{B!zKg*qr#i!Al0p%h4L7FAy75+`kvAA0B245lE>{^ zMpBIpIm~PHb(5cnu5fYOTUjX-DSf?Qpb8#uUro#~4flDJu;9OmfQ2Tip@B;+dyFud zZSDg2d-wbQ0OOCWPkr}_r&h}?+?~OHGY{q812&Ew2)(?)>&!!Dfety(3Jm|k21v^@5_#IZ!`9do_(=Df-RFt(cY9%cD~RyBxZ z!pp!r_3VMvSw7NIplIG-HTI1_T-{^L^Vtw|a`^|3Jo-gsT6Ha|zw#{W5Wy`^iG3%J z#H2M>%hFkJIxzqd;_)$g`b>R0lx+bmcLJVJ!$rbUd&@OXL9ax31Vf9L>mJri22Hv)$jiRXs}Dch!5&ZT7X6%72oi-oJ-04G=G4Oh-YzB zFog`%Ip!*}mKnk{S~-ZyTXeZdln2s3w}KS%dB68ZQ}%KLM?+$4^X78l&;w0YQ%WIm zLE4X8SH58c47Li@U0+4|OJjUNHF!YI-$|J1cmuNx{dkm>w5rJ-?ce5X3*^P9EmNQ~ za>y}O?eU0=;y47a7i7Qir34$GPX4oYWkfggUr)q9SAr;baVVHDP;bT$#IaPZxxUH_ zG!ZBnGIZCR*145izI;I&a64+XWLkTy1AT*B%wSY)gVK+@Xfwb7aOFz5tYY($8)XhQ z#$z)h{la3u%tUA&tZh-vdU{IO>jMv67?{40jQLaP6-4{b_Qltbv!FYxdi`Q9f#L-p z^!A%%(=OC+A6Q&ysWg$@RfP-L`}Q6uBUCOk(-}Po&1kZ<>dZ*z$Tr zv9;~zxLIY3dEyNf73G%@OIC~;U)EkFl$%fiamIDfLpM#f_oP0u?t#du zX=l>CHrmi5f7`g*DjC~{ap1EOMX6C6L z$h(x8+k{hhrv)X&B?RDZC1M^e?m2e5o4-HYRBW1a^n)=HgGuR9{iy!CfZJ9YFNlN@ zFpu)BJkJbQ-dVAmM<+!791%v4h4U7scsY#m%>^fk*C_5>Pz;}O^A=($9^yPkgtKi3 zscfiFwPSUtK40LSTIaSSwD>g}VAn*Uw)_(v1Nhkl?~+qx_=2%APS|3vmbCu>aONyc zkZyIFV=Hv-SEi_{*$uFI*pBm2>gTA~v9A-5=P+ldQiH+CD5vtYrGJxht=I4t#0X`o zi(;0`1ieSN!%1?g6kDbG%jdauGR(l!xT+IamZh(MnQZ*Q^ZJx1b+$!92lAJTwZ2coODAk=rMOSQY36o~to{=iq>i#*2RTg22yhFi= zipwLP5yJlf?B)g~g{2cM$8f*_&kaR2oMaeT08y+|YE6|=#Y0doA`oa|R4qAx!Ih$7 zE8_W%go(&qFhG|B#{Om`=LBtc2^LufO*q$>8%2syM>MYBwU07dyQNV70G=S(J8)XU zSA9`^W}ysJwQ={T z<%)sBKacg4qsv;43*5yKeakdHB2zh*zCI(oZLWw81G{nJQ1dNZ6)F<t49H_5GY{l*r$MO_Sf!c9ua1dmj#xRh_}2Mxy6&!Jy?uaMbAKyMe=#!xqk=S=kJyeD_2J?A zO2b71uLGB_)><&!dePYC`1gI~kf3*KgdTfKGs zoBk|n>Rc#atUg^23`-Y_N`Z|rHd@XiWwH;DZFMVwV!E_@sHqZ zH!*GxsS>eY_;>tQ@ERgrusK>K#k4^xx2NwAL{KLjPGt^e;L6bakpbx#LvPXdiI%Fa z2)fN?UTC0+DY{K&aY!4)8Ua?0S%y%1X5h5tErzA`VJ0st^}c*@>!lc*1D08^2?`jR z4awFU+cZD84tL`o-@nwjn=*bSVjoTA*SML`Ge2=ZNWoR5?dAc`v@BR0mFX{{8!G%V zpAqt!2dK<6{)|Fl)9S+IVflnrE5gVXSM6~^4OL^9%0HQXqE&E}5tvp?N0m&8ie;CP z+QVIOEl9Xi8_TE@Ji71XDPa16|K1QiPNeO~bbmu}$U0<&Mo{fUlK0bqZAWzhPC z(m-=j@Fl**qC7&ZA$6AY%B)wU{^&x9eLWo2YEp@*fIT1A$55ejlzir)GzV{B`KR8_7{CnV z9B04Y;Bg+G$w`{X@=NgUP&o+MW>gz|AN&ICW>x`Z*#ZEd+e%*$?4fIi5UqiF2S__) z=KP+Kk#4T#V_3o@jGTy3rX6M@Z59JiBQ`bz{{CZt6qBQu%(aCBMO+13Zm5X87A>mR z#1Sv8C0E66I*TJ1IHrgh-?)tkGzlw&KH(d!K!+{0hrKf3yB631#INPK#Z9vu9fsUg z09J$R3_C-G3E2_5yx4?-rzWMkolePVFQj1GtANoGQCwXQsS6bp&acEy)hQZEA`R$` zAjf?3Ey7wDNL!u0Ag%ZPVX^pO3XrI3uNhw|P-(%>SpNWEpd!^@6)FjZ;+`Vy%cd=XnPbIW!H)BR zP;J=~t$6cMPb$T1#x0W|PLd2U#}vO4Y1p`e&?u@J&GQk#6kG}KpUDy&#MCfrtc@jQL8q0L%NMyV7&90hAe68!G3cb@+gpL zGG?)dGU>Fpl4kv40)6CAvS(KdktbH8>o0=XHT~)sB=SGf38HG!ml9B8CUXLph$6u* zLOH0%w(BRXDgne%2V#|RLe{W3?xICdI*<0^u?E9U4Hx%`7F$%Qj3N!Clh^q|atN$@ zD#a?N9}#9klNSEmZ9r4JN{f8%3fjHrGoRpW4~bL+Xf8oHAcES@z`682#Pr?|?F=a_ z?f$bVNq9Tv{{SAaaL{0eGHdT2TK48EWq~%=vs$@>>|(0!@lh5} zd&B_ZoScw0$&Pf@iMVFR9f?ugigEUX(MfWvZZ29v-?W572+rG#b!K1&T0``Wsd*={@aw-#p1yH- zA6W4V0V<{uWN5vN0Tsy_f<~#&JXB_Y*lUQ1W0~pS_YhJST)to`a0V!v60T+LxFuON zrW$1hPeW1K!>FtQ!TrXr`F-Co*P)sZ;8&it65}RDHj`0e$h^X@nOUgR-hYT_lomUR zq4lYm>3t&;E4Ddp1CAw@qYp7oh$NzJm<5}P4Q0a-3BdwwX;qWr8e>~7PwazB8Fqf| z7%aQ)0@D(lH(KsvaM90xxB4lHTWc@9&;ws2wx3V{K1}hfCSt8vt%P)6I^Q+kA)=uu z=<_ZBjYXu?x;?bC9)7U0Vz%SyE};C_Thz3)0`O6n_tlNi$B6i}qgC(^jK>2f3|U_F z=2|v)zx)gwj>u|WZD)4`84!7J5rMdO%B`c0e;*P50L@LMkg|XxJ1cEx22U>IVuH8_ ziG2#<>Lo30S8%=URWT^7)V0mPugp9}HrEcK-2OQTSW7KGRC4JkH`G8~7U-D@i9}d6 zDH^Gc;E9q0Q;3xWIG5x~{{TrtvGo1|tbpo~MFRd3fLdn`5e)r2%`}N_fMThz!JZGq zAg?uQvxwY>X>3ap#`x0)%Y~I6yf19tpusMTV)s|cYUNzK2E!~GRjcHY z{q}%BEKhtNy)hPjVXZ>VH1D_$dmdg`-fE>~Mp(XLQqnNs!N9dR)Y|ElR{e*M5O4us z%JwX{ATwgX5z-GhUdzNQUsG7jF^~N#c+?Appi-ClrVy5g*`vN(*U;@(CUTd#0 zX&xgPi{M(>Wkyg~6fKBZ9pQ1sKrjO_BLMAKV_-{+6rig+=(&zsz50I10T4W zF;KNlioYO2P0*R(Kfh>-5XF0sMle60%w38HBOX#KJ&(jPFT{%tIlLIU;WE;ax;6g<?0YSC`^G)4l{=V?Uq2Nkylj{&H79&@i zvK)bsBX)Nd+Jwr1*lQ8;YUxFv?xmAUnz?Q~4;(%QlpGb&4u_0-95ymKj zAzlqr)>@1{%Negsm+KnFIxS*E zF8G(Q$E>x53SvM8Z*u9pVkcxilWX2$wy5T!THPC{76+Zna@+hkCZRixSUpn4u)W+N z&~hLo{)EMg2nQl?4KJ(}Qu$-0EV|VYDqAOBPd|Tz5iEHTf{pbpiovH1OllE}cvp^n zo;-e~DA@P6pZ%;cm%vLR&B|o0m$0h1|tv zDqK+z>K1ODFHo#YF$@>S@5EtcRHeTDx%tN6<6WUov^j`(q^BZNzpMh>Cbamx<`{`1 ziZ2fmfB?ZbnTS^V{{YT>G^2w}K0L9Qi8UIyy&RVD89sLE*%A@SLN@?yctxSSILj3QR8trMKPFwrdpsN1J>IijV z3j-$C7iViweG|70D_9gh`fl^EPsA0(S8b7E=Ek^$5ta#<(<^$-!a)tI&p zaQ1*uVzQ-r9#{iXaVv<^uzQP8Q8HIkO99yjO5KAHQdHAx6L3*Z!`6BSTbCv`ab!ve zk?79^bw#$cXng+wQi8%X&`hg8!fqg;xp>H0-nsT~=b}~%bvO%zQhO4h$grM#e`$}Z zwM@kW#mTLRHFQwmHAw4A6U);*}#-a!+g0S&2k$3nvJSE#VTM1CdlH4AJVkBMj7v?! z*Q|1iJHr0}4@l$uKYc&&>QFVJ+$Gl>nckwR^VY(}9sQ!RideJ*Mkw~g2+Iyk-Q`E{ zd5o6^TBdt>_=?1lwRXf-VP-w$aL@jJ*Z%-rrM*sJwxu-|Ck(Z~#kq7`aGJ*{w756_ z0E1|>BNLQL3#Y@xWg%8}rEeAU#+b;*kmz@i$>tX`aZ4rbDm=0JPeVt?97UPgQ4O4G z$UL7A+1xn^>oEuqPGvf=P?j^38DC3?3#`+_f^Yu-7HO%Wcn2|A{(tNhK&#XW;1V=T ztIqh3(q@N|&i?>x`2PUFInf6N3Vo&O*dE{9PK4Wlg~@(1Q1U3Pgw;B*zM?HGL$!Xm zfYoz}LV#mmcQUI579MW*hvpP+&6LPZbux=s6(fG;BPhg6;m7ZD1Q^(w-{Ke*B@7nW zeWeV*Q+3~;bLLd8RSRV2#H-jg+k#zCyW9)#!~296@5Pk`rU!_}tx~GL-@IG3PK>cA zH`g~7yeCb4qUVXK?pSIRG?d+|0<6xq_w|o>s+V1lYq>(I?aAYqi-sV&PDi@uh*-1k z&@9VUX!CG3^freu1%*hCGQi2w0qPBiq2jEwmoV@~fIXN2w3mZQc+JFZuCJH7Y)9%g z$Pa#4m{rb)D%?;Au=}(85Te;<;1};3I)v-j*ZHxPjxFV=#zyLrr6EB}CMQ2s%+!_! zK&@YI(sC7diL?vZ94ekp4t^X;6&6(tmBLCKWpfgHGE8WPt#6gOVef0&vvFE>8g$h20Z||8)9*%0`0xva*ovLZo%0z)jg_KnE zhBivQp$TlYZ-ct{`bD<7EYHu{6%BEx=28KcQ<7z`Pg%Bz6-Hj=`DdsR_Scznh#klG zJ4{O`EWb&+9?;;NGbl2rGSoG=V~dDPLM2&d2vCW3S;RoPtW1s|i3O(}MWXqLs;ok$ z+MG=@Eu&n+OQ_8lF^OQ^^AXZezJwdg=?hTjQz8z~LA5XFhNk42#ol1HVPLG)Wjyoy za6msfQw6~7s5M;o3L_EnboiIgk(bs{s_bT~s1e}4gRC~jO>0v8jrwQiI5`M~hZA}i zA{t<e-PARBU`pOCp7%zW(s)=64OMsylN(YLx!~iEMH41P(f_kMgQJy>Xy<$7)HdgAbM>Pz`DOI)V(E806<0lv^Q(FH3;kWP- z4YAuznms@I4ZyerGBMDm4Pb2IlwI{yGK z`QVCGCdqPH=4FE5z6dC*iN6Q9r^Ovp`!oBrf|mwV3??d=0HhYNEeD1B%Cn&~MaAoK z?55wu0>?e1Iji? zpNiof)i@>%dRr})Y3pC)L@vCmid&81IV-DRwz_7i4`@YR17tjm4!^l{WMO%4{F+)< zq@zVIA4TAWfx1nrztj7J6J@>%s`K_lP+)h@?ZF7tn+{3iENKH^F7Ic>#5JG^^6()Rbejz3>7Ft&8bHEguJciz0fg$DvX20oDp zBhm8Mz6?Ymj=JC+9xh@}2M|cIsL^1s?krrp9{QBn1O>%vWeY40OCp*BiVB2~HP0rV zCoBytw@HgMih9h|S$teY0%c%Tv0^DNlTmUBd?8-p=3RraOouRKj4AHrD_$cp;;G6#|Z2}Q(oFGIKhwxdP& zFp3VtKe&xlD(~VGIN60usIBhY%$$3`h1EKUglh$ES|`uXiE!{#2QLrZz+ae^SNvGA z2o7Qpah{PzWn~|T9Jw`6!}tS}8kxQ&S1`Ue4@hCTtQtzx*a~-X^$nrdh?JLO%*wY! zq{*;uTSf#_5`=Q0tChh`uY>)5<|aD!yBaY0$tgBqE=XF|qasy_F9FD1Me6OC{Utn9 zEJX2rd7Ri6@6r%h3|zeVmZ=UGo4-N>`Qd*dOttk-b^sFX`x;~~kL$5EKh-qupkC?EW? zxnO>O_?myK}!cGa)mDI82&h@V&_9ltrCv#VW)2UH};9Ii&a<+zC`&1zxa?Xpz+mt zme)&pP3M=th|pQPSE;RTu38O>6;%8u))~Gq9Br`a`IzG^Y!o#CXTn@st6yBhj*oDf z{qfvGimJ+4x+bR4PN$XI0V6NNkRQygcHnEiYbf<(kK|vI@%< zY`pwNgw(=f(A7G79tcf^w+oz|YPjSBRnx6*plL~e-GMAbL4i}c2%OvmheTlAHteK{0npA84R&I@Wy2L8A61E&oz z27UAPk2oNst^HvvC>Gr7hy5b_ei2c5WuUGruXqQA>zQ{giqXvX`^y*E%+xE#+^6jX z{E-BB!|KQM!EIiNbmUDjZC~jx3@0Q2g8gM053?*1j>(dIIE8|emm3$-TC3hPTCtd= zxOZGmU8b?H(<`zm&SEz&#!q0u=c#bEwUxIBU5r!n2IJH_49huXOw*C0FnaH9X2Pjsz$0LDFsNa0GX2v8B3^WQj9m(tg{V`QQ7KB;F4S!aiEu2L9$OOWh8!(YY!0P+^x@kWFH0F4P?m#6;#8e*NkQFR%L-{*hA zhEV?i@f-gD@X*R0fA~2);eUOm&~`qtDpB!p&VuEj3pITr7LsuyBFo#KX<*bW7t^K# zMd87#u`BmH!(~I-7~j(zTr&+pfT!Vb%rF9J)9V`^sTf=@?*te?6#%NY#-hcNEUzK! z_=QOMxQxAeiqaHtyOx7Jm)av06mHcNII6FR6<$fDY zzzB8=xkd`YlskgdbPO~cIa)IoHlf#vie;ybM(1z^$}IGbPcYx!1V)oN&BRvQadFs) zoAC_*^Nqr$tN9~=M?fX11@kF!0={Buu>=4R7sN)iVzJE11ztFt6~nP9iVj%lSASsf zzG)?5;mwpWwCs0M*iM-~Rw2S!*Bo$~_<;P_Eq{`2k7m_M$haN-fbgFg^bO__=@h zOO6*q99qoHY-5yk&DJ;n0K%wpWc~fr1xPiowEf6rbm|{x=`Xmo;p>mY+$T>n8*hcc zKs;E83L32*u_7cQhOX?~X1rEi-plNVrHbGwIQ5LYG%&PwVw!`X6h^K$elO-YCU#hi z{@00Pz&#zFW!_rWjS=<0+!u>+?~K5^d?9?B`HPx&X8RXMmRt;6RX2^>SczS&s4Va| zFRvZe^Wr#`nl)w_^lA2#5DC87gDHFvUxg}?3+pIcSrV&z%|C$B-G;lVwkm3h8$n!0 z)7daHr}Huw#3l_Z)V@rBYagAOZsyW%tju0muh67SFLK`0B0 z*DZ3JbmVPyE&BHihV?9rB(6O5eM{HyHZ!Cju)zrupVAzR^B4Yh?$n%F~>w8 zp=8}>pWofXmi!r*P#4~#P4(c3ro`@EF{pzK;$yisNHyyb%v!Oh=@Njke8#{@fZKT7 z5fw#d3RO|Qyq%Mnuo}VShw^yl0pV`NeM9Z1g~NF;z_@StYGuR}{{R+2D8MR~CMNT# zwm(^L`o@e_Wt)D}g1)gEaS8xfSFBZ}w;IcPZizr_3xx^15RoDKL!7{{W!w zZT|q(RbT{Lz~4}Hqyd?(j}Zt!3v1NG_f6Cn!GXv7@BaYCpe~|D4+&DQ{{Uvc`k3+h zAIgkUZ;HFC)BgaFDplVQ!zjSMTZaDt_yFFy^o18jc?qsV$@F*2DM2;HhxR~`f#Nnn zsGwH-M50GSzi7==E$u8lddHkvkeVphtg^GJ^mZPjw7PT_lRVN^cuTWOv5Lh#L!s)p z-@g+L=)RHK!!!c+n^56b*%h0rX@7GBD;X;LL4&`^316h7Y4_h(ox;HMxT1~aj0cE; zH3Lc(x7^#0nVKLr{s=(O93CZ~1|fjEGXe3N3}zhYd%LibqG!(6kcgqUH}L{_rDgd@iN%ex^1$L5ei_P*M9Rc1>JjwIt^yG zGXhb#kehmz9SN$47qhZ1`nVkFoRF?t>~j(yRRXOi3>D$wO3XE19ZRGQzKb(WZO9+f z6NR=I2cIuKWA&vL@4w7e?j1n@t3IB+`b{KOOXRy&pt{c-WW+?uUH#!YD=7GaLq?rT zN)3*?fJO-m7?jpHov{(V7$Q&};2|CE5(dm0rW1Tyy< z7XtLB`j{4|q}`9S0^+&j&k;zchW%xcH6<^U^0me#v`;%?u)xCzv9%0oH~bvu_!P}<7Hu$P zfJ>EoOI>j+nRDC&c7O~#Ohv1w%2-R3R7aJJ3Ox{mGNG=RI)g~@>Ea_Qz~fMXRkVKo z+`l5r$1;J5a-TCC?1&@NGuLMLFArb7_G^}=Xed8MqRO_dUe+@c7MFkX?+LY*)s?HW z*euVO2SdxjmfdrQ##w)M_Dzr&oaMWg>MUx&{Lc^89z*jStk$;}P`q7S?Zmm6Qix*@ zSMSacfbaQKTKz!~Xzw zC6E4T{{V!jcF7zp$^QVu7vuQ9Lxi9;jQqr`8}0u9!C+AbUSpl3XUEq91B*@TgIX7kh0Mu=S7An1^Y9oYtKV*#%Jk13RAurrm z4PU&lLYYyRN7bRfU-y=0m?*z8iV161U({5d&?A#1m6n4#8FvNPRSe#};L{7B+QJoz z1lV*4j{q0(a)2^}jz50!(RZl#dyCMCz!_EGtC%2PQ|`>rJ+NEdF4zxGCY)K4F#1uJ z00*pc3z`A@#EX4q8dKvM4P7myYsnB`#gbd(bgSp6x5BoSa){eC3#p=JCz)o2-3jpX z0BZ0PqH>!a#1omAPE^$v;o_f(K*jKO4L@FdlX?}AD=+O!e?nP*@=$PF!#4UA2ZPNH zra+-`*4P}Vu?jO!#H}#qaKnkA;k9lxO`)o8tYm2NXK+O=%9cLyM$O9#Coz;D5_2tX z&l+M420I{Gm>iJxfE$Ml)yx|y+)AOK;&4EZUG_b~cn{pvXxBsV&J-L-Dak0~k zSHIF^EN&+9u6T=vnGkBP5xwX(tF|csG{0GkS+tK4)>^^YIDbrWNP$q(#llgE(Uhef z=duE@@RlL6RJMwmtzU_lkm%+IjqFW?9bva4m}7NC(=a#`UZ|_CoI`EXYvvv+_M#Yk zLhH#M1Q~GnE9VjDa(=|Px39Fht2Uaw%Qs*_zfw|yoRe9F5b*`@7@(u>OG_qMBPE5a zYb;tECMs8?EY}%x9L>a2qGW1p;D!rF7>uBxWaci6T&Lm|;D*#U)xaTmFW#kOcc18} z1OQzMC96+{Hoq_;bukBQ6p6i$Fs{-Yp((%M!MM;{F{>Jg!*y`TR#lE^oZ=eFs5x1M zAW@6g5R=;g`ooldCzw}JTYM02b#k+DpbB)JrA}Km@Ol#$x~2Gx8Wp^osOSbcIh5Iy z60^92WN`)nIaPHm);I`Me_vl%f&z<8AX!hbEM690Xd`?2h%0*`V~I|{T@kNMnRu7z zoRchMDl|6^2k@XZaYo!*ryLgMLeQ&BQl65*Mo2!eePy)?9RuPTl$4+Q`uzU@;6LT?{Uj(LN!)Q3eYdh_+qm|FQ$rSUMKfY z&-gVj3`>)lbHqzySWng!X6&k|%kZ*-61T`^_C81GL2C^1`6WdwtGtEvjy~5jMuZrK zw1iYk7B%(iHH=GFE5_L0gASXx0Kq+YmjrU_^r7{cA#N5jUIg%n^8f(1kL!fOm>}+e z1HV;{gG>vCMyZzJwTy7Qxa8*kC87B{5m+fj*BKmYCP^%Wy(p-0nqYmqN*;km(>KG2 zI@`!f?V{$Y!yh;fWnrf!0ONux;Og5|uXs2`%A;0smr#mB+*$@CX4g&vwU-zcu`Y~O z)wtUlN4&4j-@;Q~Alr6~g<{&yRW>Vup$j#Z+*%bysX!eTKqGG`kZ7h+WrBz$ZtomG z3|l!#yy((zVoX9=SYd$Bk6Df5RIsRlT=RXvN)sr=mukap1*y8Cvih-0hRaq{$wPLf z*1IVlj6Ie)F(@>5(GwBavGXt)9wWYW)Xp69nS^i5l(~0M65$31D!;tJRjUTS2jAcc z?F~b_j~v9_O}ozG*RpRlemChVU~L;=JeItE{^C+T2Qskxz$@@D^2^E%c0mT|!a^yg zEREcaS7~#gm3W`DG#%vo!Bpv&nq$O4(7>yL&$i;+ z2KFPk{;q75vIAI$i)9qER%g}$plptLjsUisvN4N(n95i!+TewlcT-H_Sh<+Q)?yIg zz>E10L>oJ-`&=c&w|Fbdh3l>FR1wMTa*DB9MPXh~yvRD4mLy=uf#OkZMN5;^I`sBR zMh^J?Hs|<6^vVslFsj@VxF+lnt5Z4gE1eb!B4A|Bf~9Eb6Jf)#?GWo<0TvlC%y4s< z+Tsz7ajTErNk#4Ls&5U3%Ho^eGkROl0CAiL>ri`dO!!oU z;p&hRbJyK7lhAg^3ps10NBknEn9}AQ`hjc zCgl#>#287UUPROf5*XBg_Z|1YYW?EhW=6-Hosl1ObiN z{iMhnJ;VH*(*uv;)WVKK>`OC|@=xY|f5ymJLaBCu8C5_Gs~MJ#2BC6b)-5fd$`JRB zBN|%LzXVzNHl+^;bLaYmRm2ss!l-;R4R%s|str8SK1iWcVd~8idZuFtlqT$I#_L@W zW?>vaIk|x#KpbV1rI~s{i78Zd2I8U~>>9EF<)$+ocK}ef#o{}* zimhdpc1m9**p6eaDA_#w5Cd3>k)tN109ILhnS+`ZKOK^@ahteu6dI_i zsNazVg0F73GQpu0c0i&DnszUb5{!m!P&bekv{HALSyF1C1A&KTwW!**5p+QTe4q9i zQ_x0Z&L%4{DQxJmyjb}A2jAc-Kpb>{FQavpaeg-ofPS_!b(fa8kIhyP^_f*Jb3}ha zU1lI{uy)$h_9Zqgr`lqFRplu-7Er2>;_MHkAf3}=2lAlUZZ%#dSA#JC(3Kvu{Xi8g zFOtjrM!s$>xhgsZAJkbMgF5aYRp|7VX2tzrxd?-}+D2VOmD%ECs<8Y=Dmgz!D(>Fk z^~ul778=tAfYF|%ZX4z*Dnt}h--ts}tylNv4uhLsBDfB~I+{wtoO2SXFkRwaxaTuV z<_sk{MU3WYA1JG4R))?~aFeXTo-aQbm5Aod#PIsdBE>lROv~8%_bAI^G$kBlmVrlb zXgQ9bNu^4!%MHRKKqJEubc21MUUdLQiBp=I;qG1Gh`m4=ji(F9!mX0=eM4~&C1#R3 z8N&V`-`XJD;K9U!>rs#aY-=?vBJgGx7ucz+aWjSLwng<*|DU>uub zIt)Q(ml&BPQx=@lev8#|{XHiO)z;VCa$a3UbryZ)gQF>in#&G{h}09oJP{N9OKMst z6LOUP@vc(E5&+Tc=R1d_s0S=6Y_z5g?ih()pZLnxv;P2me*(1*Ka5Sk^cON_-H2kX z@x;ey56rU)uPcb?fO;-zUH0w*#Sb6-2H(xIEGk(pZ3RHx7Q{>YVWU+5#Y~+-Z3dlL zFsGP^Z*qr31%R^RrgfNIZ|NIHScwlL>1d?0#14RnAgV;tL@f7lYbBf0Nkt+JdKorNd@=CIIQq^X0 zM;>PXwJ~EN?TSm zwnC!9g3^|)D$rJ7wP=g$Q2Ap|RcPo|wHBxmFJDp_M`{(5)}mDoauFJtn~g>OhtgWT zud_YC0*s7XVm=v8aOt$>%-v#y3}d@;j zKu~-9#VDWW=tA{&dMN)*#twp7jVaD+ji6gM47$T9*Dp5>`bTZ5Et{)PV z*#P-J$VkLM!F|r*Ua@Dmj$$lQ1pU+=5N$&xKuYUL-berlg6ZometD$>%dKtzZMWW3 zP3iLm)S${%6o=*;OEUQ5_sm6fR|im{=hmAZDnW$Ny^&>4ayCJn4MBn(2iUD^u(?})M5#vhj57I8H;lSwOD_ypg4>4`JQ;o@_^)k{wvsqW-N}l zVY>sD-X2f}R#q>?%l${kb$NHz2e$f-Ip6Wf_L_g5y+6Ni{v!VX*h>vSr2tlQa62Bv z1=pwqZ1w7~R|NPbquI*~P*-w>4}^@+F3Ce<>Hh%SyHBCkRh}0np){fjuUI$iQO~@} zL>)r!&X<-fTT!4^#P)}30lPhb2bU0dS;T0h5l5k(#8gJPHhl5P;0|bMwlRmOP)=+q|Kv5Qyo;>SlWj|vC=JSCl*z)s-RnKYsUDO zI3mYf{{X)5$OtkTW}q}frZ<`cC3ER9mkxd9pCl>o)+j_FYZolmFhPdP9CXbv3wix@ z4qAZFI0@Mk0tUXqBUNee{`ih>1I;88g3y*kB~)<6n1blbm=8NU14?|#BzmD}YS`ZTb%K#Re>MFA*D>Aen zIFB~8?jq|Eevpl@JVK<6xd}$%_ikXjh6MPnLr^e1MM_1cIJJ4pEC#$wOeo9Lx`3Ti zp$P=>kP*v9&dYN@*n&Vsj?jYucWM2#^okLs#+X!x0R<6c8#{jFJ zTI7cF8aq3PXQ9C()fh5>Vde|hP=>YiyYUDauS~oeGhc|Ps5o*${WUHJk{raA;$Ex# zqAmXbQxsVwyN98(AFRMU2;9BazO@vZEr(A+61EjK5Vzm*(`L>806fa${{Y8rQvMJ| z0p?V4d}A@x50Y<3?NKUL-t#lKoz1_Rsb!2Z!Lf~4Ev-OEF`IkL&NhQ!0k2%eMdQ+k zu4F`PB~(pkGgy+T%X+4@&29*4(u%eOGMui3UO&O??OhEh{Qs_Rz}8_eFb(`FVunIYFZb#7>iaL>)dR!k)zc z0FsH3_|l1_)vEa*@;tlM;)K@>CrVngjdZ~L!#Sc_*B3ZRqI)~B!&t9)^_mTZD|S8+ z=c*YmdWQ1wvwBd|u+N!FnEBG-5Fxk46UQia*)iyjgzcIfCB=}mY@RxrQ_vZ$29KTX4Cvm_G@ysjps4ZF)*Dzpw z%aw*gjKHyahjO5bFg2E0si^0S2q-m_gmMC*SnMtLip93y@u&X)K+L~-%+U_nL30B@ zUdTwdi^AVzOiQ3U9GCPNvbYUYINuuf<|>7HrT9%zZT8h}Y^WOiswiwk(mca5L?+89 zwVASN+e$K+l8JV50l}o_sOBw37&qWu?>N3-7OOmv?NQ0a%p(kgOX=|e-l(cMmK9YJ zjQXP7-6qex6(M7x;#_9VBXFhQ;fsA=mNXI4tC*=m+*gij0F0j;lC;WjUs?VAd4kr4<3@`syA*w77xk_2~o^yS9?e z6B9EO)6egt2Lj(dCCL}{OYGL58CGD6l8JMA9ZPs~CR!jeVP&gjbOay>aBx0mX35zI zC~K@na2GVs<_8Kr?jdZd51yhB3xQy%d@c3%jdNXFUmq|Y!ii8+Fbl1`ZyV?70+O|% zh4u87xQeh^eE65UbC&k*5%w97&})K+&Y)5M>eR>tO67>*!N)f1g_ke_?F3{(YoK^ zmuvxX!1Wy3`VCvduO9xXK4u=_3<3ncev^g})AGkVVsOzelDakKb%ph=3ycviiIP(ia zlGW`00DjOewE=9w1MIGUUzp+kELjjQ;n(rE{`mg@69eOG-EE9lbgX z{KQr(yvy|iqGey&#kxhlWEBC}x zO;0$M<-ciRE*Bj{Rv7L&5r(FBzY@d==>U{mv=GY!>l$GfDhtaSXbB9kT0Nkw7O^Pl zR@ZHEu>k4O4NC&cOwMWw-CY+Qzv*Ai2P9yaV~%?}u0JWj)+F{T-Ygb)j@wyPD|G$6 z=7i^QoJeUSA*rY2@%DsvIERbnh;pK$$cdKd=Urjs9YAeG zF#5{0vIx#r1ADG{g>(tlnq=OT4t}$eSwOfE0hPO@FC0rzke9$TV=Xn*7L%nwy<30o z3x@U1QQBk!!dCrKqryN!Pyk}@+Yl-sYmKC=u8l9mUABe`aEVo5H|JTXteUlfTOIFT zZfd$`J4EI8UuuSyO*0Yh0ZFWGQopPsnN(7$&Hn%v2$i4D@Cv2K5vLh4jHBrVIIB8f z18lK>!I}O!B9$UP$mNTC5krUX-f-GJoxy63Y-Gl&0fE_Cu8;4(X_l=kba4Hlum;q& z%WJJd6mMLrBz_5%VSMgfRfP!>0Ep~FMAJ#Ib`pe(Nj_CuHdSjps!Ea!R)Mtw`10!f z#|xa;4V>5McQQ+-6%dWPc#eU#o6YqDpB%E@i>^JBHHw1l!-k*@kXQ2z7Fx?wMPELU zn$=>}$aXx!?fYX!Ry!8m9w^WJKw%glElj~&0#O^jWzit*&82UwCO%)hH)t2_5nCxw zNs6q$luLcS(P$P}xUtmYTPxL33PRYB@^cAozeL9S- zlLbMb&}TosvpB7{mPQ&dnRoQ~MikM*>Oh1Cfn71ny%O{9O8Jrg>y-RAN^ws7pZKbJ_BWLw& zz+e};!cb{YTY4d+7&w(3za4L?sl{5U)y0;=LtNEAF*56?mVbRCzr;(n^T(sdiHksM zJ72%Ow>qYjp@9@3xk_oo6yz}uOm=D!L=xHLMLLQ=CxTO?6fp~t0aYR_2w-wzE&zku zZ_Ul0-g}gIHFEYUEqZFZR z+zx)QqGi_^O#DDLz>jb43#^C?rXLp_;%MC}0nJy&GcWnf)Hi&F6~))QL>n5g8cGsr zq;+zUk(lssmTXn?s1=qF4^=N4+_3Z2-ff`4m1l@C!3<^%;o5j1LJIT0?SFMB=?P}K zeK+kGKt{wgQTdGp7=#ot+EEC@a@k7y$_z4MTSvs~T~6jFRawq*g*IJvGbL9*YA&!F zBsFFoz{Yhb#nr_Aflm;>+FKl7wpcNNGIH1X0^q_tw2>9qkH_=1f+A5;Zuj)LyV0fI zdHT+J4Z}2klL1?Up7HsEVzS+nm+|~Cow`6k@0cb^9>r@8;;(dG>h=QKwmWZ|HyRK5b9y<(UI zTr-CKRd<}=0d0z_mfMRPp5W8y;$FpM#1U0@9v|ZVsBR8nl=B6YF1%bB1inPZoZE=U zClEjZOE>W=IhUDW%Fw2+Hz!eDs=tA4OE7KmD8YBKBjH8mPFO7t0ZTtwasACDKehQ0 z{{RVCX{Zv<5$|pZg7P!!>M$IpKFJECGgP_wn*RX7>`q>xR$2uVYoaAm4fCR$Hq&XV zE}E9564jB2EqRmoI*CZ8#BRr?S;|8%iJnbfFLf`OzS(kMHt(1a=M6xiYl`+bn2Hkh zGiy6}A{#Y(JiuLxoel5II;$z5ngVtJMwoSSUzw^bxH85n&V0hnN=_h{R+E14qHtUH zmKovpf;oXMdi~(vx7t!|x(K&avkN^q`uFjUBUnWui$BR3^K46!-#6}S3Dl=1^?!w^#f{9*dXv5m%H;r+VA zHWe#s{{YQJNvrXqD23a8(#Dl<{h4@ZvQjzuhP+*o>PFUaPUYg`mR4>(wGDp;d5((y zGL0_0!!T!-pc*Han7wLj*D?1h(k#b@2^$jt@F{h%C~rC0zVO zYa2i}AJkriB(xN(O}1YhkxeabJG;Di@7e^fvMGir2*#1yc$9!pg7=PaOa%a!QoYo6 zoZQ(HP+VK95USju)!BPqAl74M3)@}!g!M~d#IcI0uLVxTfmPhKV{miZ2^SHxQ)^j+ zRatIx00R&$8Db$#w+~^|uOCUGU>wC*m@yNhi-8qsv}H^{3f?zs2Fr^?+YQ|^vh0G$ zFOu=abL$s$3Ms0*Mz#jj9)IM*dt1K0>{mn>7fYAxf5%ASOv_Z^%NwZL-HjtG(qf|}yDZ)H`GF$C5-bOT-zO@J02YOc6sKN=yc4~K zj%=&DEXT`q0;iHwZL34;igLqhFk71#dK@y+=9Zf1RfXjaa_1Rd@sI$}`C2iex9K|o z;8)!>kKSV<6w)^A4KH>Gi_8g{7TR`{#2GG*Ka17sI=DWH%}u|9BLp^L0z+{%1IH-> zMi?QVJf&h#y^^f{723D|00XL9E}{aNiZz@BXxt7YR7lkyB3$8sWecAK?78vO70U~J zYsO;62(?XWI%UeEW6#bdoknRs-xBhNhbO1c{x+GOsgCtwS_VW-W>@C~Q=F#o2Vr>9 zY;KGNfLWuEC605VWmp-?bMcn(9E8qqPl1l@;DW$1JV41vFT4X$4o)InfK6%*Iac)U zQt*|CCR;><$1ui0-YD8^O?MXUo>m%dbp|FeQ6Fl{o^=A8R}^$S407&3%%klN7({ILS^`M7LM zj~_fjB;ue$KIQAz)?3}mt3D$@60jC~dP?>Iqg#Kdneu~h*Sjq>Wq$n6dEpZB%Bo#G zLau@fYCS;n4n0GE;1?7VFsjXsClExfL|F%M<^70dI=I0=<%cqaHmCulU+P=%ej7Q9 zYX-c>?4Y5+x{jK^Y*r;`643_*30H*4p&hjfp;RC!6jf^xOi37=U+cWf3@sMx39;d6dTsg0$BD@|*|VVyz`Qs2NI92Ed|g7YB$+ z8N1h@CEmeDrJKEVE!rzXi!J!e#1(?>^S(*FV^9Ww{{YoVo|u)gP{gU2hl#8ZE3#*( zBvoggrORJua5%b4*Gwv+Uf>u)qgrSS%r07EWTYIG9Z-8ht@8xXCYWjje#uAj%@iHB zDoxv4;D=}`ZSq z-xCzv1b1Bj02H`E4GhXNov(hMx`lz>8biUyzHtFt%RYZy`po=j4FSsZ{{Wmr7`256 zf}qeYaPV`AU0z|(0SSVv#&gR9tVW2!vTd&ySH^;osnJ2bQN{*iUaIS6=$Clit*`Pu z2+bo~!~sfYtno5n&LB~@jChFKrTj`8eUh38EtT;tT$!2t1)h<&E7AdXpx=SUJ>wY@ zElxRmk4Ou6muWMEtX5NzVt2Gfe0qf82iRzc`RPzv&T2h2+7dD8e4M1L)DFs+H)2M(exNM^*fyMo$ zo)S5gLSfXR@nO_n<6TP%tG_cmE$UNSDP?BN!w}VS&6c-Cf7y{YpI+nJzwQoDVbkj~ zXD3mHqAg|11sVbz3>y%+8b_ry^Dumr6?zNu!Iv#VNk>ib;t9^EH^UdAajN9+_o=or z7R%v$<_HuEKYT_O_v<+sf_Q1wkNXyLMf7F`=~@8HHB`FIWHQ8nRNj5xNt2d=of@Gv z^!&{wYMef!5uhPfx6#ab#DTIej`6qzSbZXT>6$evdCu?HmWUXlDl6nsUeH%*piQgC z7$2F7EHTyYn4SX@qFXZEU9nuITk7*mLq3B#|YJ8 z0|HYoA9#Wa?iaaKtxiY?5XI%$9RRUw!3D0yny=zt2$WIJK6ih#k!&q<;r)>@Rbe=X zvU(2QxW#76#ayed%K?`>s^wc%RkjKn2DXIlTq0SPxQ`r!2Z(b20A_@|A^2v2=ywCV zTjlm;g^MUI@6dqc_{X8}iHv+EZG0!`Q1$#pKg8>NBYAz0J$@y32O6Ft{H1!tTEf4i zrRFx_#=rAGPv>{oi}mWxCq0n z$|%@PuP|}B&R>#jOFEpt@W$g$;FwpQ;A3y;9D|8VD^a_5G}p}CmFmX@3iBIusme?c zE16~S#I(3B;L4;=7ROXdmz~Em)Db}yMByc=*2*dHYw!IxB^R@s7r$4yY>HLY`tR*P z4Ge1rb;>TjVlvBRX{TOl%N)RMYA;R@QjY_;csBty+lFOm%*IzD<_fZaJH2ayWXLk~ znBGR=ov{&pv4!MIJ6z%ZPA5|(T!t)uX9CE0B_}lk)Z^(Do>OoA8)9=~B$T&|*t#zs z@G`0?y2lWX#ppkN@ZJ5;{{WWDNlC0BT8`Ed%y==^Y+-EWj6{1DX~eWIE!)55zni71 z>widKl4gX)&dFHADr=Jt2=%(>R8zpi_X7#cf@pd6DR zDN2AoW-KK_Sk|lJXOYr9$FhCYM=K%aDDm?zIAaP65~3_P=P|72D*@44@{hX9qN^7P zB_IM}yh3L8`IT5jF{&RQ@?Je6+bfiyR7WWLP9;$QXo`V*TuXBTvt$fsHz+)B`;8xj zp;+UX+E|s%X!Uezd$iQ~ZR4qw!b&O{>f?^M&%7}i7mHrH`^9ejHs$wa;=$5y+8doM zFK>*(HlSZo76EKKT*V3~RmEh}Ei}=dW4(vbh@~q1$Ik!~{*epP%d{Wddcj6{G{=}A zZEfJ@{;;n?z_i(qk}*_nuysR!*Sw>Vl)z{|*w}-|a)VVk0k!c=R*2tiFG-9>(L?o1 z{XEP3s%*{|sh%R))pu|+EEZa<=fU`dYK2v{v(LPyrxtyqz7Z|$4i%CkFpW8%B<+kH zCRyfKLoLhSnS`;Um^X+f2*VsS`}l@Gpo)ztY~Q4I`H1O|^$crV!O8LIzuZ%i-zdCu z#ti#7F0#zkM_=dKRs(QKwtm+7W^;o533j<#a!Y~%%{bIDiDQ~?GcLn;NJt02ge~$M z33Nm7#Aa-)^^7*HZQ{GSJ|$OvB8M@h`TjSG5TJ{#R}VyP1_r9k3T;hY%2TawBeQ20 z4B7k!Lu-hc3vBZ+j(>q`#$lO?HwmVM0ABWW{{V)qt5I}!7w~R5buexiE_E&;(nuP* z4Ph-L)p~_2hHE)f9iYR_&KLoqMFGdGXuuQ1R$u=B1Z2Rm9EYh`ToIQ)$F6H)f?H{B zRn*M1$Cx!~J>hlJ$1usTn&D=}LE*WJtHiuqC8h}BaKf|Z4^Sh@SoTEnpunds8QiE< z(;I`HAyUGplFX%)>-8@vEv<|i0>VtYn^%*7mrGgC}XnbC1s`xB_g`5d5KG# zkD?w4P{*h(sP{R(MU^pOAa~0+) zi17nAQ}Z<*8k9yYscN^mkhhr9&<55mXf>(7d#ne)ymNILx*wUXUJqQjAHU5i?)B%*Qv$s)=GBzpQfl zRq{7k`Ig=D085n=z`j51T1(V3eLY2jw=6DQ!KH2rT5NhcA-@vNj^d0cC}(!%^Bhgb zYqp0L{^}eudlnX<^PfbOj}IQMGa^CfZ=}R*X;ncS<_4d2`2M2R%%b@*=_&CJ20fv5 z)yxdL#nj1Mf<3Qnz${s#E?0_K;-x?+>7HbJ63d2nP=?WK2l1p8^9~TIogmvHB)3o! zn3q00Jo^5*NWLXNC!`wU%F`_MFGOz~z%^S?fbZyl+6R>1!JQe=QQ+8sqFU2thHK&6 zc9(-7--k|GJvA&D-cw)PZrlo#WN(|}bp*j2+1AS^aPu)P;yhwy*l!6a0Qc~hy{5tl zy{Zqgd(N&d+Wef?q`iP0!urf7aL*WQ->g@0Cz#pK@dA;3L^0eVgJ+1?v$!hhrV0sZ z3whLB!^cJp6#d}-DY25jscb7Q;lJjgMJN_QGhK`8%&+8N%ixVeCIW)?%;LmfyivNu zqQ@r#oHMRvn2aLxZ47N#8oixF7XvVCzTnGFCYg7S{PBrvEO_Q$Hdk=2aeG!}3#nxU zxq?;7RHCn$k>)E*-e&0a5Vr2+gDFb8xENFr=Mu%Z?gF)_l~=xHSeK3#3f7_xPZt~Y zg;3P7+M1Y}<(y6Smjdy&pshnHA6Nm$@VrXf_@W%0@hnjEXPp)17e+~r{{W4@kxYV; zp)gANW*!w}IDO+{aynhJg`$al6;BCg=+P>?O5lLfko=;d5y?RX z3&)nC&Pk|BPELpo#smy+VrIew_YR;uBfsXh(RQ6mSSedm=^EEo^a1c{ z9|@O2M%4Hw-~5d+i840?E$nYp>?_mj9koPTT}kKnsH-pxVS4lab1b0R?TaIHZ@4?1 zR9w6s-$$9G>AIVLA5;aZ+gak5@XHlp4}46^%2`mxu}`v}nZ(+@0fX%Z$^_O9bH9c) zpl0!m$5Fd5#lx~-B1KGJ$Df!5k%C$}w}-E5j|mQw0{pPIUdXGaOlTZ8*z8Ztjb zsv}r)%#Qv40CzL3UPWn~vGl|^56mt%InNM&6pZ?kv4#O$)AA!$Y_{va6Ac!s&cS^U z`i0OO4oGj#%*(4OX1P$nVy6buA1m}vWUq;<_%QGI28zMV+KkNOxt5X1=TKIWaJvDB z*nQM%=TXh(D-jtn?&kQ^R>l^S5bn}Ws@cx5e0)V|2Rs*D%41&=~9*B%J?GIpt-tZluSiFp}^FmC)%nYBUZ;SyysN`E%=lYl;ZI% zT_3zcU-hD(rqB98p007dNd-3~GZHvJIrK=ynvf-3GO3Y-{LqPuGcJNbd zem}_V?b!)5B^A+@JE`H0V-(xJG3G}6yNtf7E8rd38}gO{C1Di!d$K4s%aOCb8{-F2 z$u6O~n6rfi)5itH3xklw<-P71g-SDt(;YAi`vkF_OhdSz7=tY?igq`g{bq3E7#+Ch zRqq*I7R7^HFnJ#`&PaI^&mKZ=xb>6POJA%;H1R52D8npqRwO~IB`uHvdzM2F=$Tvo zEH1`z06Nzn#xOT9OJF*N>-Z$>SbAkCsx->Bokj5%i^?ooQEnn8rZWhZ?7MgZ7+bQO z`2xFU2TC}{{R4Pvn$vC05r5+#?fLuUm2#~6Bm*A zhZ5JUwUEu2n>CmzeGtB}17W;#FP&MGmM^Cgju_y9H90TLMYdJr_Y32>WoSE!OniYxE$#48~;lop8aKf-9jckpfr|YPo#D?6PJ@U&xro(8BPA` zX4`@&t1*GY-P7w(=~~{$hsU(4c~*>Ar9qZcDMTX5THgG%trGi<%ynYmJwDSE%G zRE7&{(TmZy-3FjHLeJgGXc!Sp@%4yCGFuyO$Cyj#6s7jh-c+fwvY!$30i@IA zLg4A*u6#8VBGPdYDD?g~%oKn!)Ek-p`;@(Uh0sa^QRoF{pJ`w;z~Bqm^8VrrZquGf zPPqC*oM7K z>H%usNGm#l%z6wS0JVFMqgeSP7#uTm@=_6!{%HRIp+D6}{pb($pZ2An?JE}fl&A`p z&h9Ns*^eL19iLhrA6g@A-dA-6URUt^t zpT*tI{b;s>Iv{gpSyl{+YdGW?OiUFSU|T34rIq32!xS%7w$v|-hB{%{8)>L*qjHW- z-Xh~{e9N^1et48#FU`()ocR9$)r-^$R<0RIiu9N6;OePiY&Z-1N~o;!H^jJrm36z0 z2KknpdQET45TUu<1Vaj(5`=6(i_micWnB>O!aa$5N{#Rmq@)R>saP+}E}BNQ^9^kp z;stwuB7(Cv{{R%VSLqS4FPw23N|d~2V{3|y@OnxHb<2aT}p-mY5rI;K#Hl%ny(2&#Wh_5YtKv&RY26P9G>mU7S@hJl$SZFuIpw zO5?e&DnH0*rVnUj!tj1&{pG6DAI+B4e~^sfKQ_SAp1*uF#7%BVt^-3{sVJ^~YELen{{Vjy@V{5#EJt0qBVAzZIP(>3nR`Va5Bz~lHY3g#?pM|^U#Jw0{h$CY z^$WG@HS)}^x`Mc=k8IeSl(o1P#u#q%4H(2kxXjDKWf!}Ng<-MRpS*hzLj@!A4NWo$ zXN{IxA-6Oz+84r8Yl(CVr)?vtPe>7*>UoquBb~rYyjn!oXmsMRK_#BU^7D-?Tr^ z4bX}m2aWU89{&KH5Hst#F^^axm9rKPS2D>_v=KaOs5+B4abM&qMQ$EpjwwhXuH0jr zh_OZ7t2__pSdFbYwz&F2g*WsiDvf0hJ&i++zO{&jZ6&?FkOHvI+{bN(>6ByU25$Q1 zGeXZ0i$$8^G?r5bk8XJ1+9A9$r``Hl7Ul<+=cz8^63`pj^m z&f;*td1Bgo!jp^jl)C!EIVtslYXjz5YvnUDRS7_`#YC_hGWtyj_hyd*gYKUh+`GhI zw|I$@T!-nEjv+(n2tJRunV>1ucB4uGV4Z64#VKT`mx~QdfN(HTi`}zP)X1FPCFLw; zSy;7OOya`{24hz*JV3CcFiPfNCPn52E+;?3f(icsgUc5Opcf6dC~hiaF#rm;5xQIE z<(gq(exp6{HgN+04^QBC{2Gp>=lFFiGo3)WrAl2?JXL4XIAmi{b(-auu+tEnkPowo zO_cut2Sr1L&9ATHh}@_5nPRB}iWO7bzp35ijNTcZ!MQh-VjHp~nkiCiK5 zVTSd*J@NB*_E6;st+0Z4&pAeRy+P&MJ8c( ztAGip@-Dz_5agg;1%=&%U;S{;eP%~k zbfKC(b#mXV0$3#mM~vTtxQ)va8hBJyy}2TjJu?u7vtqfOJOd0dLE~q}*{M(t=N=|f z+@<;-we*E}N))8g!yL);5a3r_OvIgO&fy_049pNuEj8^EC-Ex$LGag7q(!Gvx7Ech z8EOh!b)l%+l#B(98_Y%8Js@O2uT)hqwzJS5zgTJkKviDt$~`kFvmE2zutjR{oG-ME zt87GEIoJ1aYb;f1@sCM(wY{3J(jlV#)baF|p~*_=n6*d5a^{>uYszBlCGiC}Q@h2) zD7ssid75@Wc=d$~o3+2b(TsTstZELWcUHr3UZW`#N-umxf-DQ!aD@TJC?(a(?{Py4 zC4oFwQ5a)UGCrMab+`mEg}b-~o`iD1R)?J9>lQIvsjxpW$|8|Nlj|_mx$d5kSgL5| z_?54co@|!V*K1Y|iB@P`x{&~KR=YD8#Ok-;^u!h|PAf(qnbf8T!`X$5QNOKyWionZ zyngwVS#u5uL6PPmqjYFF>3y*I^o-gTlVVow=c#t%wb1RE6M1c~>%jdnip%tSpm+mmT%F`Rsvyq z4pVZQgkF-46OfD@A(T=!d_#LeC8EZTa`c73hGf~*M7aS1w+@0C&RNWEo}T9ARYAmF z2d0r}Y2kW!_Q~xlB~-4FvQ*_pO@dfs4X!Y-yDN4Z5C*EwY$@3kqPoO<$b$BnYHn@X z0V&B&YG&SC)ErgkbD0>XgVcb^s*fW^<-6hv?}%f7QqUb~wC0JgUlslV=EvJia{XA;%r3(>CT z3sS4W-!7x9z?Q;QQ4~6;DMqZU<)hrI+#M)aaE&F=W1AZTsas*D;|yQKx>4|p+*gS2 z{{Sm;+2&LK0B!_AtBi{m!%xSORYJ}MBa+%3Jf`SUR1fE9pfvywK=8kZU;GYZkrY_P ztAn^|lDXCwPlqS75Ek58@5uTpe04A)70RIz3(-?QW@rH4IgDzG$Y=}e8K$FnB`Skz z$2ioXo6bJ4ePJG;XX^{err|5e>YaPVc^(Fk+wR}#08r5@H)rn>yp6AOj_BeqWg`+L zQO64>H0#}#S7OdbiqU( zm;OSKuIP;@38T;Nv_*FZ}kY7Ibm!i>KU7Hv%&qm9&5PpHLF`sFX-ZZ(R0_Z96h$}7{qPvJ0++Q(c=D0c6OO5Ak^qvm8)^~?#pp?!9~gh^qwI1V}I z(C>(LVPR2zYl5pUz2+ZHI!18g`|*W}%vLB@soM!~C=L+JS%DB$n84*OoIs_T8i_@i zMO{mUAnAqf3mSeQI|acT1O7=;)qFo(XWC!LF-sJ+d#={N1ndb=SQ z-+P6+&|}tI9FE``)G+@5z}N8a{{R>4hQxBq5SAu_*>@f|XoKNX*#{^?ie_)b4>uN! zGO+Gb4!NY{i8h9)h~OMdEl%M$Ifjd)SdE*R)F{Mi;!zd{Zs0PiVX|b+x|)}_Fk7}N zThI2J{voNdT~ZrAhyXu;Aq^`r7Yt#+-SPYE!6Ra-9WzCKHro^UX4gtv>07hY3`78; z<`;Kuf_00m_YNb{70uq8DxtFlN=(4&lvWkU_V51yb^idsP;g-uI=;jcc?>e*A+Y3h z4{A>dh9k`)Sej1Bl$(DFJ_Nv?L@sGufAA`yBOd_U06`0PPJ&x_MVvkvLv=&dhf>yR zJ#i$UjZhLWwJCbk`h1`kyQAGk{$h`0{h50Ki!Pq!BrQ{QXZ@5jiz;iWQ0WTR-Ac$- zbOg#GBFWp>LRgn6yqP^&XQdY3{g--bJ0g{%yZ{Y&Be@G^Gz2@wxj2Y55W{EPai^pu z70sAs3IxOiD~H}TZgYAz>xpduo{QiLF@8&`v@scZ>V1UIm&B{WKbAfJ01#fRO_G#R zcUk6HSdX+$(NyB~7uAW-z*-ydmcAjXwl8)Kjuk;x^di}KM59>BH|!3?wpungH+L(0YQulXDReRsf<@!K&=Bdj(yH5n*~@>){_k-lEz7(BK;zs zs2lL7q)rMexA(a8BAI+jG^$IACX!l=wx!Nke4@X<(mWAX3%~g-uK4cL_uJkFD0pfy z!hu()Q&DF=^6n3D2m!2naLZQr3e~)E^o;t;UDUl@!GSEE<1*z^ZLLHMJiI|X4Ge8* zx~NWU!yZtgUU6{h_G`pO0BsDed-a6q2Zg&Y$L=Bp&lLi;uJ=)vHnfdaD*hH!O)d(@ z`x>Qz(@}u1U7x(a5g50a^`?~9QPQX#)U}AfwyBK1(!3GbJ;%(eD*~|*ue$>R@4ray zwy=*3DozZq%|jNxh=%IW7_dDKOFZMEuP&uA+h`CPYgHWb+sv>)Qp{g2vU!ZrU8j~C zr6hYTBE!E=m=sL7U|tJw`VyFWs-A>0@?eOu&)yag7?Y0EGH)+wOPxE5Pb3c~**QjP zwG*|DxP*6i#KT)SZ{gS05Y~RPskZ2L{{V9hSPLMl0M;*S#G;;P{1@4~RNI>LX^N&JQqs6G(+hgNVd|OwX#2VTExU-3I1>M%IX7 zR4aif;w*r@PL_gJ-T>LWV)T?-L6p~#;`ZK4Dge<$bV_z?^DN^r%M-B|&`J~zai{>+ zSOBM_Nzt00I?|x0^b?0%xI=A$tM(T z)nI)80Pe3a3}vn@aWxeILEUIu=RLe_TC?(V>{lSDdlBS$JjJ+6uc!Y22LM9*4r(oc z;h20CZ6sw?Rh4%O2PO=l(*FBLGTwc>f2m49+2O*UNR<&IjuTJP;twS*ua!qFAy?i6 zWzMpFw0~*4QU{b~28}wT=Dmq|$WN&-wUePYy}tPNgUVNH(HB%)T#1|Eu(Te%V903{ z2-^{)_kopE;12JlVxA>Fq3;z*$*h{Xe2699E12liX~jAqIs;iF)$t3Oz*jS6aktm( zyF8Icf;c?sq?ZmY*NMZ8dSujiG{*AHcQRF4kOeKW$#_j`Zn(cYfyYsMKPr|MxLRew z0Nc!b!FgQFH83vn8^{gUg+YUX77kmt;N(H$DSUtaN;biSYOzP;cXTJpPm`doCXqUp;2 z0DU8oJ=TB8LWzxW6?XPe{{U05zetGgRMQ;$#YT<1lLKLOu$d=SDzWsY60F>%Od`IK z0R@XZ^%Y$S$ukmwx1LE*6dSkVas1=4ism`b9-gxUCGwd~R*xC2{K7yAKz#ZA+_-E! znP#Ic=Zb}TH%A)50#M6#={@V5bKmcv^mgOP?+UY+_w=z?FWGcy%k)ewy#zbg9w02u2AoTra& ze)6D<$Y(xV+w1nLc2*GmuR{sEzsbS$APzBo?N^YZ0j!z`i7vy2tJz)3{$|7gTs#v4SYMXt!mQg~e zgA_F3SR6TP0xCmB#~Q!S^tY6H6=zqiZnvoa0J3|pavAg@rUt;=CR8>(Dx0eWtRGN}!QYdG9*&Dr#fARa&tLI40t z0KrEP-Wp9YPQ|UB7KL70b_k6p2lys~(lpCces;mAxBMHLBE;SgH*eDrX0YfUWNbvF z!gUt^0DwYN*V6F#W0Rr`2e6ao%v$(s8 z(f8py957Z9-KQ1mKMp-rqlF_d-W-TIe98yNVZQv{T7qi^wQKB~-*9XVG!uc-;u_Ku zspKmts>iPw3kn_#+DX7R_LmH-QB^)p?0#j;&8r#;a3A56A(5s2DF$nYs;-ErjbjT> zd6q(KT>WCqnQN$ET6fp90t)q7xFkTm!;bcrLkE~j(2rlFQCvfMF694$p`5pjJ7ALI|V#X5EK4z;!3A4pYTCEO~dKS$Ck;_^L{AS2K; zX1I(9#)eh^vz#*hwG7*4qMFdI2-U-Ao<3z}zitF-4N5Nv!dBc4e^`Y~$wG2`LWxzkUOdL-5R^+*p1GHR-Ci-C z_Z7@mbmF*_1b{(2Ff1IDte55%4;0RLugo}r*p!~qlp;~&=kFKB`HVfV#7T#XUA@$) zD!$}$haXnuIhBmGoiI$4EyI`khJjoS>lF|J+ohGo0pGTMpAlG1;S~w7Dp91#6$@V0 z1X9>~Lp6ZmAdsgQ)MO29>NDsPi<@ir=l=i;Ew3dS_PD%_d-~s^l`m5l&$9f>{4iBo zZ#mx-MIn49AD-Rf^DNYw40sN?;c{V(QVo#H<+mJfJyxMxEt^qm>dJZeM*u)t)}U{1 z#I4o7CVjsUd0&VDmiH9Er?ha{K9HA%om_hlw`b+_=0v zPc0vKMhwc&oDo_q-!K+HxrSEN2+&2Sscs`ow+99D``=Qv(yWuohYtC5IfZeWn8U*7 z%qj!1ga>Voa9e!pd8(FB2d>jTBfkha@YZZ{UaEV8wxwg!$b$rCem0H%Lhju!^a;Guqm6e@a&WUYL%gK9eF zW|p2zr#+7_EDJftWp&Hp!T$hBTLAVIE}$=How+S_1wm_otK6q> z<%UrlCf}b)S{o&3>?;*&GxU1bV;Bx706*)tS&^By@#>1TF=gcDSCLTjx-aX0!MN@n zYFYWYtEFpwK_#^8>Ng}Fj=z5q_(CX96j779 z{{SPrS~YD}HCNoYq6s)+{;`w-F8br_L4gRwFBjOa76pIl2C zIg)vL9C*b+AZ5$b#MWA;m!zk-;##ai1tKgjEfs?z>Qt1&k(746Wrdnn%l`l-=Ol1j z=F(>2kd=Bf1?ej1)*@6CyjQP0PC7J$Hw&M-mUiFx;5m5pL9zB^Xx`Kx5 z#54iZA?p&L8}WpS20_QE@hPCG45KHZ{YtQ^>{Hjnj@alZE}eYL=(nDBdVOLAw*gnn z3^WD$W&&=sbGV$LOwgf7A2R%Q2Ab|uUAx>-h-v#!Tqm!IX@ti-!8EbT%|;3UQo1!6 zlr$S_U*t1>s70(zK<8IbA|Sb}*a0rtxDMo5W+Kr`XzB`JjU331mo(e!EQK{!My8NR zHXHL0G6q=56)M4|^9ZIODC3i439=kziMbFLcrIXo3wK(L@s_Uh7!(}t{7O*W+rMa( zB?nPls}_ykVtgnDlg9qDDqL08NK$I-ISRfr0MKfv?(15vF$FQKj}c(pz?%=e01b&^X60T`x-0jeiD#Pta&mlU z+F}s1HdbYAr77tvZC2DzwwN z0LC{nxcAI0Bac|U-eB2suX5aXEtV&|tJ;)m6{O@ci8U2w79wchiEeK53Bmj}6JD{j zpbqFR>#vRCD=A{di>Dv8h&oWHGZtN$#V??D04yI8@Fn%2KKgjsTlQneFb2ve81 zswN;hA7s_ZDPY+v{{WcaEO?j`YPp83{bPxFkCvfY{tw`6oI-?&t^-ev*4m?#%4NZ# z9UKMy*40)(rBo7lK4JDUx2;|4WH#rd0nuoV2YuX^@~`T z0^U{7k za%e5l1ylr8Isn@QKL|#GkvDPv)u^l5yJJ=^GuXJs(7xXUxHYZ< zQBt_Ou514QS$`v$Vd8Gj+lx>OSHt~FEw5dW(@SH_6HT1;2O{%j>Ws)W(==J&)%y6T z68b;v#xnck8NRa`MIU=L3cpDrz^^vv%nAPh?Kb?%p>{_PNUSBHzg$ADBA6kO7emVE zehAXeFt_W^q%=oE>K~0jL$#r<1B;6FZtt6jin&9HWqO{gU0+D&=vAbeez5ruVm!MV z62&u_SJ|?%=^(#S&oZ_ys__g|qe|D7DyTcJ9zvz@WtJXZ<9}%?{w_Yw72pOZ>5H{@U%^M7~6M)3yd#qwxg~D0--9C zC&Y_&d;Wodx&%ucgq7N^ju4oN$`VAZ;l*I*#XW*UO{)9d`5Ew_*|%osL3e0oUIH1tgBu= zeqqN@Yw1KcY_~cDRtU+@GPwb&DrVtr)Ntoav{C;6W3*UMGC7o^%KSr5me6@I0|g}u z;xeT;G{%vFHGD)U4LnUCSK~4xEkXcg3b}&d1-`S5h#~zURW=<#fkC4H&35>L0W%>_ zQQ!l$qt}?!u!Xt2Ur@x2>AJ;H@c@A|N^k(d@AQmd4vkh#znJ%{a7_m?mL0Fey< z^0vznZrAu!yg~}r0P>h*OMuhyci*(N;p&#`q3avi0|tNWeCys=2i_&v#a89@;|Uj& zdsj0I4l;-5gE84RZGl1Gm=}+%va{Bp0{muHZE=Fu)d6djIJZI-0#ga1+;=jT)FmxQZI8x`K-1{{Wg< zQ#}4imHKnT5KaF8J_szD0^sB!GVpNc)y6p(0%VmjTYMCIO|Bh{3;MC1Viwh(m|KHB zQ`Rt+kRz7h`^C5rqX>O)}_PRRnlZ(5T4K=CoKgB>G*cFUQ3a@eL!ZFA1uk9?QS=3-Do2otf;##Xlf@0w1zr;YQ z`grOkzzP#q;5~kxkSjrg;;)|d&pl0JOZ%ad)bd0t#F~nwpdy0n53FjjqKcz8kBXO6 z=;)K7%MYeyo6nl=>JGM|fp`&%ac`1W^QKyi^fE*Q)U6b4toOKO2lv&iA*Ig?;5{{WLD z2-6Sg9zo`+%hq794<_>bLVUPbcjb9lWnG4#g>Xokp?^DaByN?{g|{ zddvlZ>YOXCB9z-9`t6r!RADxQ@8~nXBOW_^-1%?reJS=PpS~y6{fzy7vu}aCsF4SZEQ}zsP~UcU);;-T`7;5O-i_`$zPaN zah+ia#*kGU$0=1+vAJiMm{OaYz)cHFkJ&EKyP8Em8M=5}5TSy0LhrL63N zps8Vc{UU-^i&xyeKx_-9vi#2O!nywduxP+%yOgBESLuH+lZ*?qc$H{T!?-p?rhTHJ zN`qWA&(bu;1kh!mx*Cb4Eo4$#cA~Ra;xj}Psxol2{QE_*y4?r1a~(C#Z=bx()DxSc zmnlvby5RnJuoU~28G&BNC*a#`XyiX6mJDX75IGcX8)yrmsWr~d#OW2sz}LdL=%A!v|UIhn^3 z1IrnrR^nG{EG^)dLFrJ=sx%spXskL?SyI$LTyq8pA0_#tpMI|sA$F=6nPv)nw9Cj8 zOSo-5X@U*cVHBdhNpP{^OiT2~?Za|H+u3SbzU+X_XXFh&lJ|!lj{T|-T@9s0+Kcsy z`UBsKb>a^x<#-Mv)uNMH3NyQYvo=!F>VstC? zjP%^FO!ZDqJDAZp2L6+G3bi2V(Xoj3Q`!b0ir&mZvQRGbTfg4ooY@p;QN~G_x`9^Gl+PAT?{rp3b0)W=E0@nJQ?bkNrBFe+`Oq zN{lG}Qo{L;!NlB~w(P78J=8`tt;Uq|-ElI+7^NK4`C)-sTdL+CDdDgw%A%Tz?kw8G zI>!>x;yiUQ7uMgUUz4J8x6Y=6Zu*6_t#)~h?Swy5vDou^g0)Jf%fskF*QvxDysGFB zSBggo<0KRyU1-(c7=C5i^2l)uQR=aL&K(WhN|Nkan1aA9FnbVY~|?+$rNcxa-=A3AVedSC^&OF7JO$QvZO`5|unnHj<4@vXb9dq` zwE5#)mq6z-?hRBk&Y?obkk+0Or2)P-3cZxd6z^A=h1jj}?=h`#h1b)#9s^jar6o!L z5Y5rs=jkl24*Hyt-D3~{6W^rJqWp0$nH6?BsC1nZ#5N1MB8&x;=ZMal7RFE8jFQx} zYdk_887~f{5C)5Sg0Zg`=zvfU19Fm;t;;hxg%sm2q~uC-P4#hD6dLgW%BQ{wWGu_` z=@PA?_4Jq;%`_sVD?&ME6){$%3%|r$21ty;g+ZX4Q|}QV$2ArK!_(GSw%pdZHS-#w zU>Wp)G8uzZKd3@TiL6~;(U+D|$}_mZ6t+yEj{|;KP~=L~7HxI|USSPG(9s>|6EPL0 z350g4JuL>M0P$KmFToN{giY}NGXzK^1=hgbJKo|MGKA7A{q&l;6`=rJZ!v-bn^bb^ zHu1v&U_Hu?^O7AjP!oW^-!m=hf#C}(C503WmLcmw4?vaLU-dD@7?h^|X!n_9ST*VX z$EuiVTr&eiY6)H~AEcmFs{J<*0~_<{9T=RboV1~dMI}H5e)k)S_gBF#L8jOH+@P*d zS6cqyED6)5xc&1y-#O>`&p*z2{&9GIC7mC@wZKwQ%{7?sY%PdzK7>f5X58`-e^9=G3Azp;~YQ~8N(EuQ%p@&KS`Pz zaSE;?m73|5Y3nDn8xQA<{{R)`n&vM72hkN)dl4W#$6P(&J6}Yt=hZZ7Oa&f*gcHuV znvy!59PuAnJSGy>Z^NCc-PJD}Vgd&F!6;VudykI{a5+B6s1(h!dxI1u_LHA(H01e` z3k4iaQ&!F84{2^bQU+JiPpm{8l^R<_bDle6gPY*f0D;H1;W~B2Gxc5GDliA@^SAGmcz5xa|!DHCE$5OWnIVN!>rgC!~O>wfMa zRK#|c(CV*WNX769&S}SB%Vx=MxFBh0X+0scwlFAN>mhi{=^nBc_Lq)*V^wUbH4MZaGzeUzMTwX7veFE!3G`PQ9vE$U{djuh@gMX?11YJ($xq zpi5H@2RGMxCKENo6tb`_Tj0K35noBj(cr!f5mjlc)znJGlP`IRBCM>|PexR%rwe|~ z#K0+sNcq3qK`zqU!TXPxq)NeV`j{N9W-F!8eW9JgRya*~bZXaE^^H_eV&#dTTBlir z(UybEFk5D>wJWi7vxL+vG1AT)I#x+QfN+L{=}nh@h@A324Gw^3gMom9`#{ClKEk(mqq8g z{7XQy%$Q%zc#UPt7oq<(4DHn;JN+GJ+z~FP`ZF2akr6U z)|dhc#b9A?IxZ&YE1cdVOyGoRV56$e`QllyGJ=6%^}eC>sXJEDp9X7*gn?yXt$Jh9 zV|cT~(}U8gFNip>qVJiX5M6;$`af9Gt~e~VeP4(Hy*TZP!2^QdNedWbZcMX<4nTiZe$y69G-m$n# zSIhVAOA( zo};*873%%J@(4l=+un93v^kdmFhEVPDZ@Z-J^uhz8Q}^i1)%Ui9Q{zEO!tVW9Jt&7 zF-JAqzw6ooTw=8ktmVU?@7Mb;27;}@=z(Ur&Uk%((XEqg-cqsp+> z)V^yduefAruc{w(l(Nw=euaC=9!8qz&$eQqR7M25Zn%1mE6G>`ZF|hjstQ$Jaq9$C z@19{M3kZnS-F@GfZ9+)Z>35Qqak+P4s^eg0@prt`XUig5szgm?g>G2m7g*zYjLO+| z$ENx|f2itFSCy3+$_xO?uLK1R8Dh4uFdzBUP3CW`9ttZD0-E4shTpo4-Q|v6A<4xs;co2==U)-6 zp-Xl!HeXsb4NbUk4?7z-0^uJv!udU=J>?Ic?Hv4mJKFO?1UI*R46k52r??ylD0f$2FOwLS2iZ{<+!ibnnjul+4<#BQ56;516;@Iy(Dj>X> zJ-{yZ0MqLOX(K11D)nc$x{X z!Rod?lPMF6*Y_5XhW(xr-NJeMNjrh8yk{(a~#1i9^d_pr+#%jKvjhy*P-(qju0J~g6 zy3#`zs+LvZuq%Ar8(4@Zo@3_1df)b4!df?c$9NmlG$^Z_DE=0w8b9p zfPjjnYgW|vgD_Q=-`5%pN_(}!fGcs;FdlVQLKgRzYW`<}{fUtoK+Wu*Po#AdqDmO_ zlrUlo8&$1%`Gh)P$Q+A(ppp$&VS@E!ap8eYt8$(nXjn%VEe<@}^Bekb?yxnA`j|h= zmaS9{ttjeNc_)Geyk%#Z`t_b?>(+UnuUY1Py=Ai9O>$=jKKfxWm5gD)j3SA~fzclR7I%II`6H#z5j!^Oas&b3mMEcf_|w4BPax@2HV< zSc^UZ^?|RO0_%}}&R_C{8c&KX;wM^Y(KS;cIdO$ry z8Die!Px4d;P((KsTL2R=jHkqIQ!^XAB^2~-7;I@f{-X?{@mh^A6ZMznb>)vu%X>-| zo`)|H`wAS?BJj1P^Fy6PO3N)}YN!_RhvrlORx;|tqx{`O$N|0zZ~T>6OEa3@eYYrE zZa-1u#~zwSm98nwvBPbgS1}*8Yxwk@#K1MEg2MyDR~1<}h!v}J+!0s;Fk!wXl2OFm z2Ef+V0}r>$~~&mtSHzM%t=m z%#CSnrgP?NgA7zO<8eLmr%waR>Ea^gSpjTFZO&^UD>GDy71Mb-yS?3sMHCo2SROGM zj$o-xX56*c+7P6Xk>z2YVC44Qg;f}7BJg}R0iXeken>XoJ3?mO(=exd`-y+%Ao@dmh*f<0k@k4mDGPq zO3wXdw5c7d=M%;PVkIq}Dhqxfmh0N_6d7&$#3(`xm)OJsF9D+YAYd*V{2(lY8gB$7 za6)_FtV?H600Eb2cPtmLg~4GrP&@UGxK~OQ&V0pK*bQ^yA6Qk2&)TAeqnbu2JvoNP zGtQ#sp!$1EqS01yA1X0buUYAhEP1v&ocn@6tpz)2lX@mOa z5)#n#61HvsY6J;+0TBO#*H&5Fatl8E1Qwd;;x?gRy}9zGweqIe_=1B2RIF-2;S95=L^_tFjs9h^t^(~hO43h)*J zRCcK|Tn=J5#r03Yn8qwL2x_idQp z*Elxz{^7fSQ!D}UFo(zQnAd}V646n-N~tgFM$v}y;ea;VZMSoQ7+c>TZxPbvTUn48 zKBNk+$P@-Qm@g=AMxYgJfdsg7vEtI(6S{71__O!5mE$KJ)?!|mg~`9e?*j%KO0N(1?*s9I)ThfZ zu}fr`qnfTIJFw~bsDhP`U4al2c`!iaYFX7TtM40OPGB`JG58>Y5?=NQao*w7SY@TD z3xI*2f;JSIm(u3=jnz~aiPEzjOjbFXaVd8ZCTqm7UmwZ1?gh}5mzXEoqV5&zcfZ6p z{Ao3M%oZx1Bb%SMv~-!LsDRhhl?tK0)1Hsb9A6ACKfhULCaz^@``u~lRO|||g>mKB zR9@7&Hnnt_It-h{%AniQcscGk?Xj}R;c?lD*%`&X#Uquq@PD`QDMl4`{KcmDVTKwT z>0*rJ>A~+W4b@7NI3@T4g259Pi-KSwD-#HhRbF$NhBm8^+!B+3_yMn@UOdIxa0gcj z(k1aMQh}la_BHcU2feSMLJF&>W%Lj&7*HsxE!3$fI|5d5%rtV& zn)#%mg>Bsf$GYPnTXOA3uYU+x4ctbzbZhrv@RrH8BRbsxee@N1H%n=cckiRYu z#1sjD`G&(|L`7I&Fya8Lix8&C3JGOh--x84o7^n})@oF0r;R2}8kTzcprAHby&xbhni9AnblxgH z8oCefQ56;0kuO?;iqS64B`_=B+FnM81;w{gfN|?6uz)oxM)JNU;YXY5EK8-~mFgkc z79RP;ycxw6Sg7zQ&2k3jP1zEmZtyFeB!= zS{+9SwYV0UmB}DB5w=hVsF=UCx2#K1Ad8`M(GhB2015vB}Tk^4iT z3emz}U%7zbr(7B9+95%k!WRXCoKd76^8^EmtTRIMS+76@DI!Yq;rfd!k3r>>aD);1F@+$MxRJlN(j;~9mZrju5PVDCN*uK09xk_ ze8n@p3#(CB^pv9tsiw2_jf)JG%sG_;{hK2oT8g)df3mY7y-8n~0Cd>K+Zqq9`7yI1R)W{5GWB z5-p7~df8>Ox><5CHE9jb0z!14gUZdO@tSsjv`aoMOk=sET(>vx*%rM%IHENv7m1sD(1~9<$0d-RI4X}Ke3A4;sWI6 zTXLu$rt$F)D4=h(SV?NwczV;#81KJT~5ce=!YU5Z2_o*E;btfCH!u16Z%_9FV#tB?Hz|TM*@X`h3iWx@`)` z9$=Ce$51H%7kn>$-Nb7B3My{LbPIO1u!GE9EcdhIo1Fr*)*=%^wo@^PIqUP{BHfoz z?H03jD(xpBrX;UU3(*CcEXA5(T62Vfw;igTm2wLp^l{q1Rf36UrNWUd$h=bf`l_%`XO8t({)iM=s|MUx}0zHP^y$A691B>llE^W#9WujH%tgt*cUp zEw{cUWVL$A>R5&Clyz3MxnV-TSxI*JpV$#jK1u%oVi&-umB%p3nla{O-LW?AZKj3O z4rpu42f!1cbP?oh=?%W|5{kwqIrQEj$RGi`U+{(;F;2#MitnUjuw832ZbPYvID>Bh za?J1x4F_xYqw7}%jl#UeI~59_Z`{V^V<(&@z9AoI*g-xc;3cIezTlIN{iBBNGJC#J zwLphf-Cf_9#1u2P0i0rF=A&<@^O%dqmf-7U0sY2z5PU_bO}{bp;8MAcqQa}f<*>Xh zb1r=aIqKl?BbFEah|Sm%i5)65U@8WE zWcJT(sU^CMu|UD!f0;xKLr1JZuEGJve$m({z$2CEBFegzx~qYz`qZII&OKv|W?%Fr ziLqmUOX>}$=2hztGf8ma=`iAURNTQ23FcJCFxbxJ%E0dBb`PHtvc)Q96=jly(97L$ zKCyhVU%eU@Zzq{%R){;RnWsxmI6S~BY{kR|W*RK?VHzpnny;)LSr#`deUP4>CCin1 zDJLVZQ|SC9#&^5^lTGHzU^o5{VkO`;idf;#q|Aj8#!ZbKl=y>Hw1%-RY7DiTa6i{j z1j$kqj9^Q*GRcjnY%n8`Yd*6{9n&M`09qZQk^@HIyNbZ*7OzABAwUB1r#0wHTSR8b z`Iy|U>7aZ<3*ZE%E6XIO4XO+C742^I_4-8x3ti$ZUsJ>tvA2kkO&+X7p_{~7TEwnd zTl9ou7ztr`uD$jD043j?LjdiMy*vCvctYbM@3`A7UK6|0m4powjIvqdN@P4YedFF> z&Uus+Ih*b}Id}A_i~7Wk>b|H6U{hIj>kC9%Kr%HEVJi&$M$f!WQ``koBfR}3kS_v6 zxo6Ix$#z1dzz}E_Be5YaN~cd6#~I2VYBhty6_)Qco=3Bq?o_oaDjbUx(-0AlkQ%?= z5tcNit#CJcxD{om~4Wy zOfu_6DZr<*7#)Sv7u~{eD62OTjf~1@xEh2~*S`_?@s}{jX{}3JlFYyIQ0D>eEwbEG zF%?U-Fg&KpwrbF8r`{Z87`LA>1VO@+(pxonj%NTh2(V~5hJs?Q*`4CmjL8tb6ZL>4 z#Xznhs1lc$G(gS5fr`gf8K79AwSL4EV&h&8L1nL1!-#T9 zVW7Zcx*_qTjVvl(N6fyDnSCEJ`aWjz$5%elX0l81k=g1%vAD5s^(;%na}wxg-jb!U zpfn?w)M`~m9SfG)2V0CF8W%?s-w^5xi+_M=c7dlb$Uo%Zws{z;)x$>zt82jWN?OEy z(YPcJMqnr#OO;`aydGiY-ShlDqL|=pvcRhEFl|xlQzXFU_i>iIaS$V6_CtXE+^A+0 z2k&z~!ENn_iEQm_gi{a02pG~thA@KDGo?tVtaG%8ORXWAfnLHAY)VyAQh7^+({RMN zZI^f(7cmn`gx^40yy6MOFjPpOig-&4tH|-0kp+Ve=CmP}rflN)gEpxf;3ol~uDgWo z89u1|Ed)`G55t(!l*Ps><>EK3c^ItK{$}B@;VWqsP)XxabVJOM;KxV2ts{2daR&+)SvZRp z+7PpOjdH=-@qNq0&>k|Z^u=Rdr|=faA)wJt-r>Z_iE04(7%bi~&Eail5z;cup>4R^ zrhG@8MLc4kpA#cr@-kRo+F2G5C1THuzn@q!Ai5|*#r41LCZo^?V>UoAd@9=f#Oh*& z-SVpvtpescww8y`_=%t@gbbL+s|C7ncB>DjK4R@w5x?K=7s2|Y^aiPnsG=+k1^{&w zzC@-jkPBj$eM&a&JYRUjRpuV~lAEs)RTCaVMt#|cq%F>+CqP1`&9d=w#0O*;QL!DB zEm-8OH*zasrE(X$1Ur_tA|QD*`%W`#1A)GNJR~+cCe?TgVlD!u+Vkh)IX3Z;_k%4p z;ot9=7Gj<_lmT}{0K*q-Q~c^=0wH>%J|;*xHw;r}R~zJR19POv9g?3X`6-6w`7w5z zVQfvIuk9|&x^h59Etq_#Vc(xHDaw(AwO`0YA7Ee+Jmh|6ID;@La(dEKY)=KXd(>CYcTRdk zOX0?K25eR!a1x0M*jh${^Gre76^QCRb;sI8>PgDlE^?|D4t`^i!xiVQY%6mfmo6_H zdqq{c-NS85f#^RwscFNHX*JH7k2+@fMWceCn>IRUCH~r&4{Q4(@r^^B(!Tk%8s_(J z$L^PD7LQ6qbxm28PE3(sC>t!bs`z3;%-LMb zjFxj1g$CG`@Vdk;tC(%qmI$p-E4=d%Xd$|9<=o1e>nr=rKnrQdtR^oPvQc>%E6ON{ zL8iRHUuN*0kk-*aSbz<*xQ;uERB?y`Y@uprQJhYmC7m^WLcQ!h6%D(`kE1A1wm$}&yfCQM1gzrQx*dI7~%$y6^?Z?kZta?DP!W8we+O0^I?!&tLMVF~T`hXY2B zm@?2b@*;gmwt6@J0G{5YT?oH3fS1IIGi=-Yo+ZFfAug0v1qYrFb}>>8*4MxFE)MB+ zj%7P;~XvzbKbR> zKr{u1mHzPv1a0USiQR=-L>6q^%*1_>LGY+(cqbolXhqYwsAq^dILyG4)tO08rAuCA z1@i_DTYSnI35JC8PvFT5l)f3dT33JQq( zp@!JRO~*DuecD>X8-s3r;wjPhCBVwCgKduz!L!7(W~E-RgF&j7sYUR~2nIs?SYvCb zf^c9(w|V0d=*MKK zP~+%@QRJPPj!|^@MJmW%I+XVn`HM(RVkEgfW3W#| z1aiJ&fS~!AXkcZL46tjm%KC+4s7buacwTf@=+3-z^@s(!Z}3Ef6c(rtLy)C2$PyV@Nm;j#PP|KH zFDe3ltp5N|pxZL7z>Iuv(@S&~Ad;tgqLX6G4nVmrMN)T{FZ_)4 zveZsLbMX^!(%C^$(Rc3+5OBv+8EcQ1QkGsmvXUgZNDXVnpCmQ--!1t2$^pAq6dA$FeA(uRQWF^ zii$!kDhGU)728q2J17~SUoezy{{WE)#mHQ|zj>eNN9xbm^`Be)OYTNt1EGJzm~Ipc zS5OR?^!?yMh2JR{HheJ`kW*sY@hKHf%kvf%I|nz=Jk(N6D+Qi|1Xu{m7TOt%=W4 zen-QFxD&!rEG{aRZZY02L6k4d#Id0acLt*(Fo{zSFEb^4#)U)%8gHm0UszqQSguNo zqSFoy^Ohyfi6(UKFm@1_>de3ZF)raPk<5RXml}ALVl3RXs;ojRaJ4N`?I;T~3Fur@ z^DJD1a44#p5E51h;mC@B_ad>gnuQw4^-JYQ)D#>Wg^pni3I%!F4jrX@ru61PgHzy2 z8CPyC)~5;KyP{kLaRyn6YCMowe%!zc4Qq$gV@? z!_i3}LN#r4w6^QA%sGX7z2#jD>g}uc89=2SO7LSxa8C2-5XG>uhj~%5^A1wFU+QFa zSfU`gdcqV6Ys9sfz9hRuxb8FesGvhTw`-G=09& z!mHiPO(ZgmLixwQkF83y925ZqY3ci^cMX8cHQaP18}X%kp=48U>KMKiZYUY-Q-;|! z?9SBWk;B{1@0d#5ktpOE9otTAt`I8u4_*8pXv77jav$o)33ez0@G3GBki}Kg#<`c! zg$%pGsNgq_421!e0PqJ>3B(HHI+|9ovB#N24UNh&YZCsgo0Zws;#thA5(e5SccP9P ziyjl;T_0(K_Iui`4~ax8Wji&nn%0(UkMD6D0cbQ`XXN>e5uyuF(RF_*7NMBdxTwib zR;com3cJz}2L!U%U$@d7+YmHd7Vf3t*X08j3SWq!1Vp+Ut)UU-puPJ?k541SM0sv# z2H}8E&4>fsPn3JlnaG8ffCc9@#vL|Z?RU9R7VgTffQhvF!$>t(s;{;`RIYi;L{v6# zxQ@rHhIkOb@vpp)WPN$|+vJ8mxQE-DGy6-e5|_zVF}aFtrg7tpQtmhp$4q z(~d{NEZ@}t^6w$RkAV)l)XAFJHu@7UUVg`{`u_mx91Of%t35xEl{Tvj_l@$8AL<1} zIN)L=KBX2)BgNz5H7zrTC}><&untSd!6|HIr9<0i-l3(q(NpMEA9(pKRvh9CV8wz3 zU)C1x$C+ohHwIY-K;V>@SY*s))xFB0>&z3Eg21XT<~akZhJ34+Z>tqJ{8@-9&40Ou zey4=lVob$8k&_ zS#d)Nm`%OJI)dDb;!_IdQ06&qGhgF>_-Pyy6B_Xnk!&WV%nw+tQq(SG6sL&rPFbDw zo}ok~9n{z2SBO6hZ>y6GbHFr4RpWlL*Xb~-QWY^U5USZ>iE(*^y*A*Kj}rp@~g^0M%_`rJr zuh9Xv{{TVh4XN!mIy|l*hXHAiQB!LBLh{5ju4jiNH5y9L1M3u%L_4snTDJ=Y61WI- zH}=MjOKGYz*Su!o+nGo-S~#vHevFM?dWdlFX{_Q@ol}0V(ou&CUzeCY9G0cmLM0K1 z7)e6(98|b!rX`Hp^K43kvuiMbl1VGFz>yg*7=2+3ju2tzLZ~fqs+NntmBE2xZWyRH zcENOoDffb@sFi{u0C&g5!YQcJTtdb5z_+GTLm97SAn6vlm7j@l5-@@S3FTdjYV`7rV|C8CKY&_V1k_5$8fN(^jj@Jat%c=2XGfCE41~DDK){t7;${35oK<$ zPVvyQ#n^D}d``!YQnS)hN8&nTT>ew(1x{BiTC4eqd$dj{t@-J$D87n5#!kop@{NSC zdNDeeT~9qmWz1VbmPG-W2MY@IQNB!G)WTe}bSc`Mt2Oo^@zL`UmqUzTy|EZ0MN0)-lKg#1TH{J)0mv<7mMLtYEbMdh5?-& z<|U;)+(Jvh<_lqdVL2JS!-Novam;6;okw-x9H8JM3J?WzvjKL5@Z9xFU?d1K=lG|g z0J{DN!MCsQ2Bns1hAGWgwbZ++ipjSAvd|*3c#LGOX@c9B%938SDi0H>NChBJ z*_e^(;HmgUoz|V{-9Xxh6!++YtWgChbRNa3%{g1 z6e&NI@9P@0?JZ&nfgMlD>#UG(BI1^u*1}c=>y_W*69BrhDX*H3Nk(?>9+6t{c>oIc zsD)wWiGrU5T}>@k2W!C*i=?Ar@BMtrUxqQoeIcMyf~8GRCnyq(s2DniTDvBqa8Xi5 za*d%eUL_6a>MeXH&dj&Mte;FR2yr8USW#}Hra-GP>xlRTG5r$F0Ol%7^mS0J$S70q zDHWyKcN5u^HU9u-5#gn-S(QDho@nKo)MZ)3R9vEw3f{O1!k6sAFSa#8*^^jp0wAE{ zB@Ax^v*3vo@k9GZc9AK~{{S3+=xSvyTL>AVq38S;5-qIJtZqmZDLiqZ1iLrAniWMYYT$#2A0Tm@UMt5Ng{dq}&mx zI17|QV8dA~Et}lJqaHx$Hpb*@v7A2gg(NW*WAvGP`(LPvQ3kuy6w_rlVee2!Lz1@% z1W6zX#lia}*OLIEO$mo5xU5if8K|uCkLs0131aB^tC^rE)xneR}@I@NJ<4FgE23Fa#GYF3uJCe&f%%=+~%Q(2AjitvKf-ewSQ1TEkAQhki zZnbyk(pnvw69q=EVsmiYsIBDN%J-_R%cT2zw~V!rz95AnUuW>IQj#jLFAA1;Z^z(# zYd@KZn%K}&iMiHB{XDfKX_k(6gHHSaF6;~Qg9VVsHegk{U+QC%&-JCtAsfgiuL z_>50RFD7dIByCinA=0cZy2Wu;->3D|iZbYD(_~HCSU3w1RafVYMgVK8MDPF}^?754 z#llNy4KRLV4}0EYkn8T1D8*#zQ8Ue(h{(_L&?)sYbCrksCe`HXDcvQI%sGqm|spX&cESbuTK4JsN^^X4lgUk*{)T5RgoTXyc4`?Z7z#!=>XLkm^ zxsJ@20e&>ffMp@>+ch|q6h5)q`V&V|g3V&QLo526g8ij}{URzll%b4Fj?mJV6`4q; zz=3{O4Oz`aB+&`Xp$`my}^jKm7uyjn(>@0yHKcsNnt9s>FzxgD7ZXh z`u_ltT$0p=$8lzvXt{0x8okH1LK@&3{-$n+FJAJ4s_T8CeCAoB@fm{x%|ZhdrvVQ2 zsdwA!45YcPEi zjNJoj#2FQ)iAzEQ;j0w5skOJefK!4 zlbY}RV1O-)d8tE%YS6wz!{m&_@Ph1P-wb^4D*?fEo}~Z+*`!Tp#8P&uG8q6agDdO{ z1)$Fu{K-))E=I~l2x*B{hG~t)qK?kKRNCb*9loQk;gkq^LkIzg&mu}L6AV(74vW8i z!Ag~%lpH|ST(Oe9Vx7KWkQBYdfR$(*%8(0I`Sj61FO}~%=oQWt3uV1o4>^6&4 z=>GtC#JwFirF(Jq$sSp)Ie&YUZDR)``-oqbT8E*_^XVu9CI?HvZ9OVhSQ?-nhwknh z=^Ni}4``PqJg{71El>#hL~$7$a3TQ&q(-ZjBMPA8jLJ7CKszX$94zc-LM2;(`C0n) z5x*3xx1=?84XyVTfEteJ{{UjKZTC!03uEn>L?LvG(yr6H@hn3dSYKX0bqxx`Z6o40 z<}K}-MxXi8X$Zmo8h-!R}qZCXdBLBBuqkY zdkP>>hcy`;cQT(4fS)xO)np}#aOPeHX!Dp-4r9)=V1t_OBLhSWQ@H3Aq6t%%gE7mQ zsd>NSNyOqLaOI%pWtL zMUh<=6V;Tbqe^h6kBGgj?Q`!GhBTp{L`u5pnNw{406vTc*)Cs zjw;1W`_|%EEtT<@7X%UM#wn=SFPde>1#9YKdBTFza60@!p7ctFM>9Iva+Jwmh!Smi zZ{{M8o}yd@PGAn3s3sm?1~1XZ{{Z9@MGTpK9v*#cg-0TAfWRi!Be5K#FFUR9uDzK% zaLPnfNvj&4RHnyri(WplbH0H4!%d5o;2fV%F;ya2Q+3?6pujl3Z|&_UtS5hLpaR{# z?7|0YX!`PmR4IfK7AnijxI;{}3`Mo8fy7!a8C|)fFZPgOl(a4&h%VX=VPv&7)+gre zF~g2Wh?M~I#5XLsdH0BDTHr-4`Jr80%Pe|N_!IsFsmgmsb|uUOz;qCMC^W4(ZfVb1 z;xsU-2v}KFKe+VuJox%nr z2Y|On(fErvnlgxuc*5Q;Y!yUGQiIKbrzKFJv6>5UZDL}C)Ow+J3x)ZMu$)?lR~oCo z2XITY5gl$=6poF{a6zrhh?LX0a>ZT5Uf~06p#&PLQ;}zZf|6<}{bpvR+;o2?)Hku$ zv{_N|_D#cV@M4rF1&+s$--xOK7Ody4xyHJc0aJyaKyUXEYNh3|?V$HW<8M{9l#mNTk5eAI0)O# zUQ(DI5r&sO8jF3D;R#CH33_$8TsEl^1A%)%s<*?z3$Sq?Ko4l}k%L@80>VD>^vgPr z{{Y4}{{WMR{%S0#61#B_NAW>?!E`xhg8C&I6^u;M^-C2Oj$YFR&AW!>P*uJlrPBgw zy+QT;kuII$Q^6B`?$~Zw6R0a9_#?HL`)GoZ?=T$$5|3~2;1{$woc{pfrzHrjfkTXb z!~(z^yJnxx*fzeh##wFb^6eajDx-s7k8#j4xHWw74J$%mSUfjN=Cc$RW8vW<_XDU$ z9b)C#f+fF|bniYL#TNY~wU`D{>4I~_+LTw#?hCR}xd6g<8KMDqb>WOMtqzE1F=gwx zSf#Vc2e6Y!R98?+TwExDqXOx4L=6Er7E7#MUCIN@YN6b#VO8c}uzIlyDf>VWH0A0U ze#?Puq$SFXIgMpF@h>!Vd_)!z)w$+)V3Ivxx)hED&r6#vuyEw@ESlwuHSP6x#1k$q zN7;LGD%hO9drJ?P{aauUch@r_F&wTxD5ct1mUOE$_u15HEW2G(Ucd8D1ev5^tj-n7 z=^vP-H4n*{(r2@*L|YSRdJ3{xxJWZyO8qes@qYM>evRBcR<`xOYn0#(3);i8HS)Ae zlqbgGEtdfxl`hT1Gy%5cJXO zf&1$Yu+c(Y6-SqxB>{!&3!}KojWdHn*3a@~_XSNIH+q?XJ2-fT*JDs`T(=VGD#7Bp zyQ=X33l8oLuG*C%P)`)ryyNW=CD^m%dLq$|HGxzFXd%_Y7e+*_D_5?!uuHP+U>wW> z-QS%c`554E@L#hAor6KXK-%)&T*@HXgwt_Ct|9_k<`*zT7S%zj5kBd)q2^Q-;F*bc zyNKzO>6Gb&KlW64W(AEjh^f4&|jxs+QJ@eurFFM9N zV*UV)nmvExPn({%mWY%o&6YR{T^Y<^cuwGiX=-y~O3@0nR<2ooD059m6aW;%b`tGM zuH#g?*lsyfqbq*&SDjm9ujI@89qcXi;`T#V{rR02+VzjsF1U z+}r;EE;pPR%ne)H`Lpm$Pr`Q;OuUCIbwiDMLD^`PQ(>@-O2$&UyYTX>x&;M0_j#d;H${!KWcBW?`G5r==lpJ}KZ zeupo_qXS#FZ~oh(6?Hl@S$)xv6Nf)2VaBcSZ=3jdor~6MIPxe`pf~wegsO`UypA zUSRGNcPeWRBQ`J)Ky84cW}vJBo;iZrRqwJH8~2MovYm~3kx^riAn0u54G~Zm*UWPD zQ59bY5QGzZgOK311{OQ~%L0IG{{WC-8tsUo24Q5nAHu(G1TQ-Ao0KpPWoR`kVFU}x zDQp!G%WP;d);9`7m|_GiZjgSMWusK*;q4wtYZlCE5lI@9*FTwj5WMpZTGogxs}=A; zirDQAKkON3*Jp^njyG2Jz2oV|BU?XUQm-3yIr>64J_$iWu#mV8@eP!LhuHAMoG|fH z;Bp&hTz0L{RYh_*8dXwqyUWaDNx;+moWhWWz}~Rh<8t{!3?Zgng8W|bEP+BC3KvT+ z&@*#5FVk;ke4t5SzU2xc5ir-M)*Chp+g(PH10e&j;-;l_>b^s{m>oxZl+8j6UaP7>H$rS!E=F20OBk}Du^D-AGDU$XEYcgZb9XVDr|v*{{V;pEh>cZp`~aL>}_m-kBl0Mxbr0BGPLN1L6WR7YPZ!;zCOO#Yopq-w+^>{p zA5{HJ2T}h3a$Xq@H6WuW#C=tguDO$6Dd|3D=H9Tq9j+>f%wmBGpxqV*z#80NaA~F`o5!9-;FS8VVVAWoR zhm(IGhNugJF8JW~J>rs;&9=T@)+DN5Mql5FM+d96DLYrYfdQP>rp6 zCo;5LHp?HE5^`7)7OZ(Ofn&-pvwk%g1}Yd+*Z9$U8=c`-MCW{n4zO6~{&DGZ6HaB! zU*nJe04AULHT>3M&E}y9bmAp7)Xl`Su~SEy0v!RtIo`6?vTimzbA!@SzXi(H!LB%f zFB~P99o0uQ=#InAW1vlxk)d77?Oe=D&dmZSmlg!D6Clu>7*ZD20Qn;vt|OZmIZ#qYNN@$Y3oo8f**SQpI}M zicNFF36E1)iyg~`10oYhyT2dL>`MFWu`wy{yNYWqPI3@qUv@-~YpyVTaNn@l!$+0hU{ z=PJxnsiK&Cy7JhNx|p&FORcaq`d>2O8`-t{b8sLo5u|8jzoaWuk;)XiJs(L+0O(~c zExfs!j=D$KuJ3HJ04@#Xw#^>h%l00F4NF!F!K>~xLhZ{d$xNnCX>;TSwe!>?L-Zo&?H>x(ItLhzl^C=< zn!ga(&M$d~FC6~>OnyrZi~5Gjjo7I&0KL&4#Px~cUX11tPSb=7qm|L+nW2CIHt4MMJp?Zw#d<+57#+AWeqoaF%J@ zI5l`9^l6bhScodoUVE?1wHPJ15NASTs%U)&P+cXak=jxSR~~}bC99wV-dR$%BW^ze z{h|s2FG!oDdcc7+kJ2wmcppeOFCtxOFVc9CyGYdn#TOSiTz%GjSI@6mLKU03)@1-o(V2nh=6%5s=Ay1=0ac*xR}9%u!{M1g9et&P zd>?p+UF95kGY8B;cn8eAy$gpUcA>J|R4D4j5rS}IZ1Hl+DQ}iyJk z$gfkxZL;71r7O4=n)EB)Q-L$n36w8A5lsLUqf&rdr0|F94F?v{L#%TQ2;_Xf@(nOx z+1wxnuwpVlMq26DhykFnTt#$|of403=0Yiimdj-=IxaY0#9+h_E~&be0803D)JWFS zz;6|0N)Y6`C+K}Ug+Z^OaoWs}34e*1b$&(4O}zn(gm@9xh$SzNz|?5F4ehG^xP3jp2GYUaAKDOHXz@)Aa8cLCmy zn2SeDGG27+Om*A$Ei_q*btn@RM8g&oWfZvhpC$v9wz&|RIQ)^nh@&zT=$S_lCovK1 zStRA2jli=dY!`Gy>}ahlzbm0wJz$LCl{E?PN$SV_jTeO9%N#h3_xn?l0@tLi#b;sZ7j8@DS_na2&#X(*MI4_nS{Qg@ zY+gxPKn8mk)P5yQNi}N1Bkm*QWq~~q)zX@zV(Wx)bsT24l-bCdP2zRMHW=BvdzKEx zI#;xFP4n-c>hsG|vY*==#A>)YLg*E&^YzRYplk!_rv8xv(aVOoymya@cM20Q3|oBW z9R)>zzLvn_pw=UrdHVMc^=cJ>qlTxauht&%Kxfim2G!M(&E{3u*_F7`seLe9^)+AUlIaGjK5+WW;OUa9kZ^mdJ=V+VDHb8w0)!Uqzd;C{qnj^JnN??hDj}1Oc;o0IL4XfODy7whL{33byMst^>z6%#u z4~pc4o6SJ9sT3VPiG`R?)-5RI4A{9DYR44W90APK($`j2weKnjM9|Jgs@rv+VtLIq ze2?NMzl3q$#!#Y?1{&;aeZ+>?powdmU)^r1)B=PZ&M2j7>;NrG7rDiM2r{lRqeolc zi1xNhC}BJ$Yl&eJt1RodNC}+ba9=f%dl(-65YKsdm^=8wSbh=mr=&;xLHF>M{{V?z zeiFR=C3SxZ>V{nWCF=6_g6CnfXMZ|vcwdt>c-eCGW!uv-rC63MUcq8hI2w3|oKaZB zSXLb-{{U(_tX)UW_luS7ziwkn;_%B9ooWf^W53@UgtJ|^Key=`r1T{p5IhQ4U8gb` z*~M_J1Kr#=RVnJMiAh{Sk-=z?7B$a_E?|X;x=znaW+) zW(kA(xBv}ZAKXACuy-9$tHCR)g>DKQS-xjJ@{1LLap@9=SVvUl%+#*0r1-e>nBuyC z)I*u?Du-T!9eK~l}##hky9sjZ-1*!^RWt;!B&2M})+ zYz6B*j0r&2fv-p%jC#xU{^e|6MvLLo76KOEw~3IvSMG=daAy1V#$u`)DP8sA5Vh7o z>9|_~c-%EIJ9~vTgn5l=k?}gxM5-*SAYf`-SIo{efp1ZvfPmD;%m64F#{7AhfmaO{ z%H7m592{%+qF>Wh_t(TE6Ip9dHv!>!G839TCVZHP2fORU2!R)?6I4_>bFBix&$$6t zZuC`QQrM{>LnYTctK^8R3xfWAAhra&8uDlMrRAY@$kKYVa)4y#D~mq&fhAXf|!b zeYW!n)Kct=PnO0-!5&J88x3lqS7$(H*VF9?qMFm(rI3?7i|RiTxgZ6QI6?Ol4I>vA zU15}2m%c>9&59+vWoiZw8Nik&ki@ULz!%YES*F{jmZf1?T~%p*j>r58tUxMDX}o<1 z0R^<#a;0nil@lqP0o^{EAALm`wV{nNbTXwfCgKt@+xJde10tY-SM16 z6b8x^_Eio~Ji7BSx^~1o*GL(=ZFGu;C18InmerM2m{oJ<75)IJjDh5|dC6Wshca18 zyZllik9&Zb_n8v0mHz--S%%dxK0tHEB})%_=G#$?`$}R*KdSn#QsI^vig(jM3UA5B zmza)fs7I3yCjh0JuD#_FGCS`YZw@FKzfUrRnHOqQSJdrcqnb*?(-PH!*sWNq6s631 z*3%wTA6bYUTtjadoH;ftQuq)`%32+?zd~UYX>FCBHS0Q65js$4Zfeo9DHwzh-N+{l z;u^kVIjbHBRZZX(@G#Qg=9@l9#v{mH0;#Sx3EU_({&MREf23vk zB^mm&Kje=2j@GA+nspQ@REFw!i%XG=QoXPGn$%6vv3HQf2IZ#WF@cz*OL$Ob_vgmF zqndXSJUf*_6-~^AaKduHQdJv>DOn%?008g*0JA9LFGg+Oybo9!FJDhH zhztQNAh6(K^s8PWb6d}>McKH9!wQFEiLxmw<%_wPb(7L$d4mJAU#xYbhGi`3u3le+ z;yA=OS5+woP`BD?wh?Q;SdtrY!S4)#FH1K2^DYn-CXe1_w1bPtYY-~z zI{Wo4duAm?YQ@AuLA%2_%wBP+c|ylkC~TfCCJwPfc;YEXcLi9CqT_kKn0rEDLKOA9 zN0C8OM%3EM^(9A>$KF*rn!BzKvkZLH#*jGmAh~|=%@pSEoA!sWVvW|(3*2%zSQ!nD zy`n9ig@`pt7d2HK>c8Yl6J8A!ROh?RewlbM0J`-3<}up0Ry;+wW2C544^|FW8qBt8 zUzqI$d56V!5u=)q)zjandEYY<3qeyWFFk~O+Ms!$#KOd?`D&O3SCBV$*z*mI2`zjL_CCb~BS zl${2uIK{74!I*c;G$4i1)S`x7r9eP07ef45E%HbU=AZ}#DnKQv!4f;M+|Q!vR9BAJ zRtU3|txazqvOVQsyo~$Dd=X{OXO2Ecvy9v~w9J(5u-Qw*3+owxEnPIx?urKhp^N<- zOMnM`UPvxt`+g;5fSK%nQTUgDJf*fAceF)-Yntn7DH;qK(9*fm%ZWf!91D@L8c_7% zhKFc1c3nJpOA(LQRbjP{VC27vcL0zki|kc)O2Fiyg9mwL$B`Sd6#zkC-5mnmZ=|?1 z2~vku={4=H7(l!$#CLEg(wP_T`$cwC1(dw?Gt^M`)@Nejh$x^cQq3CUCxy!)LdtV6 zI45MwM6s+zrxEJR?$%%PS3Jc#R^0Jd7~JJg#7H$QP^0 zepyP_vHSpqQ_zI>CieqXcF8d+Rs-B5tfqVPLgPtwSIxb$&_ZT!h$s+6Y&-yg!&`tF z&|4l-#v*}y68(isdxQ){C%cM4;bSNkY-dqKvQ$Oabqu717z))li{du!*DiN3HMz+4 zR7LqAhvbU?0Ho$VNyF~P>^DD4JibVNj4l4);7@WlQbjUXRNq*ih|=kR*K)l%)2mcxJG9dQRTfyJ`et*WY3@e zBnTlHbV>m>iAv~l`gE}>U;h9OL+$G;Z9wIe3KSSTz}r?by+v39mQb>LV_K`ItXgu> z2OdJADtS{ZJVReAirs1~2K5Dx0riMZk!7RHlf*Vw`JQ^5&66EX<}ILV9O83UV1GQn zkphB+bHpSLw_oh1pW*{Wpn0z{)DBgyDk>0Nh}n8#0jjK6SJDZ8AcmB!IGWxYsL$q%EoF`B z1Bb~h`X=7PGU80%@s+`|$M4z<=q5;XC?YP(^W|Zf!h#MjZnYNfiz^lX08jz8rN%}6 zY9Ih*SLFWTxZqc@{{UbER8%xP{bd`CZ7cqtNJ(K8S3Z!*p|R)59MZhZEv|IpRs(05 zUs7e34*@JYD{fNKlea7sEsmoFBW7!c^#!)|F>qG262+@;xB#<&F#rOzm!%&X@JCPz z3Mvd-0GotoTlg4u_h985+%2Zd!Wg0AY(|n|ikB4;ks4Zv#0%psVhZQnxPI3wY8)g; zlR~9EG3xOu)Uz~b?g)(Y4CNL0`%2tPM+^GGNQ<#lPNXqJLns)%Ma^@fQPX zRiI5mXFki+5m$7AD?_tomuHtW4g*_O$v|1lT8KNP8Cn!&Zo+Ni>Kh|K+Gs*Hv8Ao+ zWyQQQ3rB+o8A@g%2b#W40)e*(I@m?g))2PbcO!~(WtI;CsYIoK`7E(S7N9$j=61Y| z0%FcY5oBb5P|YVJPr@LG8RB%HhEn|qbQWvC3Y$D<6EO#gmX;H=x;E=0Ra@tVHJCy+ ztDqu+?5uNrLAaFH1a~uqh8C;Q!{^LqGZeaAThVFrExWTNJ3IPw8>Oivw&z)KmaXe(qr z=V%)^AMRQdM|=5%S=+4cGF%x3Ibp%SVXCfw!#yy_%VPn0CE zVU>QcMN|=SNVEQ-G$vmb2nzB)F$CcAD+aq<9!jh*`XB(?YH-5?zTzGf{^u6&FU(i z3W1uKX$sr^d4Dz~MPjQ{--u0kMvv?DnpI|4E|l<}hBPW@+S%0pZ7T)Wd7p<~v7eeF&Mf3-^FhpvB~dIZm8)ItHr0$;DMzPT;h0e-h|M z9WZblB)hA(P_CA(jA#~8Y{$Pagbh2YPYEn#Roq|=kxf&_JR>v&Ex2|BY2v2*Qv60k zYgRoEv{ZuC1$Mv8E8zw_#lQ?FPQLN!$pJK%$9cbrZVGzOez0N(+vXr%4TmHBMHL}f zf~7%`b9}PcSRuY4V6@L3WgG?V+yE+H5eut;>Qft6n}R^66%!iXGjJ_1rl6wAbJVK| zTk|t9oW06ZY#Rh5W=SDHqmBK?|LbhPl@;kygFhOD%+vkpu~ zEm-&_L>;%$d5G2>4@^aDUdCf852UYDtB*j$tT!QbQp4Nob1lZWB?>_T@;st5sP$=h z;wZ7Bm`hmjz3cX+SGUID2uOKfzlGh<+ z=fW_REZ|4i96W0MqQpSYk899C1?b_t9In=X>D zUBRrV1zNVdBa_GqwJP8w1+G3v7G7(xLT5n^o)eSL=Mdo3cPr@|+*1Vw``B_~{7g-Yq#BnLbjrW#V)F_qfV5iVjJvE9(i;`IcS%(5FseX&XjGfg54VuO5);A1o5QOCT!1ob$La0|g1cUSZaQyTbh- zm83Y8!ct94-H4aSzGyv4oE7S#=W3Wbq zvh3g7{K}hF{vH1SBp|ngae}Zj$qh8z89+yW{MP1t{{RuE6A17B068;g`)B-*WEwz9 zG`ms4XN}iSlm7rkOL001IGbyyGM5eD^_C(irJ`k79Fc>}Yz+lPZ&k& zkFKZYI~?hb^t-}X9vMLRl7_rm8Ir4ad4jH)C9Dl9SQ>Qy01oBD{{SG3R)!s)*#?aj zcP!Xh-=V}R+P8iB&9qlJuXDr!F2vw)z9C-RuBTY;Pyh$t>l%eue&eAz+H)2$!DuzH zeIqEf=+h`mtkK_zWK#PrLPWmc75breYXONvqk^$l=(bpwE?!XT@e;@`Y^ zPQ;=6<~LIODDrXU0Ia7kF~c;!G{Ud}i|78!@(F0VdHWIB;Np%S~~i)gh6S??qHZy*(eyyoPk7YA6R#m{O_YI;&y+r+>m5V=JmcgRdgX$Q~%N*@?BLRRci*ql;qv~06JC^u0oi{gvC zuzcS42-+f$wz4!Etu(z{qZ>C&QCNDT0(DD^D+_xWD|M{|Hqhz5EE@R}>zTO&#}Ce| z{353H0@~a(Rr*KR51PWE52UI>g<5o8i0)v50{Xny=j#QXa9UkhGv{gPEC(y@R^17v zi$l7A=vE7ZgDWd=Ic1WUI=|0RfM;fk1ad;{VQ*hC(`ppdOK2R*^P9U>j}hpp^vOFbxsp; zQS&epa-u33ZO||&znG{HZ|eh_sH3>yZWe+`oa@kxL^V>z?6td_6H3>*WA@ijwD9gY zV&X+sJQ9kY%45S)oljQ1c|py$27E`!7QgYNpv5g^iNwZB+mV1`Af)5}0Gg&2(-uAMW7{x zt|NRF4!-6(eUi7~^_N}nmRLOIUew^1Mdl3P;u}|tF>fSJxHBjl+%h*9J!OoSrY4f8 z9BVP>^1?8~)=;&uW;kB<#8F(p&xqI7a{mCycTvh;`>%aVJDWWtcs3@75K07h4nORq zhPyy5kBvcQ8+NPH={{rkVp`(l91pw;U6KkV&`YH~*oX=9LWQ$-HtdWS3oZRw>e~jl6k?*k z3Cw7jDl}ix;tiq)Xe5f_+Tw9SI7seK%YS)%Q>qn{s-`hygTEhpA+(gZ8@PWN5QV;0wjae8AZO$NXIb^)YHUZuu{e-YC z5WO~J%{vgbxE)_W-dCG%70@mA1r?g{DG^eMfq}biI0n4JHVl_^yz^)G081FXnpS8p zJ~wps#-$2GkeiNEdu8dv=k4Q9clCznVR-h`tm$6^=JW20;}86 zeL;v#Am@ehZtDy!PSDpf509vsirUr?b7HLubKG|kWS}mJO1v#zeA_5UxB*KFpycrj(Thy2 zwP1T1jsmxjN77Y!e_T!X87}k0{W1DW4spl)Jz*nT+MJE%Dp;=O$Gpu z4d=rjNOdb7paxcmAqQ~paT*z{MkL8|!5W3pnav{B<;ta<`%3KW?qh&IOz|9mRIylm zN7{qO^+VJElmS2nh=7c;dg2t|{Bmf*Nv((HAWde_KifksGL>3gX4w;oiJsR#X zP`%rCF2v~QxMVuK%I5{fq5#@Mj#Euv>&(~T&N-VTb;P=hr;*d?F4sj(;x>$q$+2gs z%Y6+xo+!_!?nhP}$Cp!dPliyuA~H=s=5p#9Dj^3h-(sLkHEEGrXBksEmWS+TCJd z+so@JeE$Fts$HzuA&4rEc3d68Qz4hkE`3V|Hn`*6L0DbcaJ(CeT-;y=D(YFzm^ITs zq(v(?1~}6jZEj{3bN>LG*Q^%2^zd>0{{S|v6dV4Ms0IQXmf>EqtwM{-29j3XLS-lm zflzCY@>c~Th9=`vn=HNc08uUEnMw@04KoB(tp5P9x(qXn2Tgy}HaOvja7Puy2C!z} zi{GrwAb25_0m_$%Q@Vp+%XAxx>@VF%@4WL<-0s|AqmbGCLUv=x_Jz7RO3x6S<4hI> z$1?K9@Du>nvl~`W>5P<{1#&wwQXQY*3 z_(j4jw{c?iym~@Lpv80PmgTq9s8z#gZA`aN*?N^_+%XD^VYj9=RfR=O%VA+KxA+(% zg^Gg(HBCJ4xT2QRNtX}lZS9$ATn10_0HTiyHY21pn0m>0=iuRpI9YbW=ybH3(0vP zWts*RwQ0A%5{M8KGPcsx26(K-P_%$88y5Cf^0sq;Nb7>A_6R=Hm2ebo1AOTE_QcSz z4Aq-dTeaq{jAC7O^dxKptAg-5vnx_i!MkiRjnU~D+7;Zp9Gk)8?^4?hsDn-VF1*9F zhm~D(z6$>UVrt+{Rj(O0pQLw11re?ZKyO%W$99s-C^iX;Rzx>7j3VD7r{{$0EXJz- z5SRof5ekw9R6S6u8-IcaN%Cf>D9wzW6OtdHRzyn18ABRtlxKbB$fW$cR$nzI!Y zDkhGYb*1t#70!b=HyG{mk^O_#$jmJnTc{NT3{u}virc$-g~DSQ$uTM#=H_0$5Kbot zaDIK5F?3r-serWcEMmh-yt1H{44gw|6sy(2;3_GCo<5T#5ozHrVjwwH>g8Yz+1bU* zse^thW=>oz3g8toRjf<>)Y#J)Eg{eJTVqWl%_EK=yX&-{t(4AiB9n6$d~ zfF+8Tw;JXCmfJ&${u{oxyodvZrGkQK9e_kDmSvO+bR@9 z+j_ZQ@-*>fJfW!O#_tw8T>N0!pi= z3CDa&R$k)dAX+!bm;KKF0E;$29lVY980h{D$M%!I3_6-@ z?1p{5A_Wxvrh67p2Y8!J{l=O$K4V?GV~NSjHu*5h$-$U(!LZ(s;3>Sa{9`j0yHGan zS8g_Ao9U=-UJ(?PY-0vdXvPlZ?MN3CcD){EK$*l6tN}wWk1;6Rv52^D_&5BBT24of zZ|yK~jz5kfcuF!plHdBvzJ3XqrTVcpm@>6*EGvfij+Gf4kg<#bvCsGIE2f9lVrAR2 zrWI+cUSM29=u4tZY#SauVN?NP&dtHLl@4viy=meX{4`r`Wie3x49uW-6%LLe=-~dN zypP!*dq{=AvH=Z>H)K`{2Z!|#&{g9V6e5FzMN2Tl&l1q&bjwAJnS|9)7d06PRM|-N z017gsj2#|KU<#!s&ZU&N7hdLqx>$33d^if77+_hd%8)(fI;{xIuN`m9#kORfmwm`m% zY#`g3M%X>2xnv3ppBtzY7Z@wG)@v^z_L#}^i=k>mSi{7)DwMz+8?WABSHKpwbgKTG z>QtFrv?jcBz8H?0>mgOFvjrhz8^TPj5CYn^)q^OlHM1{phHAqA@KJ5Jimb`0iqS;| zbjE`OaDxX^6^OzaHKX1b5?odS6=HRXllIjbc+9DRraL_$-$;*I;5JeADl>%jN7`F= zdj9~Z(yH~J9@Bq2tiRN|4sy5pg2fAewhRwA*(?iyDV0hF&n4aYkE(^VOU=2}2i9p- zEu(n!jy6_jIJ`p!hmA?hwuzUl%LW`~iv zWb(br`oRMXzzQw1IIJ?FQH%+#UG>Crf^%)x3ktyTs+SNK=kEnlUjd4S;+W*q=2-4! z7>Y*7Q2;1>mr-GXg>zEVAFLcl(c+~d7ZsKxE*SaTCG1w^&8J0-W#4kmA9x42EWem& zA4iCsQ^9~6J~K~;xs-2(&}lIq`kZeBK^6k8-%~CFGS<2j9P+=1=(pJ2qtO^|hT}(X z46Ti}1vc7+_N4d4Vrs09s;|?w7#Fx+z6DKZDa;{rGzHMn)2U+(5crFDfC4*ylQT}a zZh(u3?G#m!&aLssszOG>4deTk;IfY=a}-m4U>`|U;p)U&BsGO!Ft7ynzY>E5t=Il6 zvjJ!U<^2dpVB{Sna}K4BCQ7Iu{%n~RBS^)r5?>VhzGBW8l^#>~OH^vJdxbWwdQ2tf zVIQ;;Y@Atsl{Q6;i*MzLM5BcP_WlSJEzh)nT=n1>OT~-66X=ThGx)G>cQgR3W%S0yfDF* zU4X=nV>WAI0jOJ2;O&Jweujo^ZMq2M5mwc9tP5}r9mNpP@^c7U6Kc>B{*y_?(7s5i zqmRC!!kaM`a0RBbvaN(vt)^Vn(SOsgo z)3C^_xFx%aA5zu+8{`-!x4H2apj)%-hUA(y#U^=nA1v z_dc9PD=Kdk``FAJS=yo-6Gza4nRN(j~MtO8%jR9q#YxG-0p# zxMXeeM5lw{AKNNqLuK&;=>@6GQK;)T`o(OE6N#r@uMvzk?}%){OvlF9Fu@-fgewMB z!3L-?{=^e(Rv;J)aN@!dC@wMwgyJfq7_qgyp#%t`%Rr*hjE=gj1jw4USR=Z!^R*a?W>d*ML7?=z1iK{#Bn#4HY4?= z><3d8Ux?t1Btf=9t8-o@qt+8vux-^9;w#3{s=XO~r&TBbaV?D=d6-b1(#$~}Kw9Ng zWmQ*|VMaTi&k$h+`XPERFp(|I%l@jhxLUL}D7AITh{hnCy9|no;8V*g5PL%z!Y59~ zOzvlBfv#^E!Q%6aw7A%cm#d|5S@8v&V*Dbnv=Ko^Tpf`^FVhI!L87acDpPqqSx#3_ zRS|A!cLEFu1_EBgk_`|`cEXxyPH6|vTdfmaAa*$t}NlcUu@qS_D6p4Rpf=*qOsOW)Q^(*VdmB$i= zDp~~Uxa|p^25yC5Sg-W(uoZ>7|2eT_mL5foAfYWY>~ z4mFl_rO`d(gsOCio0KL*qQ3tCkC?2lC8E??v@5i%S0p;|00aaqLx#;SW4O#7394eV zLjdLAN-a(uajMR1rw~1g7J@Z`)!kQthlUVDP*F}-4o^BU3Ohc^g^! zOXD)QSYXwuds`Tt8sjxDX$=M_$hTD2);&sg33o z9X8_GU|(-uqD_>_Lgn5JK4Jo4B`dMRZ~;gQuQJxaPB~zziWT!SG~2i}QFgch=-5)~ zCN7=4rGoa?oI18RBUYS_f8;jn3v*|@Tf!>0^>OPQmeIjhZcz)ca+xTYb%v*|2{EeD8MZw1N>&KS(=7Bh%k$U9du3hj$-vmU6;QR~D-&j+kIVToJa z?kl%{#m%!Rq&F66{{Xa(8lEAUaFUMCcs|G88pG`!>-U~t1OVM3a1YG2b{8gNTlE7H zyAT`3Vpx|~e^CJqYNTx}^~3EbZJPk4boq{EA9&PbINW3fFHv?GzSD@!*N~2B!=?mx z8I&+lgAd(du$41w0SY}Iq(<O?rLiA%*Fv*~&6rCRzyb)FKeYi>U1va74&X#Ce2vsSSnQ zvdAfS0D`Jl1@9c5o%aIGkd`N8*kp`Azxy5fk-5q){{TqBBJGRdzqm|*XaQ=j06BuC zP{&qgjZ=f7fE!CtuyW6cjSr+PcM#I=4RFUTL2$!9@aGSRY*SYjQ90@Y`Sz3sA6a}u z(1C)#$y(Zijr&U4*A$g7Sr>E=g*CM+2ru?vXa<2tI=-^wS=I?lI-t@vZo;{^PfOzw zo3g@%7K=QpU{So1*=25)UDF&qUmkCGVBLwsNHf+-e8v<|XQw9e6@EsD2&FttjRI!V zbDn8OCV*cx9V37MxrMq5a<;+LPFcLt*ej7i)*ZN@*G2nQu0#qcsK(pGH@ zJm3HVfDHk}B0Oi5%70(%x+%Pw1grPA_Y-a&xP-CBgTW14NI<8MMMr$XA!7DfVa&U2 zyb}tyikN~j)U$LA%aE4avR&r!3~o`OtBxSG+vs3@A*U1o+w_!@TPw(gcTt*5vot<< z{^NnzY|qvJxi^br@fxvXSp(?+L||5%GyD2BNEbVjf?-r`Mdt7RN;tT>nnX3r-^AHf z0<^4d4IG-?LP2cFbAK6Ll`&M;)*$1ooxmK0>Qkw8n$FmO7~@x{?(3_`6d`z^;#?Va zs_)hxTjh$(1%t=8%nO(~h+MMjQRaz#Wahp}LKIbJ1NuWVHMcADh2xtX`HoSI@-aQD zL56Kh3>#0noLp2A!_F+|MvrPEMQ_SCw~(7C`Z+!|hX z^p`x%O3w&%4}%4VHz^8g4w83drjK7#bQq`q00w7b;rv>E@ZtXejW8}*|=NzSc)fBglW{qAhEKw^!q@RFBH_a8M7%B!$4JCjCl<4X&S17 zSj<#aK$WqEfq6G~y?@z$5bc={8UBB8js9$_d|wY&=et?@C4s8x)Zy5GtX%_okt|Uz zmja3!gO(9tjow8oL58ud*>N>-k7QTWXvj1-ct;z35&{!2a976+B13fW*H%92zQZDc zt-^M$J4wtA5#`SjT@ss_LzPaY`7u=7#M9|Esu;2ax!4Ns02*Dt)L2LlGbt8VLgVdl z%`h~6knv#?@Dj4EBM0mIg&D23UwL|Bu4=>XTl9cPTJ#FZT;qvV#vb(GDB!CKIEh87 zE11!x9F=Dt)iFpkGSEuYw@X?&%D(VnU?}Be3Lv3EIakY0;<|)&#c>4MJ}R-hPSOj<`CK% zi`9ZBT<|d6|Wa9tef!!qxfUkHQ|~XdU=I8&!XeP+>Jx~`b&n}{Ppd` zcZLC?%j|+48f8IOh%R(sz$zfloTsagZ!n#e^&)N`NNN_YB5P1$7&YAV*9ZnI+ssHP z>|RJk$h4^%%F~oyEgJ0y<7u)Zo#GrIsCo1IxDoufL{#APGpv8-Bv=>?%(_cSvRH}& z{{Z&xH~#>gB~vCpim-Uo4e%B91^tF4KlsSz;FXV(nVkb(CCip+G9SU;s7vT#Un*FQd%|I$ylx)*`aoKjk}r`|v0mt`ZRrjJ>ozZezTzjgrNPP~tD4Nl zrhp8?kLP3*Bw^40028nM8=Bl2T`{MD@(D!h?YG21(B;?CP}`P;0`dG{EnHKnm^R_9 z#Ay5T0bMH?jRUa7@fQ zvha8&e$pA@;da{7X4nfX_}8Q%%>nun&6<7u&IEJL*h+zZH4Q_CI>iHf`hNE~9F1F! zzj>C%qK+9G7&4_+?j}ThZZd(!{4t2And7-r8&b&pM!`kwhaOqK=2~4L-b#SEa_Xsz z5ylRfVVYNJa<;)P+JcvVV*>?h%!60Pp>EKrU>bZtH4(O^$z!`nK=ZlC^_6_}0zN(B zP;AlF5cd}i{+ujv=)0z2z-Lnuz*94yvCs64`dE16b@YutS!)>RS|T6J&eYsR;#l@zN)R`E16X1wX-dWKCj0sN@T<;=egq^->2vx>iH z!IFbW`5;KB=^^ssBFLcPVGb227h(@KIo8-#8>}UriN;5M9!b!Ftea5dOYd4=-k{{XUa z(3)oA(yMK)F*I(v)FRl|=3w@|uuF6zjXmcR$r0t3G{)b)@Il0GVQjL!%9LQ@7YdIV z;x;n}q{VR{zSb{=MWq%sc$S@a8Xr-ynNku8D#2Q(oO?teuVJ0>Sd_sOYy3+>Bb~6b3h(JH8uWiKxg2lVkKW)~7L7>Fs$`bWqzhLARo|l=jB{1$-{xRS;@A6y zBHCMN^VF%nG_XFi6l+Rfrr^N%r~o(&pGkvtL&t8c8$0XiR0fX`ofy^1V8BFJt#e*@ zgo_!w<_!k!u@`cVFiT-;vJnurJ$=fJi*;2{0FYZR9}&e|@e4K9ueneFtFp$rAy|R1 z{eOJQhEQW0W>5>TH7F{c%^T`fmgua?KI&gbMsR%rOD_+x;w=eRPe*}%GGuXs8gam-F zQe{5!{{V|rcmDu`a+~Tvbbshrcl;>M*Xsi@*YN)UE+d#NyaHQXuHyjv%5^NX-anr& z{g#F|Y`MJ@M8VL-EG?K4W-l+EW*MnxD|n9R&{R-t<{er?yY@jw;D|5-2gZgWk0J}+ zyJivRFyjv5+&3Dou?DDu<4^uh{{ZrCS7Te157sn%GYD%~@W$=*WGg;7nB-dwcxG3H z4$7Ir8a)hs{{Wm@lc?54&iaMg$ijhkZ0w0ck}p2R!&xb&8D`6rv@7i^4@||)iZ)?> zNB|38FA{-*%AydWk7;?nYpaG2rVf1~0rU?22t=01rV>Juk#GZxQ|816mZ9cpu>GFFIe3c4$Cmtmdy5iYRe zxs|$6@SkxSM96|eBa-pB3HX6vBGSK$K#v@RnWoWo8N(zUFEXFPiEQU1<<|+b+ zEsC*=?&GNeS%+{hB8h|(1%6Nqs|JH9O0FF7$7UZuAA^4M_=AEFr!E@pU!`xMa@?x0 z#e&ttpS`VysT8o*cYO?LbC$ZdcXHIqBHb-$>ni)Q=Yo?G#8tuB_?Aq=w(*Ov$r26L z#FYLlea@ngELzP(R;{fC5fZC#01omO>PEF|bm4xL4N;Vq*lOQYWpTxJ<>39?Y$LyJ9YB$BRjwTa!^XVvfwT~YWZJ^Z+(+;JlEU!S8?{b9Py%yL-00GLHxN67@ zT0IAm`$n$iKQVd3Y-~L9Qq2lkY`_)UMe(?-u7*p^+|I@EYn~XFF9k<2ZNt=2 zY{HZz94=>)JAc$*hGmsj4e^Ec?p1(R@iI>2G>9t}?PKGp!Ao3du4~N0(^UCU^;jeZ zm&PU$8+PyMDex+!#q}w2yFK4g_Yr~F;s{yDR#>KDWw}SbO#13B4>#K27+`Lzao2Vm zb>NRxMS>e*V6gkoK+2;sER+v%>GS8~$N`W1ZWd6bBX-WhI;ETMZ}YFBD*Q#p zg-xeX(i^nO#?C*e{{VQDF8$!zP2EdCu}a1%4w0_vk@bi+8D6Bi4te6^);+VRVI% z2XsD3=hMW@J%qS6eWJJ>LgG1O8nLLu@#zr6c5xRB+mB8m&3vO4N{LLLGT>MG#g$di z%kK#4wrzykm!czT>2OX&@*&=)ykj9cOY2pdM7E`CTmc$9wZXT+12El+YF~G}6?oH9 zr48H^$q5L{ZhwwS8CH$FZLkZxZSe*BL&11c-J0c>^;=7+yH)q%G02CLVlYI3pjC&) z3%^oO5yve?Zuda^!8b&J*#qza!nWoB46yA5)xB3qPZt%CPZG(LtKSfb7S!NQ-Zu(f z5jCo>c%sNF$YE5SXrW@U#7>n43&Z9i=>^$ETLNVhmv9K7v17TJGGN2CCbO$V;XxHRNM8CCr=;OF=F++*E`67Vq(=bg&GL%Ft zInVCkxEMN13*tTQo{*vR+-F9(A#9T#&1`xnF^BGahz%R)!&qNiyzK}F(l_;;I%=ji}g8u-9%wEx4u2Q{F`2vYy zj*9o2fm1ehD6}PJm^J(~LZ|-#GjZSYA?5*jY8C>*k^!~MdJJrj$Xo-5tJsespWFZmWb& zzRY&+I2f))PWhQw6tg0)cN(uPE@S4n`okd6R3X|j^)nZDwgm3?hivJmE_A)i_b41d zf_v3}um_+B6w!{5WFhez=#VeMiM)XelZzoIR(cclAI!}NFaGoPpUnMd^DDQvt31Zn z(uJrSYTs6CiUG%I_7cTybOlq>QAVPv#^Q2Z7mT+tKx-zfdHI#4gv?j``?1^`Z4m^oJQtV*XKYzW<7_=E)B4iRFCH$_R4 zP%bc1H``395Lqi>@e=*nqem_@^LiM7AUq@m>34K~amqW@Tk&uX4rqzxfT*Be)?VRo zQN*CBXlF3at;$#6-D)11tK7|9fuD%0e8XNlp_DR=9wR#s-&x6REJN2lF%$#_r&_Ki z2~qm~{iUo6#$_H)5txi#zK~i4hYV|C&|K-8K~ka#XLWs&;I(v_xzyP%*oO9+kC0H! z<%3cL9IU>jq6)WXKK)A+O0Zxay+!Fdw@2ctwaj=u;ot;q(G@Ne*}R>S(Ayou^`ZPi zTW}6T(dG^6Z`1z(KWRij0=x$ZAm;%nCip&PAWSU~wYBapQLdu-#X|=S0UIz|a9g^J zA!`A%OD>Sq2yp$m#e!c|0#qi~O=2RifzQ%5bv^^fFgB&Jf)^E0;-#4cZaI-YNn`nd9A*Ds-?pe1sQ!C%^G3Y_O;-#l@hwgu0q5J8L{{AIs*5?4ar|M4fkwhp0 zoG0%v*Hi+9Rn)(JsqXT0HH9fW?_m&M3Vx_GESZU@jq7XM>86QOp1CqrrSU9$sK~h`g=p~w3 zIO0E!5?UxsR;THFAB+Ls~2-0XRzmYKrsa3n-zdG8&RvZ^Ly;-ei zoAGlI2LAxSd-;#LAY@qb9djF^d{h92O$L#xaQV-)6dhy#0CjJSID&;9vWi?rv`}gT zFeA-Et1#-N3&wUs08y(hVGV-sOrT`paVVw5_Vk+KT@EHB9~&wdEo`qZq_b`HDqElu zp4{DfC&UN6MT!C><*8|KZZ&oA^BY|Ag-+tPY&aa(J|SA;HijN}+5SVZZ#n(c1eD5; zxYo2CLS7+i4631GsO}W$*^dv*)BLsvs=P$B&hK%9%sH08H@Uhdy2||VHI)xC_7-%) zN(I2c{PjFUvHDBn{H-g*Mb$6dU(Sp=KCp93NNfK90ga_%@#z#py-MSS^nxDuk4aKl zbv+&r5bI?OO&XYKzGAe<1O-tG*(;p;31a0-J%e(Ful`G)GbCI7F6ivn@@xM9rl0xJ zWB&kqp_aVO{=dR-dBiPaa26W{PvJala91C6!UNP0Iqx_1`c0X-VRGs;2F!n{Tu-lT zuoNtEK{fE=@pEZi7_w+G6;hDL3m#IkluSbgw+yjS;aI}n{K`cXY`Aa1Qiz2ug>*&p zU3p5gIRUADK^?$9+CAWLURd zO}0kuyC_Aqn!ilqewY0sdmq=SR5U47@Z(U)KvbLN$8J0BqTms)L00-cV#v9TXwzuZ z*UWAvS;05kzZvQ;gfPfC!nGYVQ6uOa-SeI*Ih6wy6th`VgT{$dTHi23f`%<@#6ke) zYnUpBJ0-lq^FavA_IvRahfjhRVBSUZ7)EuSdvag~4Gt;+r+{HrRKl+taR-5l0brPO zkrTo}rkusM`KA+GaA&cHo8g&WIchC*jr)9ogy*(vG zl*D$?_liPQUf5eemxEk562NDJ(ag2nQj9znnmnuKTPa|?8Fwyj)0t8lt+3xWk9M&r zivglhP@pN1vz8*J!#5UdDR-DJ8&biWuUModw&?YBP)Y(`N2VA92-$3W#~|}H_JXUI z_qbryCb;}WH1Ky50HiGJ%xb<%31ooVh`fjzyJ3QXtTB8_p={u8rBv{8I%)-A4U>#> z?J|PPH7|J;eapuy^8-Ev#(wjfI5UU-$7w-ZNsI?Nm3W0Q1z4cLaJWH;C|FzoMid@lIR>&_?7&#pAdWnPupJgP}X<<0Ixt zTVH%>D&(^5wm88JQ5lXY={&J=ma@esz91BJ3PfdxW@btA4jjM5Md-^Ks`EZiv;P1z zVpm~iBY+N>L+yy-c#QK5;i6D@oRX6=rOq5fGnf|U@DcD@{%{vsU|m1J!+gho`Q!fp zz-~ML0O9s#W7d6V@NNqaaRhS+UY<|jYU(?J5Ex3>{{Su|{{Um`KJ!_!^-kgn6Ow3_ zHVz(c4KPgElN(UAb9wwS14D8T2J)^QBRi6T;DyHekUy6$07fNjI00V+LeHghF(9y4dKYd3O zW&wS^(%1!eXg;Oh176HQV43LgiI^c~2mw;k%r76&5-z4`0T;0H>hpeMRR{8ls+JPn zQ}vxJZD2@BJTt8?dd-ikf6ro=tx9E=n~OmpZR-1G5ZIUA-S?h02%MzlnIxc%yY@ zYRF-aytVw0LiZI?lZ#fE`BcMw-D<-;Rxs!Np8=nE==f^UO`f~oe}W7fs**6M&qS?6S-C}V7 z8<|&GjxKMjSkI3<}#eBR2l_4wc=x}D>=-p-Tc$~ zm^2ykoGH=WTvrW8f5qZkBJEt{cQM?X4o@DiLV-l!+%BcWP-qnQxrntcTG!kbydN(} zV1zdGN?MB*0-&u9Q~ZDmVaii5j=4QiEZVf7{7Y7d^Juz&Ux<)iDiw@@1%Mf6$C`yP zK(#qo;a*|}&|%Ae%gi+prCy`k`BaWrdN{2=`Lf)anb_7QTtS-jf9P>+MI#a_>A7D> z%Zi}j{u-GtXnXK67EWes$NqRf`kVfFfARYS)$2BT{{SX^Nt4$904qsL;^ub%uPWvk za<#TPYKm^N6_u`+OnK6dI>6Tr+StM(DpR#zJ|-9lSYA?9AwgbYh!iptEV+=0T?QiZ z_v#Dab8ezv?2UcIGf3>5(sl+5JSm=Q8YYKvFEB ze7~&wlC;sx0xE*HfdvI%Z;oF@itAy>Z13;yF^QZ#5K%**THol=1u~l6m5cG?{UtJs zSZmq_V`H`9`DNiYWsd?@k1-(ujse&2(hMl<7Q2NEmFdK?*vu3o-l7FK?(O{}+0{x> ze^1+m2n!L_d_kB1S2=?swA#A-5ydB6CDFCm z>*js28HaA%?E#+Ch)S4YONN`|1foYTBj=J^9X>F>@8ltpGlF!3|SP^ENKL+432TBPTDVQukYeDbA3U4Ll>t%efr zT}rC|0Nc4zAi6Ek~RXZCz6Zp~ruJSYB~sjrse>*ZwM)E{6xFaP@iqG7{h`oe*qPwS=fz zE>J17tl(GMGZ5u`{{T=bqes8?I&G11&i?=+6cJL?bhVfF;sqX%R;K0V;F!5<8=No) z-eNq)A%lAEIGWXg`_yWzy0`TZ!W}_qr$i|K02Ba>rN{Da4M*PEJO2R5tLdm^0c|vY z6_5TG{1*QJhi26Vo0wJ3Wy>_`TVMJPkN(CM$hNxz(`a*;iDCHW@dNGpx(EYG0kO{&j-DoJeuac2{}mCQZ)h7LiT8lb)qurvw+44dEmh7o!gZo$$_395x_ zk>W08*No`kg(Tqy&|ju`)VvEYVw=j>#Cwd>4ZY*i9W0j`=`LFocS<@Bm|!$woA7^d z6*MRc?;-(*j!2r+Eh&3*Eoelv$o9WT0G`5=7Y6BXpE>&+Trwq~m0A_nLre50t zqKQT|rlp#Sstp{&3eqc#16cjXm@SdiF;LZC3_2oo9`h}YlrSN%lu^A|c!dRBi^sT7 zEl~W*k^o`Ps|7@eNM@+6MB*K($W@@awM#D?z+3HYtAHVZ3S8R&^(8^JG$4vsO)=O) zzog2qgPzhQJ+RA9acB}dC8*lI7$I9QjZ`33st4|Uaq%mca38<4%foAxtCu0k7_>OV z<%JCNh8{_Qg-+l44ZxOuAzcwXT*>g1pN3x&c}@D7`bKWLPCrPqK2iD+2^x7uRo1iq z3^0Pc86LkdQe6;`(K<>ZDt@QY~ zi=@x~G+v`h_80Y)h&32&rVeW(ceEXc)a3Pkn zejcPK+XkOl%_;V}C5c@|4kEM!pj%bU1MuB=4J?qq!` zdn{D?PETKwYV?C_!0`SUt@~fZ%1eWy<5A_j`^tf&+3ZAXR96afHzMTZh67ez6g^K3T*x3ta-)XTz5F-^@HUEs^akL0z3eaemR7QAV(td`ku_ zZNtUAM6%Y>*=Gtg++UhftnH4_+?I2z*y*IMx` zz_q>0z~e{6DB@Xhj;BIY;!`p~M-qoqM&g!=0eK-=wo%-taP@&{*nya1;e^aXrPC&^ zVF5c3{6dP9UljPLs?VdS67=xY6|@I+_JEYKtyU!xU2P02)C9C-mHnW}2=lU1DGw%n zBLPO>N#Q8tGdh3(@Geop!Y4S~WG0C~y1c-uHeUn`rGo9u3j%MPzF@hFX3)Z&4#=*o zN3r&2VT^YC@pX}c+@&7sy1!O#6ePmEr|2?fOO;U3rlS3HQ;P~AcU?Fv9!u`{@xV9#ag9#6zIky_{<-EKg%e?HZZ{(d7wIZDsmLf5W+z z5HD*eG(j?{L?}h4ZfY`0#AqK7Eh~&H&PUz>QF4ZMc?OwFNw0WP^j_) ze6`Ui-WoAjCEf=)mV{RR9pYK=K;{}?wstc85iz(Uzx)!%zPJ1|=-hF!+G+{N@_|35(1EoXxQ*7!1ZrWmanuPNy1y#Klem*>1Ya z)HZr#jGF^QsDLWfuW~deG3IRj;h%B%{wfLG%>8HYH?qqY=tpsg?-JV)$VU(fJq$ZP zaRg?#g_>T7m4d~pgc$p<3%USe__x#{M4z-zzq|ISCY1QJdxY&Ts zi*0=>F9r!6cFa{WtuR8b1`QaQ54NiLh+7L`Nb-MkJShqZtk%54eoNvUTl z4B^akyeo*d$A=N~ok+~PR-44EqR?%gjz#OaQ>OsZ=+JHR06K+hTrkjTxk1QV>Ojg! z5VoK2=2QkomoO4jfF{2@r$<%p}5dq2b3Nxq&WMQVZE00IgU9}hu zTb>3pTWs}?qS||7Xa4{lj!RMKn+qbRd6{H;^iGodMU=brqV%M_yGm^mk!q{y9R^Z3 zcmo$**qr9P%QYDKn4}b^%|wwI%5EuYXNso#mRU`@GN4snV}n6aZV606t~tMm9>5g& zgQZ9y`Ed}6>?cAsTOc)c5lox|1{F(_bpWGCAqg6X+EoGtqBxHwF!*Up1pr%sKsQ)i zn}*b;%$I88C$muI+*M_O!i(e&lW6`mHw9u~!wPc+j*V_8yU*fbk^cZCh(#PF*|!l1 zYXYpPn1FJX?I}g=4P)VdafzNV!vd(tk=REihu8at04TD*^VQU+K&vvG)s2qcIhW_O z&RzNg@S6VsJEt2zkWIp;vR1`!8INsFXpWpd=!8%@tozhsZyPQ@59(e91*TZ1%qq>G zy4zvn^9{%Xuu*w09)c!L-co`_t`_-QDA32w4Jg>0OKrg) zpkgtt)Jm=`De4B9v-^W4idr(W1+tWOLM6OJVkp1##68dO;=H;3Qos9FeE$ID@BDjAM}Pe) zRJTl}(hb)~hu#(;i?7I*l^8%Y;414OO`4jpAliDu12WDCRpwkJFa{X>3%S%hHvx%BH z0xtBsy~PHc3K-w+vAgF-k_-4zRpF;Yyl2v7l?1wK>FLRbF;%e@YCsAyt75tEiD>un;iO zzv@!psjM193p6%SFK(q0=tNpvoZ>9HTBsPotEz^vMM_k(J|f91Ijk&&HK;0z4;-S~ z-RS=SbJ97cH_rVyxcyI9D6ZfLMFT$={6=m0@dP-y`giXX4Pk@_5Kw8Q{q=|(>ON6w zAFkuSR`__tAY26y^<@Dl)_#%B87&P`+YUb=!=YsAPySIR60OB=*&x zSyHq_Ra4>&K&_RH;QGq(VIjXr6LE_X8=+=+h?9aeGivG_Xg(lQE$O^cBH5im~ zd12)?wz-O!aLodiKBU8380^%{%H{p^shbTHuNOxujTyuSe7^8s&L4C)3^BwCk*aug z5RIyu{r7@3m@x(CKff^s;S9BnN*E%BNy)!ibgTD(4&{RZ)ZzkM+6vCS9x!@AAkkTZ z+fRsIuGjAG+y4M7nPxg=;dc0c-|hk#&9d&E%xQ$^HP&V48hm(6%R3_VFD-8G+6`W@ z1-qjE1gGmyE#N+RboBtkFYHX@VeG<}J{v zadfm`@dk*ulr@(Ch59l2dG`2Ly*Pqztf6un7QQ8oJ2GUvuz`IO?v3n$7as*x>r4r& zxmmC3KkG0AnvMp5;D=^^Q80A-pT{VZ8<=Er*`r&Q>e{v2=D2(I>g{Sl0V<0l0V*X@ z4J}-z9S83$RnhsD4B@llzc3T4KgmOeQsJHmgJkxXTupI3qZ*2^>&_qN9HCpB+0*ta%u&t{_zxsm1^)XWefd3 z)IX$ZY=5{cP$^w2T=RJ1} z8TE13z6X=2#hT(2IAZ2X_>FcdT`nn7F}(K@Ey{5)!%cCk^ni=?UR#!f63QaM-q%^v z0~k7Vg#IUjeZ&t$=z4a?>7O#?}o zBX+m#H`}(LxVt4uYOyRhUbQeR7l2ezR`QtnRb#0l`}z7snBJ*#e19=Ef83hit)~Io z_<*i|_`tnix*U|tO#cAMg{=GgMgW;t_mA<1_BoEX?=vHPedTcd%()kb-bJvvZx?n| zej`n@&5#PEp}OsbSX)mrq2m6;MGoJ@OrFpidOpx033--H4PRty6rC%qK9%zqgX{^& z%i^Xgrl~dQ6P*eYQlbSc!*0ud)m zAa47PqNP>PeV}ZV04JN2)MM0g)q-c3234HY!|4a20Bu_-AKNp%qN)HE2$VZ6-Nu1p z%9OrAH|s=h(4dTH%XeM=<^s<&TOuqT;Y}bWNJ~{{gV2m_GZMe`1(()mu-9*JjnhH1r z2chMIgda*3BN@S^>SALVV14D0guTTQ%6ews%oiGU4!Kq4rDY4uP?w)F>k2%|SSsM> z%w<(wLfNHZWAA0ew-Rlyit<{f`cShb(28b4=K|HUC{{Rvvvi6qgo(JN1pNZytPc!0qpAy|a5M4L4 zOP9p*J|%zE3l*Sdj`0!x^sc$Hv=$gWf%sw+e(zadZ?;Fo7yIApU@TQue^9&PYW-E* z5H6v3AAaDq&2651M^Uxk^oC%bj5>|UZdrZ zM*|wpe$wCvNL^%?O2FP-LdshELra#pi}%-fSX%5uB5CrwrZKKR+_A z4NuqU8o{gU<_arY6?jLVysK0f;SQrNxI@ATs7(UQd&U}XKZ%e|2<(Bwm<`xCGZdhO6!fjlV}y@* zW^-G3$&7h_rol)VFViotaj`>nU*{2@Ag#VD#^o|&l^A_%s5MS)jxW;Xw$j~O^~cgW zVxdabd5^_cYP7czBYng#VUvzs9Tp~K<=3|r8**wUzEEE zk}&4JVSR&>8Ltx4jExy9a=t8Ba$_U(_=%LchZ6+w9H(J>RcTOKVY=mU3&%96NI3(c)xabRVnx;#sztNg#n#ZYsL{ z*Dq?ew1!}&H11Z4*LlrC8xN&LrHwA}OtMN2dGiLD;juc=CfjsAk=p|0u^_*N} z;KpTau2wlah8W)Ryz>A;ikoFapc>yD%X2cycm|q2W)n@mIfN+6H{pO5ag1>oXkzmK zU9#?Kqj@=lgqy3lreYU}?hp{ueDsF*7U;~Q;cSms6U&*B8*vF&!nS#FE%$ZmmwU1HiKL}*ub3sIJfGCIu$&0Ev<22ON~RAylHe}$YlGz2 z1*DGPn#1^*7?zFVSSc18c$tB$Db&lE9#*9dS|D~~aVgarp`&K~uhs=70{wM<(uGon zYpmPd+|iJw@CAMb9mq0G%n)}iG!5{YfWnk>wjp&K1A30;z^@U4h}AsBUS2X{ssL8s zFn|EV%hcvhD%kjl9mS3kSW0P@?gBx2BL>j1-M|d&TkGaowK?1Lf&~l9F!hmGdm#DK z^n9~-s($|P$^{+%XVX5+7bg!>?oB?wiS&fP`Y_%45~Io!>frq;fX^Sl@kd^t?i&3# zhW%DOPG7F#6KM4xXg)L?VTYmn#a@&5KY~9bFNB{_nLoCt(0(At^|(JrOnG{KW5dxk z`k#sR-)L*;{&CaO_Hek>`iI_TKUkYh+?>O|*M={mX!iR-^~Lpm@XUqA$ypXn z9wYs8(rOL(^_r7M5kCQVXOE6NN6{`kO&z};N$RtYS>)GVXVCFIN^#(c@mxv`;YmWR zNU$7WNw>rc=D*t$VXpe?@Ao@;?k%QO6HF{wv;KuUGAc{{VWIjiFP*7xA1U*{{UZBAPa%iqQD@YOaB0Vu(*qRg4L4HO2_h>m_>%Gi2NFb>c6?m!dGNMP|UXM zRjG)Ciy7P&m?_}_RKp9y#2O`fR7=3kLpg2KRO97*S9vXcI8;>njCNG;q`7Fqm4ftrDbo7ap}SuHu?MH5tj|vxKq( zeh|e#0KgrDR#um0^Bw+%rOLGpR}@6ds^5A}yuj;CEVUu#KE$-TmnVIG<`&cRXn0CiTxW1o4K~RwMJ+XfhesiU_ue?bI5&l; z9oh{&{{YEDXc~Esa<7Ys4W1(-blqtjvqG(NQItguM_=5a3KrBm_7$kVSQyG1L{N)O z*=!eAQ&9@5POrIGDbea;;F%sOCR})}675bY2%WbG{IRKV##7^R=MGgM6Kthm^dcq3 zwX~WpcDa5c8tvsef*3oRqnIxs#seLzv}vLI$B{q_D^4dE4mIvV1-L_RtNfV|3NIJe znQ@W>lhc^ERhCeC74(|w#&Sm@73WY@mfo3SMzH4Nx+O9VLxBn(Ifi@V%oGK)uDv3Z z-MFYCBR77K93l1GbV@52B7;R?{Gb%AR}2vz48vGGx5U8o)lpBsq^v6xvkUF1Q*~FG z!vN72q|6=N9p>3;4VH-#p?n#LqGkO|u;U`<_i})%I$@S7Hp;3QSpa>b z^KCK^HL8-mA*5L1SPD)a<@QaY6c`ZXl;X2et#D|KYYtCj0g7cYFL8GVjCc#It;VIK z;=;3tgSO4_4*gy}l9&vMFz>=}igX!+nod-xvo_DNUOyODn~E84ylTmo6au^4Adn_k z8kxX=udD_`c4DOjHAk$?`+_#5Wr&Bqe4Zr;mejH;gg zIk}NbF6G|o&r=LuJN(0IiP;UclE~@`TeK0#F=S%S z23xohM*@A}2?hqB?N}Nr^VAd-zG#GK!=3XnjJ^&cEK;-F zasb1^9V2&EW*W^7Kd1oPQaD7wZUc4`PP>4>A`G;df^FV)!QvSijqE)l-N?Be%43uc z<7MO8nRrZ+%Fd3D5}0D?PNN%f{2CA(wKJ;=Dr)fk{*j8oIpZ2a5;N1yX1;_jSgLyh z{^)qBWnHuMhA}QGGM;^+4sx07>R?zKzPNu9!8KsNUVf2$l({d~zY_G;9uE(s7#10w zZXoV%GFw2lC~H_s9{s8VsR8Bnd6&);iK~P72n!f8b)HMr&Y$flc-xs0cVG{aa%gOmx7of>pPV68pA3NE^eixu&bXJ z?H`9-vK@Z;fIc&{az4;)C@P+{Qk4MSJC`(u1$>`KUtycCgP4yXHhJ`$Z)KZSt?}tF z*DSRx!xor2#-rs0%G>54M>Gk<5WsTi`St2FhOJz|5^`i^L@CJ;^+*S2l!1RjQnJqk zP#p>&j_IYG_=8S8~l25msF~g;pOEik8)c8Xrs1KHonKKPA8{0`v3Pza z0oAeQXA;ZmsQ$?*0J?Jf!3w^vV@ieMsNbXlxmOwAr>qc75Y2k_%R*iQxN5a(enJu! zg{@18o3m1@JZzk1ZiEK}t;UsZ1*D~&W%9axV<6S*UR*`O1-IrhtIV{&5I0+B>L?d1 zwM481E=MT>1S_Q6L2Jm}5KBUxl`>8gz4?ygqokPKk1@`xm6E|~Or_Gq3$)h=zKNdW zNYKj_etFbTX-BFNO~(T;)4vHRC5AKW1#*q>^X4+{!=+^W^(pi|iJAi1o0Y0EI6rC$ zLV=syR*D;~OxRmhh+zW*dVg*r;|j=NzNI1>Dz#(uj$MgnUw56cYc0d2XsV=-*&L>a zijBaTv=BP+7PxGJN{V@x?Wk{YV5b#filw2Iz2;SRJqA@%xKkP#^XSjs)`4Q(-iY86b7b_V8b5D z-}fKWty2XRZs{u!YysSJ2P4a4 zMLiuyKJ9&`V@EXrE3#f#>5BZsQN+x&%F%0-B+uUc$wOzwT2$0t7XL#mEPM8)nUK`CHLjRAYP?wGR$$`EAA9;_@D2@+AD8s%Du!)0{wwqo%5{X zTZY0~Rthd-$=^5JD`Lsgpu=y7rq$}w&4JbWxz^aN0oC;`Lf1V)CZ?-?{{Y-1RHM5& zxQLbPG12sbkzmdlzZHK-OWO4CpRdwY%b`sKv*NJ=>0bQ*0B~Qg34L{NFklVq-GtFg zSe8H3pn}R>MsA}yv5S}uqnIctR%r_&g>zZO1<_qW!%VD+W3nfYf-A3t7qvd5$&$8< z%)$*A%meioX$)u+Mqs-_-ZF#0vX@Ww0J$<=UBDLj?@#DDL$L2J>V2mzi0#<1C^TaNDNX#D4Ok z>mHEJQVr@A+93dtFDDQY$;>Q#_VYOtPZ~VSmNs3SFqIUv#B|T!pP%j!ss)Q0AkaFY z<~qO_v4hC1D+AmRAb|mp|(OI#*Oy=pU#v)WxMkP({&lrTr7sHqa-7poBH!CHD z>KK#gMiPxYp_Kx-ezKc2pymRkos0U!un}donTi08TRFtX?R6XXt zk?D{k_>+n`EcheoT?}t{s>DNSO;pglU#zXBH7YqQE16|Nj*q`w%f)8xFT^qvp2(=R zG-e4*q1?h4u^`t4%=Dt*_kn@nON<0=?-pDX6`!3l$%QM0215GzXz5!IZ>$v$+ zgt5hbCD2)ZkV{S+z@W39zaKDC&iZ8>kUcdvbeqpnYHXVte{@!K!&!oA0&x*TT2sPb z8FVi&@M=(+mQXE~<1*7$EAJ8ry$~q_L)UW>w&d^P4uL?)?Gz8xT(lSqrl%pYvesr5 zMytUDTVXLpZYUvfzUBh)sG^!?&CUf^;g3f?MX}EfjuRIgjw;`>Uy$W37S)3In@ump z5g40Z!=RM(`>4d819soehRtBu1cz6+LJCAOHgf?8Fo2m zNp{jNV-GgUW(w@SW#=Q)6awQAwkg(9B)Ok42HNaP@ECS}W#O+_1w#6F5rw5N>Lm+v ztGq@~w9Xtqw-W-aFmo~(F2?(*gei^g9pPnR{mj4%SIhh2TSyOeg-cFRT8`WsC}468 zULK+bLc9K>gq#D-`HHM#MWXgxbQPHn;b#?}LSJO!X|`Odw$Uhx!c%qJX>g4gY4(~l zMagMv;Eu$vX1jnEAZ#1r1O~&6IUhFsLzL=iJfJtkzfAEi&Mkt`Yt&N?M+L^WDw>}+ z_(_E<(_XP|fovRje-k5{^J|RykBFamYB`|T>RYw}a`11G_*ex*3xzKSWB%r4-&BvwEpYaOw$oz=_bZUO zS8Lk?BD)UdCp_4ULclk9@1H$ymMGSX-Twe+z2r1!-Wt0OCWv0k`=c?Ya>2fdSOa7; zUwn-FQSbuQ=Ma#E~w*LTmfk|p0?O$dnPUr>I z$>St+G&cK~_K8xLOI&L}WHwjrK?G@3T`y?-#yBB>+rt7b8@{|ul2*_6)XP&%H|+}% zsJUW^ z)rzjVm}>+eH7;#jwr??`0qOaT#e-88kl7$9KQ zWxC>LS)^;2V@nxfOC29VXZmA2Fn~a}(YuIDOcg7*)hOjo;y4jZQfFI&oSXoZLRyJJ zre>=2oJK5L3O3QYqFlPJ1h`dJ8_wn@zKH@D67eYlxeuFavSG!*IQR;s|JR37d?UKB!=YK?jnmbaTfr-VO`Y zN)YL?F*o8?zF|#57o82@`a#rVpsn`>%!^Imm?#>z1wWr@biLy5Q$1SSd&GRoV6LK@ z4Sb;aF7Nt6+U16`6|1LP{kY*%c+NabXyECXgPwh$vV#2*rdUkH0mk8h06R$VMuUw< zyKbi)dp9cA^_dXh8Epm;!s*;**zNL$j>_&3F07j%T`rZrqEVW?yusW}R``Tbq}aQT z3-Q!IMEc9iqVT)R6u8NbVt~-$P`wwkOiqdo){VduiOa9@TpHY1>)K&Z8P!BuHGBQ{ zfXRm*VgSp}qFUOlal1cA=Bm>bxV*T$RqiCLMn8J#xzB0i_w@~yiSJ55dXwz7A>kaY^;_m!hBQje$0LI$BU|r*X zS(`Ed$>j1&A!ZXFiR_nphDr>|M0GNtXNr`H{0iMq%KDv9uQ(f>aBk(RK%M;HGi`>ZLp4KWpQEq$Y(olK%4$Wpqnj zd$<^s2J}i>M=X^DJshu6kLR&fcaKQpY;cvY(ki15^o0~_j%Shk*>KMXlW6Q*XqvYxNA; zwB9P1Zio#&kr8v&`;~x2YvNS2EhrB#C<-_i<1n95J$SgaGWT%WU`oBhD5eY-Us+I8 zl(y){?43VYSfQQNP{eI6$hd=hshLE$wbVx>p(qYUCaD$0HSH3pf|&M%)e!N|P}rg7 zg>VqJO++$n|j2Hqt|qm^nIStxN2rZ}A5lQD;z5#sAn)He!?(yW9E zDui>tGSk!cmwb`>w!-U!xpJ8bGFwY~z#h@8i&?T<^y?8bb5j+0)GXM`1GIW^a0Iox zaW=}^zr;5HT;A?&s@&Fzdm2`~m@RgAVxa^&B_&q}Yz20$nv_wL5;LA4mq<5wie)pF z2~p&=70o*iqwF{^>HW-qY?a~Esca5xe-g5m`bBV5*5U{>UHE1$Io~8&zY%DqUlXX?=28kDUCirZYgmG7=1^<_ z)KR=^)e{~S?2BVwhN=|OxWPLDpATN3RDJEPT-Y<)F68X?Uj4XJqu#1!k8t?sJ5^2UOYqh#GwoWcj??Uc@g+y zT%h4fE%ANb`GC(uYNHIGx-RjUthU#?m`5Jc)&X|a!GLQTprCDrN}S`bGP0jZGLM|p();&4)H&VbElF*!-=jV#lr(Y<~Svs&ISY6xl2~c)}ve>)l#j}oZm5Q zs_LZ{rr)$?`e>L8Y@xb@h6c~=jM%Pv13@zkc#l{hLd+sfe)HSKa8wjy} z<{6n!J;YV2&OavxWzSvWP~<|&&)x$77`l{k8DDAF(p7>kR}4l% z!#=P~2>RmUAT8kqC~&UkO$b&(g{aCLA3-ZX(XSHb)m$VnwG96Nu-z|CbjB`dyS&z! zdWx$BiC^+LSc1}^w{Gb13@V}9&atU%HKzvi8bGM$0P8bZ$hU`^fntXhVo>(#qn=^R zEvRO^lFMORX>_&B8g`0URx!lOwIsxN-_>B;A|H4w&iR*?dy0v*fY)1>sj-CE9O5dp z1{`K)>{@~+JS%iedsHoIz9MQZi0y<$wz^}wA7!jzfVF>wFl6D2MVF%B1<<^_1v?!? z-Lj-OsLW7RS)Ve%yq0S^moOEz`}=XS0dFLr7llATUJh?v%S#pM``p#7GkLN-OL&ZQ zXQJv^YKBzXAJn-=**FKn#927g0`VS;q*8{`1sST-iE+uVGVP7HsIq`G`ol_ri!&>f z4E)7S;}9)&JPgVK(qpJ`j7uml0N_MTw^s_N4i`_}C(!1i76*fmFb3D))=#WQbJGhd z&7rdJN{rq4OG>LYb1;O!6wG^tIZHVYe50s!s+6W7l{W^w9a>FFQpWRmYv*hO2zU+3 zGluxNvgq|WMJa4Ah5}_{7&H5cdZlCL>S5Toa9!f9sLj0do3c?sMyRG`i<1?&M0*RS z_<`ZeC}|j|hUUB?sw?1G6CsW7KCz%`I}RoD8_xtHw57Pc&0i5)7#?|z0M;Xy3q1&~ zhq3b)Xlua>^!zcjb}3?LiQICtg5k_{fh&?DqiYIzmpCsMs3w4=UOSh~g7nOFJc3oi zCDmhdb5U8CgKYcyLR<%@Qu=7r+@u4;^C;D*I3N`5daEYrq16>EHAh)s>SI`@DN7fD(a}Q;GrT1d1(j9cP3(l|V#7e|XJtMJ&i};AQf%lmaWT|xW zjc}02W$q%YXIYk91H*s7C@p2${R6p^1zZ6N!4>}i1H_=0-TY1fN=hoiW?qkZcCIk{dP1leUThIrt~e@EU{=ST;^DT7QJbu98;LVnfWnP< zJN(NU&$}>8PbL=Nv4`aIF$97>PiGLaS3U8(fhasWO2f4iC@JO}c7BrnFmjgWT8Twg zUcbJOswK8c$L19jm=d_+H)bQ?#4D|v$bSA~U=v3>^pA@jRHGCv4c1~lLzhV{Wn-nq zRW2@73s~C)gc;UlfYhsRF+#NFxu`Xoy35?Lrj^J>>B!w~5Txo>!E(I|R-5{|jX+k{ zmZC5RBfL&B?8o;mm9LiSVO=h=!ES(K5~dKM@2F2Ki#C&30s-KPC@-sjxtjj~Xr**= zmApy~uXNOOVB9@%Go_1uB?ZeZcidi;fi}J+z>IyN4TcfQQUnI|!{Q|-sY;bIo9N8M zrWmS%qLiv3a4FJ#KJy|r)KirUx-sS|SiFQ)p+ol&^&;Zd*gZjbtNQ+63sk*o92>WZ zX@X#G{?Q<}#x{CGqK&9OF=AEZp}9d!-tm9669A)$fvpsx)?n_T7kYUhEUcso<1t`? za=zU|sL>vx02+(xm`ASRAF7ns5}oa)i@%>p6J)KhY|n@_Td7p_{{UuNZhTDt0A5*ID&tQz0a(I=T7!ZG&ND={L%f&2Sl*-7w~vUV9u3@Rs;kd}D^CeQ zY2Sh`2~49U0Pj@ISl|y=G$`hUE&d9YD?y^@zBk zY1F+mu8yF%4M|ag$0T#IounHm3o6{MRUK7DTwQ8+HsZLH+M95%FhbE?!Ri~lkjFnJ zT$p;oZVm?iIf{PZzxW)!SbFLtki*?>0&>Dt^k1^l|b6aoy+W&?&D3dChd_*CRq=&?a)v66`9Y@a(U-Jd?(qtt7Eo4bi?s zj1F+|WHfAQ*NLbG{KFI+9w5aF758jUU@e5YM!|8ZRwqxP%&=yN>;uw4>NqgnR;M`Wh+)≪kLWo3^iP1@6Ah7oY`K)r>EnwgGKzE{WxhK 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 p%Y`G!?BP`b^Zh?m73{`!|U3wM$; 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%0A?b*vM(_eEtLqF9Z%GBn4Wlt7iCz(~uIX!V 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 CEAvyce)B(3 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 GPygA~Y0C5f literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/DamagedHelmet/Default_normal.jpg b/interface/resources/meshes/DamagedHelmet/Default_normal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94ca20a2d131d5aa70f93f040707a80987cc4904 GIT binary patch literal 517757 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ξ8PiCyMJk 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%0A(m^M3YT*mdhMBXroZO>!Y*(5)5O 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 literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/defaultAvatar_full.fst b/interface/resources/meshes/defaultAvatar_full.fst index eb8e356196..ac2417ceb9 100644 --- a/interface/resources/meshes/defaultAvatar_full.fst +++ b/interface/resources/meshes/defaultAvatar_full.fst @@ -1,7 +1,7 @@ -name = mannequin +name = Avocado type = body+head scale = 1 -filename = mannequin/mannequin.baked.fbx +filename = DamagedHelmet/DamagedHelmet.gltf joint = jointEyeLeft = LeftEye joint = jointRightHand = RightHand joint = jointHead = Head diff --git a/libraries/fbx/src/GLTFReader.cpp b/libraries/fbx/src/GLTFReader.cpp new file mode 100644 index 0000000000..3ff369ba28 --- /dev/null +++ b/libraries/fbx/src/GLTFReader.cpp @@ -0,0 +1,1264 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + +#include "GLTFReader.h" +#include "FBXReader.h" + + +GLTFReader::GLTFReader() { + +} + +bool GLTFReader::getStringVal(const QJsonObject& object, const QString& fieldname, QString& value, QMap& defined) { + bool _defined = (object.contains(fieldname) && object[fieldname].isString()); + if (_defined) { + value = object[fieldname].toString(); + } + defined.insert(fieldname, _defined); + return _defined; +} + +bool GLTFReader::getBoolVal(const QJsonObject& object, const QString& fieldname, bool& value, QMap& defined) { + bool _defined = (object.contains(fieldname) && object[fieldname].isBool()); + if (_defined) { + value = object[fieldname].toBool(); + } + defined.insert(fieldname, _defined); + return _defined; +} + +bool GLTFReader::getIntVal(const QJsonObject& object, const QString& fieldname, int& value, QMap& defined) { + bool _defined = (object.contains(fieldname) && !object[fieldname].isNull()); + if (_defined) { + value = object[fieldname].toInt(); + } + defined.insert(fieldname, _defined); + return _defined; +} + +bool GLTFReader::getDoubleVal(const QJsonObject& object, const QString& fieldname, double& value, QMap& defined) { + bool _defined = (object.contains(fieldname) && object[fieldname].isDouble()); + if (_defined) { + value = object[fieldname].toDouble(); + } + defined.insert(fieldname, _defined); + return _defined; +} +bool GLTFReader::getObjectVal(const QJsonObject& object, const QString& fieldname, QJsonObject& value, QMap& defined) { + bool _defined = (object.contains(fieldname) && object[fieldname].isObject()); + if (_defined) { + value = object[fieldname].toObject(); + } + defined.insert(fieldname, _defined); + return _defined; +} + +bool GLTFReader::getIntArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined) { + bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); + if (_defined) { + QJsonArray arr = object[fieldname].toArray(); + foreach(const QJsonValue & v, arr) { + if (!v.isNull()) { + values.push_back(v.toInt()); + } + } + } + defined.insert(fieldname, _defined); + return _defined; +} + +bool GLTFReader::getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined) { + bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); + if (_defined) { + QJsonArray arr = object[fieldname].toArray(); + foreach(const QJsonValue & v, arr) { + if (v.isDouble()) { + values.push_back(v.toDouble()); + } + } + } + defined.insert(fieldname, _defined); + return _defined; +} + +bool GLTFReader::getObjectArrayVal(const QJsonObject& object, const QString& fieldname, QJsonArray& objects, QMap& defined) { + bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); + if (_defined) { + objects = object[fieldname].toArray(); + } + defined.insert(fieldname, _defined); + return _defined; +} + +int GLTFReader::getMeshPrimitiveRenderingMode(const QString& type) +{ + if (type == "POINTS") return GLTFMeshPrimitivesRenderingMode::POINTS; + if (type == "LINES") return GLTFMeshPrimitivesRenderingMode::LINES; + if (type == "LINE_LOOP") return GLTFMeshPrimitivesRenderingMode::LINE_LOOP; + if (type == "LINE_STRIP") return GLTFMeshPrimitivesRenderingMode::LINE_STRIP; + if (type == "TRIANGLES") return GLTFMeshPrimitivesRenderingMode::TRIANGLES; + if (type == "TRIANGLE_STRIP") return GLTFMeshPrimitivesRenderingMode::TRIANGLE_STRIP; + if (type == "TRIANGLE_FAN") return GLTFMeshPrimitivesRenderingMode::TRIANGLE_FAN; + return GLTFMeshPrimitivesRenderingMode::TRIANGLES; +} + +int GLTFReader::getAccessorType(const QString& type) +{ + if (type == "SCALAR") return GLTFAccessorType::SCALAR; + if (type == "VEC2") return GLTFAccessorType::VEC2; + if (type == "VEC3") return GLTFAccessorType::VEC3; + if (type == "VEC4") return GLTFAccessorType::VEC4; + if (type == "MAT2") return GLTFAccessorType::MAT2; + if (type == "MAT3") return GLTFAccessorType::MAT3; + if (type == "MAT4") return GLTFAccessorType::MAT4; + return GLTFAccessorType::SCALAR; +} + +int GLTFReader::getMaterialAlphaMode(const QString& type) +{ + if (type == "OPAQUE") return GLTFMaterialAlphaMode::OPAQUE; + if (type == "MASK") return GLTFMaterialAlphaMode::MASK; + if (type == "BLEND") return GLTFMaterialAlphaMode::BLEND; + return GLTFMaterialAlphaMode::OPAQUE; +} + +int GLTFReader::getCameraType(const QString& type) +{ + if (type == "orthographic") return GLTFCameraTypes::ORTHOGRAPHIC; + if (type == "perspective") return GLTFCameraTypes::PERSPECTIVE; + return GLTFCameraTypes::PERSPECTIVE; +} + +int GLTFReader::getImageMimeType(const QString& mime) +{ + if (mime == "image/jpeg") return GLTFImageMimetype::JPEG; + if (mime == "image/png") return GLTFImageMimetype::PNG; + return GLTFImageMimetype::JPEG; +} + +int GLTFReader::getAnimationSamplerInterpolation(const QString& interpolation) +{ + if (interpolation == "LINEAR") return GLTFAnimationSamplerInterpolation::LINEAR; + return GLTFAnimationSamplerInterpolation::LINEAR; +} + +bool GLTFReader::setAsset(const QJsonObject& object) { + QJsonObject jsAsset; + bool isAssetDefined = getObjectVal(object, "asset", jsAsset, _file.defined); + if (isAssetDefined) { + if (!getStringVal(jsAsset, "version", _file.asset.version, _file.asset.defined) || _file.asset.version != "2.0") { + return false; + } + getStringVal(jsAsset, "generator", _file.asset.generator, _file.asset.defined); + getStringVal(jsAsset, "copyright", _file.asset.copyright, _file.asset.defined); + } + return isAssetDefined; +} + +bool GLTFReader::addAccessor(const QJsonObject& object) { + GLTFAccessor accessor; + + getIntVal(object, "bufferView", accessor.bufferView, accessor.defined); + getIntVal(object, "byteOffset", accessor.byteOffset, accessor.defined); + getIntVal(object, "componentType", accessor.componentType, accessor.defined); + getIntVal(object, "count", accessor.count, accessor.defined); + getBoolVal(object, "normalized", accessor.normalized, accessor.defined); + QString type; + if (getStringVal(object, "type", type, accessor.defined)) { + accessor.type = getAccessorType(type); + } + getDoubleArrayVal(object, "max", accessor.max, accessor.defined); + getDoubleArrayVal(object, "min", accessor.min, accessor.defined); + + _file.accessors.push_back(accessor); + + return true; +} + +bool GLTFReader::addAnimation(const QJsonObject& object) { + GLTFAnimation animation; + + QJsonArray channels; + if (getObjectArrayVal(object, "channels", channels, animation.defined)) { + foreach(const QJsonValue & v, channels) { + if (v.isObject()) { + GLTFChannel channel; + getIntVal(v.toObject(), "sampler", channel.sampler, channel.defined); + QJsonObject jsChannel; + if (getObjectVal(v.toObject(), "target", jsChannel, channel.defined)) { + getIntVal(jsChannel, "node", channel.target.node, channel.target.defined); + getIntVal(jsChannel, "path", channel.target.path, channel.target.defined); + } + } + } + } + + QJsonArray samplers; + if (getObjectArrayVal(object, "samplers", samplers, animation.defined)) { + foreach(const QJsonValue & v, samplers) { + if (v.isObject()) { + GLTFAnimationSampler sampler; + getIntVal(v.toObject(), "input", sampler.input, sampler.defined); + getIntVal(v.toObject(), "output", sampler.input, sampler.defined); + QString interpolation; + if (getStringVal(v.toObject(), "interpolation", interpolation, sampler.defined)) { + sampler.interpolation = getAnimationSamplerInterpolation(interpolation); + } + } + } + } + + _file.animations.push_back(animation); + + return true; +} + +bool GLTFReader::addBufferView(const QJsonObject& object) { + GLTFBufferView bufferview; + + getIntVal(object, "buffer", bufferview.buffer, bufferview.defined); + getIntVal(object, "byteLength", bufferview.byteLength, bufferview.defined); + getIntVal(object, "byteOffset", bufferview.byteOffset, bufferview.defined); + getIntVal(object, "target", bufferview.target, bufferview.defined); + + _file.bufferviews.push_back(bufferview); + + return true; +} + +bool GLTFReader::addBuffer(const QJsonObject& object) { + GLTFBuffer buffer; + + getIntVal(object, "byteLength", buffer.byteLength, buffer.defined); + if (getStringVal(object, "uri", buffer.uri, buffer.defined)) { + if (!readBinary(buffer.uri, buffer.blob)) { + return false; + } + } + _file.buffers.push_back(buffer); + + return true; +} + +bool GLTFReader::addCamera(const QJsonObject& object) { + GLTFCamera camera; + + QJsonObject jsPerspective; + QJsonObject jsOrthographic; + QString type; + getStringVal(object, "name", camera.name, camera.defined); + if (getObjectVal(object, "perspective", jsPerspective, camera.defined)) { + getDoubleVal(jsPerspective, "aspectRatio", camera.perspective.aspectRatio, camera.perspective.defined); + getDoubleVal(jsPerspective, "yfov", camera.perspective.yfov, camera.perspective.defined); + getDoubleVal(jsPerspective, "zfar", camera.perspective.zfar, camera.perspective.defined); + getDoubleVal(jsPerspective, "znear", camera.perspective.znear, camera.perspective.defined); + camera.type = GLTFCameraTypes::PERSPECTIVE; + } + else if (getObjectVal(object, "orthographic", jsOrthographic, camera.defined)) { + getDoubleVal(jsOrthographic, "zfar", camera.orthographic.zfar, camera.orthographic.defined); + getDoubleVal(jsOrthographic, "znear", camera.orthographic.znear, camera.orthographic.defined); + getDoubleVal(jsOrthographic, "xmag", camera.orthographic.xmag, camera.orthographic.defined); + getDoubleVal(jsOrthographic, "ymag", camera.orthographic.ymag, camera.orthographic.defined); + camera.type = GLTFCameraTypes::ORTHOGRAPHIC; + } + else if (getStringVal(object, "type", type, camera.defined)) { + camera.type = getCameraType(type); + } + + _file.cameras.push_back(camera); + + return true; +} + +bool GLTFReader::addImage(const QJsonObject& object) { + GLTFImage image; + + QString mime; + getStringVal(object, "uri", image.uri, image.defined); + if (getStringVal(object, "mimeType", mime, image.defined)) { + image.mimeType = getImageMimeType(mime); + } + getIntVal(object, "bufferView", image.bufferView, image.defined); + + _file.images.push_back(image); + + return true; +} + +bool GLTFReader::getIndexFromObject(const QJsonObject& object, const QString& field, int& outidx, QMap& defined) { + QJsonObject subobject; + if (getObjectVal(object, field, subobject, defined)) { + return getIntVal(subobject, "index", outidx, QMap()); + } + return false; +} + +bool GLTFReader::addMaterial(const QJsonObject& object) { + GLTFMaterial material; + + getStringVal(object, "name", material.name, material.defined); + getDoubleArrayVal(object, "emissiveFactor", material.emissiveFactor, material.defined); + //getIntVal(object, "emissiveTexture", material.emissiveTexture, material.defined); + getIndexFromObject(object, "emissiveTexture", material.emissiveTexture, material.defined); + getIndexFromObject(object, "normalTexture", material.normalTexture, material.defined); + getIndexFromObject(object, "occlusionTexture", material.occlusionTexture, material.defined); + getBoolVal(object, "doubleSided", material.doubleSided, material.defined); + QString alphamode; + if (getStringVal(object, "alphaMode", alphamode, material.defined)) material.alphaMode = getMaterialAlphaMode(alphamode); + getDoubleVal(object, "alphaCutoff", material.alphaCutoff, material.defined); + QJsonObject jsMetallicRoughness; + if (getObjectVal(object, "pbrMetallicRoughness", jsMetallicRoughness, material.defined)) { + getDoubleArrayVal(jsMetallicRoughness, "baseColorFactor", material.pbrMetallicRoughness.baseColorFactor, material.pbrMetallicRoughness.defined); + getIndexFromObject(jsMetallicRoughness, "baseColorTexture", material.pbrMetallicRoughness.baseColorTexture, material.pbrMetallicRoughness.defined); + getDoubleVal(jsMetallicRoughness, "metallicFactor", material.pbrMetallicRoughness.metallicFactor, material.pbrMetallicRoughness.defined); + getDoubleVal(jsMetallicRoughness, "roughnessFactor", material.pbrMetallicRoughness.roughnessFactor, material.pbrMetallicRoughness.defined); + getIndexFromObject(jsMetallicRoughness, "metallicRoughnessTexture", material.pbrMetallicRoughness.metallicRoughnessTexture, material.pbrMetallicRoughness.defined); + } + _file.materials.push_back(material); + + return true; +} + +bool GLTFReader::addMesh(const QJsonObject& object) { + GLTFMesh mesh; + + getStringVal(object, "name", mesh.name, mesh.defined); + getDoubleArrayVal(object, "weights", mesh.weights, mesh.defined); + QJsonArray jsPrimitives; + object.keys(); + if (getObjectArrayVal(object, "primitives", jsPrimitives, mesh.defined)) { + foreach(const QJsonValue & prim, jsPrimitives) { + if (prim.isObject()) { + GLTFMeshPrimitive primitive; + QJsonObject jsPrimitive = prim.toObject(); + getIntVal(jsPrimitive, "mode", primitive.mode, primitive.defined); + getIntVal(jsPrimitive, "indices", primitive.indices, primitive.defined); + getIntVal(jsPrimitive, "material", primitive.material, primitive.defined); + + QJsonObject jsAttributes; + if (getObjectVal(jsPrimitive, "attributes", jsAttributes, primitive.defined)) { + QStringList attrKeys = jsAttributes.keys(); + foreach(const QString & attrKey, attrKeys) { + int attrVal; + getIntVal(jsAttributes, attrKey, attrVal, primitive.attributes.defined); + primitive.attributes.values.insert(attrKey, attrVal); + } + } + + QJsonArray jsTargets; + if (getObjectArrayVal(jsPrimitive, "targets", jsTargets, primitive.defined)) + { + foreach(const QJsonValue & tar, jsTargets) { + if (tar.isObject()) { + QJsonObject jsTarget = tar.toObject(); + QStringList tarKeys = jsTarget.keys(); + GLTFMeshPrimitiveAttr target; + foreach(const QString & tarKey, tarKeys) { + int tarVal; + getIntVal(jsAttributes, tarKey, tarVal, target.defined); + target.values.insert(tarKey, tarVal); + } + primitive.targets.push_back(target); + } + } + } + mesh.primitives.push_back(primitive); + } + } + + } + + _file.meshes.push_back(mesh); + + return true; +} + +bool GLTFReader::addNode(const QJsonObject& object) { + GLTFNode node; + + getStringVal(object, "name", node.name, node.defined); + getIntVal(object, "camera", node.camera, node.defined); + getIntVal(object, "mesh", node.mesh, node.defined); + getIntArrayVal(object, "children", node.children, node.defined); + getDoubleArrayVal(object, "translation", node.translation, node.defined); + getDoubleArrayVal(object, "rotation", node.rotation, node.defined); + getDoubleArrayVal(object, "scale", node.scale, node.defined); + getDoubleArrayVal(object, "matrix", node.matrix, node.defined); + getIntVal(object, "skin", node.skin, node.defined); + getStringVal(object, "jointName", node.jointName, node.defined); + getIntArrayVal(object, "skeletons", node.skeletons, node.defined); + + _file.nodes.push_back(node); + + return true; +} + +bool GLTFReader::addSampler(const QJsonObject& object) { + GLTFSampler sampler; + + getIntVal(object, "magFilter", sampler.magFilter, sampler.defined); + getIntVal(object, "minFilter", sampler.minFilter, sampler.defined); + getIntVal(object, "wrapS", sampler.wrapS, sampler.defined); + getIntVal(object, "wrapT", sampler.wrapT, sampler.defined); + + _file.samplers.push_back(sampler); + + return true; + +} + +bool GLTFReader::addScene(const QJsonObject& object) { + GLTFScene scene; + + getStringVal(object, "name", scene.name, scene.defined); + getIntArrayVal(object, "nodes", scene.nodes, scene.defined); + + _file.scenes.push_back(scene); + return true; +} + +bool GLTFReader::addSkin(const QJsonObject& object) { + GLTFSkin skin; + + getIntVal(object, "inverseBindMatrices", skin.inverseBindMatrices, skin.defined); + getIntVal(object, "skeleton", skin.skeleton, skin.defined); + getIntArrayVal(object, "joints", skin.joints, skin.defined); + + _file.skins.push_back(skin); + + return true; +} + +bool GLTFReader::addTexture(const QJsonObject& object) { + GLTFTexture texture; + getIntVal(object, "sampler", texture.sampler, texture.defined); + getIntVal(object, "source", texture.source, texture.defined); + + _file.textures.push_back(texture); + + return true; +} + +bool GLTFReader::parseGLTF(const QByteArray& model) { + PROFILE_RANGE_EX(resource_parse, __FUNCTION__, 0xffff0000, nullptr); + + QJsonDocument d = QJsonDocument::fromJson(model); + QJsonObject jsFile = d.object(); + + bool isvalid = setAsset(jsFile); + if (isvalid) { + QJsonArray accessors; + if (getObjectArrayVal(jsFile, "accessors", accessors, _file.defined)) { + foreach(const QJsonValue & accVal, accessors) { + if (accVal.isObject()) addAccessor(accVal.toObject()); + } + } + + QJsonArray animations; + if (getObjectArrayVal(jsFile, "animations", animations, _file.defined)) { + foreach(const QJsonValue & animVal, accessors) { + if (animVal.isObject()) addAnimation(animVal.toObject()); + } + } + + QJsonArray bufferViews; + if (getObjectArrayVal(jsFile, "bufferViews", bufferViews, _file.defined)) { + foreach(const QJsonValue & bufviewVal, bufferViews) { + if (bufviewVal.isObject()) addBufferView(bufviewVal.toObject()); + } + } + + QJsonArray buffers; + if (getObjectArrayVal(jsFile, "buffers", buffers, _file.defined)) { + foreach(const QJsonValue & bufVal, buffers) { + if (bufVal.isObject()) addBuffer(bufVal.toObject()); + } + } + + QJsonArray cameras; + if (getObjectArrayVal(jsFile, "cameras", cameras, _file.defined)) { + foreach(const QJsonValue & camVal, cameras) { + if (camVal.isObject()) addCamera(camVal.toObject()); + } + } + + QJsonArray images; + if (getObjectArrayVal(jsFile, "images", images, _file.defined)) { + foreach(const QJsonValue & imgVal, images) { + if (imgVal.isObject()) addImage(imgVal.toObject()); + } + } + + QJsonArray materials; + if (getObjectArrayVal(jsFile, "materials", materials, _file.defined)) { + foreach(const QJsonValue & matVal, materials) { + if (matVal.isObject()) addMaterial(matVal.toObject()); + } + } + + QJsonArray meshes; + if (getObjectArrayVal(jsFile, "meshes", meshes, _file.defined)) { + foreach(const QJsonValue & meshVal, meshes) { + if (meshVal.isObject()) addMesh(meshVal.toObject()); + } + } + + QJsonArray nodes; + if (getObjectArrayVal(jsFile, "nodes", nodes, _file.defined)) { + foreach(const QJsonValue & nodeVal, nodes) { + if (nodeVal.isObject()) addNode(nodeVal.toObject()); + } + } + + QJsonArray samplers; + if (getObjectArrayVal(jsFile, "samplers", samplers, _file.defined)) { + foreach(const QJsonValue & samVal, samplers) { + if (samVal.isObject()) addSampler(samVal.toObject()); + } + } + + QJsonArray scenes; + if (getObjectArrayVal(jsFile, "scenes", scenes, _file.defined)) { + foreach(const QJsonValue & sceneVal, scenes) { + if (sceneVal.isObject()) addScene(sceneVal.toObject()); + } + } + + QJsonArray skins; + if (getObjectArrayVal(jsFile, "skins", skins, _file.defined)) { + foreach(const QJsonValue & skinVal, skins) { + if (skinVal.isObject()) addSkin(skinVal.toObject()); + } + } + + QJsonArray textures; + if (getObjectArrayVal(jsFile, "textures", textures, _file.defined)) { + foreach(const QJsonValue & texVal, textures) { + if (texVal.isObject()) addTexture(texVal.toObject()); + } + } + } + else { + qCDebug(modelformat) << "Error parsing GLTF file."; + return false; + } + return true; +} + +glm::mat4 GLTFReader::getModelTransform(const GLTFNode& node) { + glm::mat4 tmat = glm::mat4(1.0); + + if (node.defined["matrix"] && node.matrix.size() == 16) { + tmat = glm::mat4(node.matrix[0], node.matrix[1], node.matrix[2], node.matrix[3], + node.matrix[4], node.matrix[5], node.matrix[6], node.matrix[7], + node.matrix[8], node.matrix[9], node.matrix[10], node.matrix[11], + node.matrix[12], node.matrix[13], node.matrix[14], node.matrix[15]); + } + else { + + if (node.defined["rotation"] && node.rotation.size() == 4) { + glm::quat rotquat = glm::quat(node.rotation[3], node.rotation[0], node.rotation[1], node.rotation[2]); //quat(x,y,z,w) to quat(w,x,y,z) + tmat = glm::mat4_cast(rotquat) * tmat; + } + + if (node.defined["scale"] && node.scale.size() == 3) { + glm::vec3 scale = glm::vec3(node.scale[0], node.scale[1], node.scale[2]); + glm::mat4 s = glm::mat4(1.0); + s = glm::scale(s, scale); + tmat = s * tmat; + } + + if (node.defined["translation"] && node.translation.size() == 3) { + glm::vec3 trans = glm::vec3(node.translation[0], node.translation[1], node.translation[2]); + glm::mat4 t = glm::mat4(1.0); + t = glm::translate(t, trans); + tmat = t * tmat; + } + } + return tmat; +} + +bool GLTFReader::buildGeometry(FBXGeometry& geometry, const QUrl& url) { + + //Build dependencies + QVector> nodeDependencies(_file.nodes.size()); + int nodecount = 0; + foreach(auto &node, _file.nodes) { + //nodes_transforms.push_back(getModelTransform(node)); + foreach(int child, node.children) nodeDependencies[child].push_back(nodecount); + nodecount++; + } + + nodecount = 0; + foreach(auto &node, _file.nodes) { + _file.nodes[nodecount].transforms.push_back(getModelTransform(node)); // collect node transform + if (nodeDependencies[nodecount].size() == 1) { + int parentidx = nodeDependencies[nodecount][0]; + while (true) { // iterate parents + _file.nodes[nodecount].transforms.push_back(getModelTransform(_file.nodes[parentidx])); // collect parents transforms + if (nodeDependencies[parentidx].size() == 1) parentidx = nodeDependencies[parentidx][0]; + else break; + } + } + + nodecount++; + } + + //Build default joints + geometry.joints.resize(1); + geometry.joints[0].isFree = false; + geometry.joints[0].parentIndex = -1; + geometry.joints[0].distanceToParent = 0; + geometry.joints[0].translation = glm::vec3(0, 0, 0); + geometry.joints[0].rotationMin = glm::vec3(0, 0, 0); + geometry.joints[0].rotationMax = glm::vec3(0, 0, 0); + geometry.joints[0].name = "OBJ"; + geometry.joints[0].isSkeletonJoint = true; + + geometry.jointIndices["x"] = 1; + + //Build materials + QVector materialIDs; + QString unknown = "Default"; + int ukcount = 0; + foreach(auto material, _file.materials) { + QString mid = (material.defined["name"]) ? material.name : unknown + ukcount++; + materialIDs.push_back(mid); + } + + for (int i = 0; i < materialIDs.size(); i++) { + QString& matid = materialIDs[i]; + geometry.materials[matid] = FBXMaterial(); + FBXMaterial& fbxMaterial = geometry.materials[matid]; + fbxMaterial._material = std::make_shared(); + setFBXMaterial(fbxMaterial, _file.materials[i]); + } + + + + nodecount = 0; + // Build meshes + foreach(auto &node, _file.nodes) { + + if (node.defined["mesh"]) { + qCDebug(modelformat) << "node_transforms" << node.transforms; + foreach(auto &primitive, _file.meshes[node.mesh].primitives) { + geometry.meshes.append(FBXMesh()); + FBXMesh& mesh = geometry.meshes[geometry.meshes.size() - 1]; + FBXCluster cluster; + cluster.jointIndex = 0; + cluster.inverseBindMatrix = glm::mat4(1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1); + mesh.clusters.append(cluster); + + FBXMeshPart part = FBXMeshPart(); + + int indicesAccessorIdx = primitive.indices; + + GLTFAccessor& indicesAccessor = _file.accessors[indicesAccessorIdx]; + GLTFBufferView& indicesBufferview = _file.bufferviews[indicesAccessor.bufferView]; + GLTFBuffer& indicesBuffer = _file.buffers[indicesBufferview.buffer]; + + int indicesAccBoffset = indicesAccessor.defined["byteOffset"] ? indicesAccessor.byteOffset : 0; + + QVector raw_indices; + QVector raw_vertices; + QVector raw_normals; + + addArrayOfType(indicesBuffer.blob, + indicesBufferview.byteOffset + indicesAccBoffset, + indicesBufferview.byteLength, + part.triangleIndices, + indicesAccessor.type, + indicesAccessor.componentType); + + QList keys = primitive.attributes.values.keys(); + + foreach(auto &key, keys) { + int accessorIdx = primitive.attributes.values[key]; + + GLTFAccessor& accessor = _file.accessors[accessorIdx]; + GLTFBufferView& bufferview = _file.bufferviews[accessor.bufferView]; + GLTFBuffer& buffer = _file.buffers[bufferview.buffer]; + + int accBoffset = accessor.defined["byteOffset"] ? accessor.byteOffset : 0; + if (key == "POSITION") { + QVector vertices; + addArrayOfType(buffer.blob, + bufferview.byteOffset + accBoffset, + bufferview.byteLength, vertices, + accessor.type, + accessor.componentType); + for (int n = 0; n < vertices.size(); n = n + 3) { + mesh.vertices.push_back(glm::vec3(vertices[n], vertices[n + 1], vertices[n + 2])); + } + } + else if (key == "NORMAL") { + QVector normals; + addArrayOfType(buffer.blob, + bufferview.byteOffset + accBoffset, + bufferview.byteLength, + normals, + accessor.type, + accessor.componentType); + for (int n = 0; n < normals.size(); n = n + 3) { + mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); + } + } + else if (key == "TEXCOORD_0") { + QVector texcoords; + addArrayOfType(buffer.blob, + bufferview.byteOffset + accBoffset, + bufferview.byteLength, + texcoords, + accessor.type, + accessor.componentType); + for (int n = 0; n < texcoords.size(); n = n + 2) { + mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); + } + } + else if (key == "TEXCOORD_1") { + QVector texcoords; + addArrayOfType(buffer.blob, + bufferview.byteOffset + accBoffset, + bufferview.byteLength, + texcoords, + accessor.type, + accessor.componentType); + for (int n = 0; n < texcoords.size(); n = n + 2) { + mesh.texCoords1.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); + } + } + + } + + if (primitive.defined["material"]) part.materialID = materialIDs[primitive.material]; + mesh.parts.push_back(part); + + // populate the texture coordenates if they don't exist + if (mesh.texCoords.size() == 0) for (int i = 0; i < part.triangleIndices.size(); i++) mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); + mesh.meshExtents.reset(); + foreach(const glm::vec3& vertex, mesh.vertices) { + mesh.meshExtents.addPoint(vertex); + geometry.meshExtents.addPoint(vertex); + } + + // since mesh.modelTransform seems to not have any effect I apply the transformation the model + for (int h = 0; h < mesh.vertices.size(); h++) { + glm::vec4 ver = glm::vec4(mesh.vertices[h], 1); + if (node.transforms.size() > 0) { + ver = node.transforms[0] * ver; // for model dependency should multiply also by parents transforms? + mesh.vertices[h] = glm::vec3(ver[0], ver[1], ver[2]); + } + } + + mesh.meshIndex = geometry.meshes.size(); + FBXReader::buildModelMesh(mesh, url.toString()); + } + + } + nodecount++; + } + + + return true; +} + +FBXGeometry* GLTFReader::readGLTF(QByteArray& model, const QVariantHash& mapping, const QUrl& url, bool loadLightmaps, float lightmapLevel) { + _url = url; + + parseGLTF(model); + //_file.dump(); + FBXGeometry* geometryPtr = new FBXGeometry(); + FBXGeometry& geometry = *geometryPtr; + + buildGeometry(geometry, url); + + //fbxDebugDump(geometry); + return geometryPtr; + +} + +bool GLTFReader::readBinary(const QString& url, QByteArray& outdata) { + QUrl binaryUrl = _url.resolved(QUrl(url).fileName()); + qCDebug(modelformat) << "binaryUrl: " << binaryUrl << " OriginalUrl: " << _url; + bool success; + std::tie(success, outdata) = requestData(binaryUrl); + + return success; +} + +bool GLTFReader::doesResourceExist(const QString& url) { + if (_url.isEmpty()) { + return false; + } + QUrl candidateUrl = _url.resolved(QUrl(url).fileName()); + return DependencyManager::get()->resourceExists(candidateUrl); +} + +std::tuple GLTFReader::requestData(QUrl& url) { + auto request = DependencyManager::get()->createResourceRequest(nullptr, url); + + if (!request) { + return std::make_tuple(false, QByteArray()); + } + + QEventLoop loop; + QObject::connect(request, &ResourceRequest::finished, &loop, &QEventLoop::quit); + request->send(); + loop.exec(); + + if (request->getResult() == ResourceRequest::Success) { + return std::make_tuple(true, request->getData()); + } + else { + return std::make_tuple(false, QByteArray()); + } +} + + +QNetworkReply* GLTFReader::request(QUrl& url, bool isTest) { + if (!qApp) { + return nullptr; + } + bool aboutToQuit{ false }; + auto connection = QObject::connect(qApp, &QCoreApplication::aboutToQuit, [&] { + aboutToQuit = true; + }); + QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); + QNetworkRequest netRequest(url); + netRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); + QNetworkReply* netReply = isTest ? networkAccessManager.head(netRequest) : networkAccessManager.get(netRequest); + if (!qApp || aboutToQuit) { + netReply->deleteLater(); + return nullptr; + } + QEventLoop loop; // Create an event loop that will quit when we get the finished signal + QObject::connect(netReply, SIGNAL(finished()), &loop, SLOT(quit())); + loop.exec(); // Nothing is going to happen on this whole run thread until we get this + + QObject::disconnect(connection); + return netReply; // trying to sync later on. +} + +FBXTexture GLTFReader::getFBXTexture(const GLTFTexture& texture) { + FBXTexture fbxtex = FBXTexture(); + fbxtex.texcoordSet = 0; + + if (texture.defined["source"]) { + QString fname = QUrl(_file.images[texture.source].uri).fileName(); + QUrl textureUrl = _url.resolved(fname); + qCDebug(modelformat) << "fname: " << fname; + qCDebug(modelformat) << "textureUrl: " << textureUrl; + qCDebug(modelformat) << "Url: " << _url; + fbxtex.name = fname; + fbxtex.filename = textureUrl.toEncoded(); + } + return fbxtex; +} + +void GLTFReader::setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& material) { + + + if (material.defined["name"]) fbxmat.name = fbxmat.materialID = material.name; + + if (material.defined["emissiveFactor"] && material.emissiveFactor.size() == 3) { + glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], material.emissiveFactor[1], material.emissiveFactor[2]); + fbxmat._material->setEmissive(emissive); + } + + if (material.defined["emissiveTexture"]) { + fbxmat.emissiveTexture = getFBXTexture(_file.textures[material.emissiveTexture]); + fbxmat.useEmissiveMap = true; + } + + if (material.defined["normalTexture"]) { + fbxmat.normalTexture = getFBXTexture(_file.textures[material.normalTexture]); + fbxmat.useNormalMap = true; + } + + if (material.defined["occlusionTexture"]) { + fbxmat.occlusionTexture = getFBXTexture(_file.textures[material.occlusionTexture]); + fbxmat.useOcclusionMap = true; + } + + if (material.defined["pbrMetallicRoughness"]) { + fbxmat.isPBSMaterial = true; + + if (material.pbrMetallicRoughness.defined["metallicFactor"]) fbxmat.metallic = material.pbrMetallicRoughness.metallicFactor; + if (material.pbrMetallicRoughness.defined["baseColorTexture"]) { + fbxmat.opacityTexture = getFBXTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); + fbxmat.albedoTexture = getFBXTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); + fbxmat.useAlbedoMap = true; + fbxmat.metallicTexture = getFBXTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); + fbxmat.useMetallicMap = true; + } + if (material.pbrMetallicRoughness.defined["metallicRoughnessTexture"]) { + fbxmat.roughnessTexture = getFBXTexture(_file.textures[material.pbrMetallicRoughness.metallicRoughnessTexture]); + fbxmat.useRoughnessMap = true; + + } + if (material.pbrMetallicRoughness.defined["roughnessFactor"]) fbxmat._material->setRoughness(material.pbrMetallicRoughness.roughnessFactor); + if (material.pbrMetallicRoughness.defined["baseColorFactor"] && material.pbrMetallicRoughness.baseColorFactor.size() == 4) { + glm::vec3 dcolor = glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], material.pbrMetallicRoughness.baseColorFactor[1], material.pbrMetallicRoughness.baseColorFactor[2]); + fbxmat.diffuseColor = dcolor; + fbxmat._material->setAlbedo(dcolor); + fbxmat._material->setOpacity(material.pbrMetallicRoughness.baseColorFactor[3]); + } + } + +} + +template +bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType) { + + QDataStream blobstream(bin); + blobstream.setByteOrder(QDataStream::LittleEndian); + blobstream.setVersion(QDataStream::Qt_5_9); + blobstream.setFloatingPointPrecision(QDataStream::FloatingPointPrecision::SinglePrecision); + + int vsize = byteLength / sizeof(T); + + qCDebug(modelformat) << "size1: " << vsize; + int dataskipped = blobstream.skipRawData(byteOffset); + qCDebug(modelformat) << "dataskipped: " << dataskipped; + + + while (outarray.size() < vsize) { + T value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14, value15, value16; + if (accessorType == GLTFAccessorType::SCALAR) { + + blobstream >> value1; + + outarray.push_back(value1); + } + else if (accessorType == GLTFAccessorType::VEC2) { + + blobstream >> value1; + blobstream >> value2; + + outarray.push_back(value1); + outarray.push_back(value2); + } + else if (accessorType == GLTFAccessorType::VEC3) { + + blobstream >> value1; + blobstream >> value2; + blobstream >> value3; + + outarray.push_back(value1); + outarray.push_back(value2); + outarray.push_back(value3); + } + else if (accessorType == GLTFAccessorType::VEC4 || accessorType == GLTFAccessorType::MAT2) { + + blobstream >> value1; + blobstream >> value2; + blobstream >> value3; + blobstream >> value4; + + outarray.push_back(value1); + outarray.push_back(value2); + outarray.push_back(value3); + outarray.push_back(value4); + } + else if (accessorType == GLTFAccessorType::MAT3) { + + blobstream >> value1; + blobstream >> value2; + blobstream >> value3; + blobstream >> value4; + blobstream >> value5; + blobstream >> value6; + blobstream >> value7; + blobstream >> value8; + blobstream >> value9; + + outarray.push_back(value1); + outarray.push_back(value2); + outarray.push_back(value3); + outarray.push_back(value4); + outarray.push_back(value5); + outarray.push_back(value6); + outarray.push_back(value7); + outarray.push_back(value8); + outarray.push_back(value9); + } + else if (accessorType == GLTFAccessorType::MAT4) { + + blobstream >> value1; + blobstream >> value2; + blobstream >> value3; + blobstream >> value4; + blobstream >> value5; + blobstream >> value6; + blobstream >> value7; + blobstream >> value8; + blobstream >> value9; + blobstream >> value10; + blobstream >> value11; + blobstream >> value12; + blobstream >> value13; + blobstream >> value14; + blobstream >> value15; + blobstream >> value16; + + outarray.push_back(value1); + outarray.push_back(value2); + outarray.push_back(value3); + outarray.push_back(value4); + outarray.push_back(value5); + outarray.push_back(value6); + outarray.push_back(value7); + outarray.push_back(value8); + outarray.push_back(value9); + outarray.push_back(value10); + outarray.push_back(value11); + outarray.push_back(value12); + outarray.push_back(value13); + outarray.push_back(value14); + outarray.push_back(value15); + outarray.push_back(value16); + + } + } + blobstream.unsetDevice(); + return true; +} +template +bool GLTFReader::addArrayOfType(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType, int componentType) { + + switch (componentType) { + case GLTFAccessorComponentType::BYTE: {} + case GLTFAccessorComponentType::UNSIGNED_BYTE: { + readArray(bin, byteOffset, byteLength, outarray, accessorType); + break; + } + case GLTFAccessorComponentType::SHORT: { + readArray(bin, byteOffset, byteLength, outarray, accessorType); + break; + } + case GLTFAccessorComponentType::UNSIGNED_INT: { + readArray(bin, byteOffset, byteLength, outarray, accessorType); + break; + } + case GLTFAccessorComponentType::UNSIGNED_SHORT: { + readArray(bin, byteOffset, byteLength, outarray, accessorType); + break; + } + case GLTFAccessorComponentType::FLOAT: { + readArray(bin, byteOffset, byteLength, outarray, accessorType); + break; + } + } + return true; +} + +void GLTFReader::retriangulate(const QVector& inIndices, const QVector& in_vertices, const QVector& in_normals, + QVector& outIndices, QVector& out_vertices, QVector& out_normals) { + for (int i = 0; i < inIndices.size(); i = i + 3) { + + int idx1 = inIndices[i]; + int idx2 = inIndices[i+1]; + int idx3 = inIndices[i+2]; + + out_vertices.push_back(in_vertices[idx1]); + out_vertices.push_back(in_vertices[idx2]); + out_vertices.push_back(in_vertices[idx3]); + + out_normals.push_back(in_normals[idx1]); + out_normals.push_back(in_normals[idx2]); + out_normals.push_back(in_normals[idx3]); + + outIndices.push_back(i); + outIndices.push_back(i+1); + outIndices.push_back(i+2); + } +} + +void GLTFReader::fbxDebugDump(const FBXGeometry& fbxgeo) { + qCDebug(modelformat) << "---------------- fbxGeometry ----------------"; + qCDebug(modelformat) << " hasSkeletonJoints =" << fbxgeo.hasSkeletonJoints; + qCDebug(modelformat) << " offset =" << fbxgeo.offset; + + qCDebug(modelformat) << " leftEyeJointIndex =" << fbxgeo.leftEyeJointIndex; + qCDebug(modelformat) << " rightEyeJointIndex =" << fbxgeo.rightEyeJointIndex; + qCDebug(modelformat) << " neckJointIndex =" << fbxgeo.neckJointIndex; + qCDebug(modelformat) << " rootJointIndex =" << fbxgeo.rootJointIndex; + qCDebug(modelformat) << " leanJointIndex =" << fbxgeo.leanJointIndex; + qCDebug(modelformat) << " headJointIndex =" << fbxgeo.headJointIndex; + qCDebug(modelformat) << " leftHandJointIndex" << fbxgeo.leftHandJointIndex; + qCDebug(modelformat) << " rightHandJointIndex" << fbxgeo.rightHandJointIndex; + qCDebug(modelformat) << " leftToeJointIndex" << fbxgeo.leftToeJointIndex; + qCDebug(modelformat) << " rightToeJointIndex" << fbxgeo.rightToeJointIndex; + qCDebug(modelformat) << " leftEyeSize = " << fbxgeo.leftEyeSize; + qCDebug(modelformat) << " rightEyeSize = " << fbxgeo.rightEyeSize; + + qCDebug(modelformat) << " palmDirection = " << fbxgeo.palmDirection; + + qCDebug(modelformat) << " neckPivot = " << fbxgeo.neckPivot; + + qCDebug(modelformat) << " bindExtents.size() = " << fbxgeo.bindExtents.size(); + qCDebug(modelformat) << " meshExtents.size() = " << fbxgeo.meshExtents.size(); + + qCDebug(modelformat) << " jointIndices.size() =" << fbxgeo.jointIndices.size(); + qCDebug(modelformat) << " joints.count() =" << fbxgeo.joints.count(); + qCDebug(modelformat) << "---------------- Meshes ----------------"; + qCDebug(modelformat) << " meshes.count() =" << fbxgeo.meshes.count(); + qCDebug(modelformat) << " blendshapeChannelNames = " << fbxgeo.blendshapeChannelNames; + foreach(FBXMesh mesh, fbxgeo.meshes) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " meshpointer =" << mesh._mesh.get(); + qCDebug(modelformat) << " meshindex =" << mesh.meshIndex; + qCDebug(modelformat) << " vertices.count() =" << mesh.vertices.size(); + qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); + qCDebug(modelformat) << " normals.count() =" << mesh.normals.size(); + qCDebug(modelformat) << " tangents.count() =" << mesh.tangents.size(); + qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); + qCDebug(modelformat) << " texCoords.count() =" << mesh.texCoords.count(); + qCDebug(modelformat) << " texCoords1.count() =" << mesh.texCoords1.count(); + qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); + qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); + qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; + qCDebug(modelformat) << " parts.count() =" << mesh.parts.count(); + qCDebug(modelformat) << "---------------- Meshes (blendshapes)--------"; + foreach(FBXBlendshape bshape, mesh.blendshapes) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " bshape.indices.count() =" << bshape.indices.count(); + qCDebug(modelformat) << " bshape.vertices.count() =" << bshape.vertices.count(); + qCDebug(modelformat) << " bshape.normals.count() =" << bshape.normals.count(); + qCDebug(modelformat) << "\n"; + } + qCDebug(modelformat) << "---------------- Meshes (meshparts)--------"; + foreach(FBXMeshPart meshPart, mesh.parts) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " quadIndices.count() =" << meshPart.quadIndices.count(); + qCDebug(modelformat) << " triangleIndices.count() =" << meshPart.triangleIndices.count(); + qCDebug(modelformat) << " materialID =" << meshPart.materialID; + qCDebug(modelformat) << "\n"; + + } + qCDebug(modelformat) << "---------------- Meshes (clusters)--------"; + qCDebug(modelformat) << " clusters.count() =" << mesh.clusters.count(); + foreach(FBXCluster cluster, mesh.clusters) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; + qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; + qCDebug(modelformat) << "\n"; + } + qCDebug(modelformat) << "\n"; + } + qCDebug(modelformat) << "---------------- AnimationFrames ----------------"; + foreach(FBXAnimationFrame anim, fbxgeo.animationFrames) { + qCDebug(modelformat) << " anim.translations = " << anim.translations; + qCDebug(modelformat) << " anim.rotations = " << anim.rotations; + } + QList mitomona_keys = fbxgeo.meshIndicesToModelNames.keys(); + foreach(int key, mitomona_keys) { + qCDebug(modelformat) << " meshIndicesToModelNames key =" << key << " val =" << fbxgeo.meshIndicesToModelNames[key]; + } + + qCDebug(modelformat) << "---------------- Materials ----------------"; + + foreach(FBXMaterial mat, fbxgeo.materials) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " mat.materialID =" << mat.materialID; + qCDebug(modelformat) << " diffuseColor =" << mat.diffuseColor; + qCDebug(modelformat) << " diffuseFactor =" << mat.diffuseFactor; + qCDebug(modelformat) << " specularColor =" << mat.specularColor; + qCDebug(modelformat) << " specularFactor =" << mat.specularFactor; + qCDebug(modelformat) << " emissiveColor =" << mat.emissiveColor; + qCDebug(modelformat) << " emissiveFactor =" << mat.emissiveFactor; + qCDebug(modelformat) << " shininess =" << mat.shininess; + qCDebug(modelformat) << " opacity =" << mat.opacity; + qCDebug(modelformat) << " metallic =" << mat.metallic; + qCDebug(modelformat) << " roughness =" << mat.roughness; + qCDebug(modelformat) << " emissiveIntensity =" << mat.emissiveIntensity; + qCDebug(modelformat) << " ambientFactor =" << mat.ambientFactor; + + qCDebug(modelformat) << " materialID =" << mat.materialID; + qCDebug(modelformat) << " name =" << mat.name; + qCDebug(modelformat) << " shadingModel =" << mat.shadingModel; + qCDebug(modelformat) << " _material =" << mat._material.get(); + + qCDebug(modelformat) << " normalTexture =" << mat.normalTexture.filename; + qCDebug(modelformat) << " albedoTexture =" << mat.albedoTexture.filename; + qCDebug(modelformat) << " opacityTexture =" << mat.opacityTexture.filename; + qCDebug(modelformat) << " glossTexture =" << mat.glossTexture.filename; + qCDebug(modelformat) << " roughnessTexture =" << mat.roughnessTexture.filename; + qCDebug(modelformat) << " specularTexture =" << mat.specularTexture.filename; + qCDebug(modelformat) << " metallicTexture =" << mat.metallicTexture.filename; + qCDebug(modelformat) << " emissiveTexture =" << mat.emissiveTexture.filename; + qCDebug(modelformat) << " occlusionTexture =" << mat.occlusionTexture.filename; + qCDebug(modelformat) << " scatteringTexture =" << mat.scatteringTexture.filename; + qCDebug(modelformat) << " lightmapTexture =" << mat.lightmapTexture.filename; + + qCDebug(modelformat) << " lightmapParams =" << mat.lightmapParams; + + qCDebug(modelformat) << " isPBSMaterial =" << mat.isPBSMaterial; + qCDebug(modelformat) << " useNormalMap =" << mat.useNormalMap; + qCDebug(modelformat) << " useAlbedoMap =" << mat.useAlbedoMap; + qCDebug(modelformat) << " useOpacityMap =" << mat.useOpacityMap; + qCDebug(modelformat) << " useRoughnessMap =" << mat.useRoughnessMap; + qCDebug(modelformat) << " useSpecularMap =" << mat.useSpecularMap; + qCDebug(modelformat) << " useMetallicMap =" << mat.useMetallicMap; + qCDebug(modelformat) << " useEmissiveMap =" << mat.useEmissiveMap; + qCDebug(modelformat) << " useOcclusionMap =" << mat.useOcclusionMap; + qCDebug(modelformat) << "\n"; + } + + qCDebug(modelformat) << "---------------- Joints ----------------"; + + foreach(FBXJoint joint, fbxgeo.joints) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " shapeInfo.avgPoint =" << joint.shapeInfo.avgPoint; + qCDebug(modelformat) << " shapeInfo.debugLines =" << joint.shapeInfo.debugLines; + qCDebug(modelformat) << " shapeInfo.dots =" << joint.shapeInfo.dots; + qCDebug(modelformat) << " shapeInfo.points =" << joint.shapeInfo.points; + + qCDebug(modelformat) << " isFree =" << joint.isFree; + qCDebug(modelformat) << " freeLineage" << joint.freeLineage; + qCDebug(modelformat) << " parentIndex" << joint.parentIndex; + qCDebug(modelformat) << " distanceToParent" << joint.distanceToParent; + qCDebug(modelformat) << " translation" << joint.translation; + qCDebug(modelformat) << " preTransform" << joint.preTransform; + qCDebug(modelformat) << " preRotation" << joint.preRotation; + qCDebug(modelformat) << " rotation" << joint.rotation; + qCDebug(modelformat) << " postRotation" << joint.postRotation; + qCDebug(modelformat) << " postTransform" << joint.postTransform; + qCDebug(modelformat) << " transform" << joint.transform; + qCDebug(modelformat) << " rotationMin" << joint.rotationMin; + qCDebug(modelformat) << " rotationMax" << joint.rotationMax; + qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; + qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; + qCDebug(modelformat) << " bindTransform" << joint.bindTransform; + qCDebug(modelformat) << " name" << joint.name; + qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.hasGeometricOffset; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricTranslation; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricRotation; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricScaling; + qCDebug(modelformat) << "\n"; + } + + qCDebug(modelformat) << "\n"; +} \ No newline at end of file diff --git a/libraries/fbx/src/GLTFReader.h b/libraries/fbx/src/GLTFReader.h new file mode 100644 index 0000000000..1a23786023 --- /dev/null +++ b/libraries/fbx/src/GLTFReader.h @@ -0,0 +1,582 @@ +// +// GLTFReader.h +// interface/src/renderer +// +// Created by Luis Cuenca on 8/30/17. +// 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 +// + +#ifndef hifi_GLTFReader_h +#define hifi_GLTFReader_h + +#include "FBXReader.h" +#include +#include "ModelFormatLogging.h" +#include + +struct GLTFAsset { + QString generator; + QString version; //required + QString copyright; + QMap defined; + void dump() { + if (defined["generator"]) qCDebug(modelformat) << "generator: " << generator; + if (defined["version"]) qCDebug(modelformat) << "version: " << version; + if (defined["copyright"]) qCDebug(modelformat) << "copyright: " << copyright; + } +}; + +struct GLTFNode { + QString name; + int camera; + int mesh; + QVector children; + QVector translation; + QVector rotation; + QVector scale; + QVector matrix; + QVector transforms; + int skin; + QVector skeletons; + QString jointName; + QMap defined; + void dump() { + if (defined["name"]) qCDebug(modelformat) << "name: " << name; + if (defined["camera"]) qCDebug(modelformat) << "camera: " << camera; + if (defined["mesh"]) qCDebug(modelformat) << "mesh: " << mesh; + if (defined["skin"]) qCDebug(modelformat) << "skin: " << skin; + if (defined["jointName"]) qCDebug(modelformat) << "jointName: " << jointName; + if (defined["children"]) qCDebug(modelformat) << "children: " << children; + if (defined["translation"]) qCDebug(modelformat) << "translation: " << translation; + if (defined["rotation"]) qCDebug(modelformat) << "rotation: " << rotation; + if (defined["scale"]) qCDebug(modelformat) << "scale: " << scale; + if (defined["matrix"]) qCDebug(modelformat) << "matrix: " << matrix; + if (defined["skeletons"]) qCDebug(modelformat) << "skeletons: " << skeletons; + } +}; + +// Meshes + +struct GLTFMeshPrimitivesTarget { + int normal; + int position; + int tangent; + QMap defined; + void dump() { + if (defined["normal"]) qCDebug(modelformat) << "normal: " << normal; + if (defined["position"]) qCDebug(modelformat) << "position: " << position; + if (defined["tangent"]) qCDebug(modelformat) << "tangent: " << tangent; + } +}; + +namespace GLTFMeshPrimitivesRenderingMode { + enum Values { + POINTS = 0, + LINES, + LINE_LOOP, + LINE_STRIP, + TRIANGLES, + TRIANGLE_STRIP, + TRIANGLE_FAN + }; +} + +struct GLTFMeshPrimitiveAttr { + QMap values; + QMap defined; + void dump() { + QList keys = values.keys(); + qCDebug(modelformat) << "values: "; + foreach(auto k, keys) qCDebug(modelformat) << k << ": " << values[k]; + } +}; + +struct GLTFMeshPrimitive { + GLTFMeshPrimitiveAttr attributes; + int indices; + int material; + int mode{ GLTFMeshPrimitivesRenderingMode::TRIANGLES }; + QVector targets; + QMap defined; + void dump() { + if (defined["attributes"]) { + qCDebug(modelformat) << "attributes: "; + attributes.dump(); + } + if (defined["indices"]) qCDebug(modelformat) << "indices: " << indices; + if (defined["material"]) qCDebug(modelformat) << "material: " << material; + if (defined["mode"]) qCDebug(modelformat) << "mode: " << mode; + if (defined["targets"]) { + qCDebug(modelformat) << "targets: "; + foreach(auto t, targets) t.dump(); + } + } +}; + +struct GLTFMesh { + QString name; + QVector primitives; + QVector weights; + QMap defined; + void dump() { + if (defined["name"]) qCDebug(modelformat) << "name: " << name; + if (defined["primitives"]) { + qCDebug(modelformat) << "primitives: "; + foreach(auto prim, primitives) prim.dump(); + } + if (defined["weights"]) qCDebug(modelformat) << "weights: " << weights; + } +}; + +// BufferViews + +namespace GLTFBufferViewTarget { + enum Values { + ARRAY_BUFFER = 34962, + ELEMENT_ARRAY_BUFFER = 34963 + }; +} + +struct GLTFBufferView { + int buffer; //required + int byteLength; //required + int byteOffset; + int target; + QMap defined; + void dump() { + if (defined["buffer"]) qCDebug(modelformat) << "buffer: " << buffer; + if (defined["byteLength"]) qCDebug(modelformat) << "byteLength: " << byteLength; + if (defined["byteOffset"]) qCDebug(modelformat) << "byteOffset: " << byteOffset; + if (defined["target"]) qCDebug(modelformat) << "target: " << target; + } +}; + +// Buffers + +struct GLTFBuffer { + int byteLength; //required + QString uri; + QByteArray blob; + QMap defined; + void dump() { + if (defined["byteLength"]) qCDebug(modelformat) << "byteLength: " << byteLength; + if (defined["uri"]) qCDebug(modelformat) << "uri: " << uri; + if (defined["blob"]) qCDebug(modelformat) << "blob: " << "DEFINED"; + } +}; + +// Samplers +namespace GLTFSamplerFilterType { + enum Values { + NEAREST = 9728, + LINEAR = 9729, + NEAREST_MIPMAP_NEAREST = 9984, + LINEAR_MIPMAP_NEAREST = 9985, + NEAREST_MIPMAP_LINEAR = 9986, + LINEAR_MIPMAP_LINEAR = 9987 + }; +} + +namespace GLTFSamplerWrapType { + enum Values { + CLAMP_TO_EDGE = 33071, + MIRRORED_REPEAT = 33648, + REPEAT = 10497 + }; +} + +struct GLTFSampler { + int magFilter; + int minFilter; + int wrapS; + int wrapT; + QMap defined; + void dump() { + if (defined["magFilter"]) qCDebug(modelformat) << "magFilter: " << magFilter; + if (defined["minFilter"]) qCDebug(modelformat) << "minFilter: " << minFilter; + if (defined["wrapS"]) qCDebug(modelformat) << "wrapS: " << wrapS; + if (defined["wrapT"]) qCDebug(modelformat) << "wrapT: " << wrapT; + } +}; + +// Cameras + +struct GLTFCameraPerspective { + double aspectRatio; + double yfov; //required + double zfar; + double znear; //required + QMap defined; + void dump() { + if (defined["zfar"]) qCDebug(modelformat) << "zfar: " << zfar; + if (defined["znear"]) qCDebug(modelformat) << "znear: " << znear; + if (defined["aspectRatio"]) qCDebug(modelformat) << "aspectRatio: " << aspectRatio; + if (defined["yfov"]) qCDebug(modelformat) << "yfov: " << yfov; + } +}; + +struct GLTFCameraOrthographic { + double zfar; //required + double znear; //required + double xmag; //required + double ymag; //required + QMap defined; + void dump() { + if (defined["zfar"]) qCDebug(modelformat) << "zfar: " << zfar; + if (defined["znear"]) qCDebug(modelformat) << "znear: " << znear; + if (defined["xmag"]) qCDebug(modelformat) << "xmag: " << xmag; + if (defined["ymag"]) qCDebug(modelformat) << "ymag: " << ymag; + } +}; + +namespace GLTFCameraTypes { + enum Values { + ORTHOGRAPHIC = 0, + PERSPECTIVE + }; +} + +struct GLTFCamera { + QString name; + GLTFCameraPerspective perspective; //required (or) + GLTFCameraOrthographic orthographic; //required (or) + int type; + QMap defined; + void dump() { + if (defined["name"]) qCDebug(modelformat) << "name: " << name; + if (defined["type"]) qCDebug(modelformat) << "type: " << type; + if (defined["perspective"]) perspective.dump(); + if (defined["orthographic"]) orthographic.dump(); + } +}; + +// Images + +namespace GLTFImageMimetype { + enum Values { + JPEG = 0, + PNG + }; +}; + +struct GLTFImage { + QString uri; //required (or) + int mimeType; + int bufferView; //required (or) + QMap defined; + void dump() { + if (defined["uri"]) qCDebug(modelformat) << "uri: " << uri; + if (defined["mimeType"]) qCDebug(modelformat) << "mimeType: " << mimeType; + if (defined["bufferView"]) qCDebug(modelformat) << "bufferView: " << bufferView; + } +}; + +// Materials + +struct GLTFpbrMetallicRoughness { + QVector baseColorFactor; + int baseColorTexture; + int metallicRoughnessTexture; + double metallicFactor; + double roughnessFactor; + QMap defined; + void dump() { + if (defined["baseColorFactor"]) qCDebug(modelformat) << "baseColorFactor: " << baseColorFactor; + if (defined["baseColorTexture"]) qCDebug(modelformat) << "baseColorTexture: " << baseColorTexture; + if (defined["metallicRoughnessTexture"]) qCDebug(modelformat) << "metallicRoughnessTexture: " << metallicRoughnessTexture; + if (defined["metallicFactor"]) qCDebug(modelformat) << "metallicFactor: " << metallicFactor; + if (defined["roughnessFactor"]) qCDebug(modelformat) << "roughnessFactor: " << roughnessFactor; + if (defined["baseColorFactor"]) qCDebug(modelformat) << "baseColorFactor: " << baseColorFactor; + } +}; + +namespace GLTFMaterialAlphaMode { + enum Values { + OPAQUE = 0, + MASK, + BLEND + }; +}; + +struct GLTFMaterial { + QString name; + QVector emissiveFactor; + int emissiveTexture; + int normalTexture; + int occlusionTexture; + int alphaMode; + double alphaCutoff; + bool doubleSided; + GLTFpbrMetallicRoughness pbrMetallicRoughness; + QMap defined; + void dump() { + if (defined["name"]) qCDebug(modelformat) << "name: " << name; + if (defined["emissiveTexture"]) qCDebug(modelformat) << "emissiveTexture: " << emissiveTexture; + if (defined["normalTexture"]) qCDebug(modelformat) << "normalTexture: " << normalTexture; + if (defined["occlusionTexture"]) qCDebug(modelformat) << "occlusionTexture: " << occlusionTexture; + if (defined["emissiveFactor"]) qCDebug(modelformat) << "emissiveFactor: " << emissiveFactor; + if (defined["pbrMetallicRoughness"]) pbrMetallicRoughness.dump(); + } +}; + +// Accesors + +namespace GLTFAccessorType { + enum Values { + SCALAR = 0, + VEC2, + VEC3, + VEC4, + MAT2, + MAT3, + MAT4 + }; +} +namespace GLTFAccessorComponentType { + enum Values { + BYTE = 5120, + UNSIGNED_BYTE = 5121, + SHORT = 5122, + UNSIGNED_SHORT = 5123, + UNSIGNED_INT = 5125, + FLOAT = 5126 + }; +} +struct GLTFAccessor { + int bufferView; + int byteOffset; + int componentType; //required + int count; //required + int type; //required + bool normalized{ false }; + QVector max; + QVector min; + QMap defined; + void dump() { + if (defined["bufferView"]) qCDebug(modelformat) << "bufferView: " << bufferView; + if (defined["byteOffset"]) qCDebug(modelformat) << "byteOffset: " << byteOffset; + if (defined["componentType"]) qCDebug(modelformat) << "componentType: " << componentType; + if (defined["count"]) qCDebug(modelformat) << "count: " << count; + if (defined["type"]) qCDebug(modelformat) << "type: " << type; + if (defined["normalized"]) qCDebug(modelformat) << "normalized: " << (normalized ? "TRUE" : "FALSE"); + if (defined["max"]) { + qCDebug(modelformat) << "max: "; + foreach(float m, max) qCDebug(modelformat) << m; + } + if (defined["min"]) { + qCDebug(modelformat) << "min: "; + foreach(float m, min) qCDebug(modelformat) << m; + } + } +}; + +// Animation + +namespace GLTFChannelTargetPath { + enum Values { + TRANSLATION = 0, + ROTATION, + SCALE + }; +} + +struct GLTFChannelTarget { + int node; + int path; + QMap defined; + void dump() { + if (defined["node"]) qCDebug(modelformat) << "node: " << node; + if (defined["path"]) qCDebug(modelformat) << "path: " << path; + } +}; + +struct GLTFChannel { + int sampler; + GLTFChannelTarget target; + QMap defined; + void dump() { + if (defined["sampler"]) qCDebug(modelformat) << "sampler: " << sampler; + if (defined["target"]) target.dump(); + } +}; + +namespace GLTFAnimationSamplerInterpolation { + enum Values{ + LINEAR = 0 + }; +} + +struct GLTFAnimationSampler { + int input; + int output; + int interpolation; + QMap defined; + void dump() { + if (defined["input"]) qCDebug(modelformat) << "input: " << input; + if (defined["output"]) qCDebug(modelformat) << "output: " << output; + if (defined["interpolation"]) qCDebug(modelformat) << "interpolation: " << interpolation; + } +}; + +struct GLTFAnimation { + QVector channels; + QVector samplers; + QMap defined; + void dump() { + if (defined["channels"]) foreach(auto channel, channels) channel.dump(); + if (defined["samplers"]) foreach(auto sampler, samplers) sampler.dump(); + } +}; + +struct GLTFScene { + QString name; + QVector nodes; + QMap defined; + void dump() { + if (defined["name"]) qCDebug(modelformat) << "name: " << name; + if (defined["nodes"]) { + qCDebug(modelformat) << "nodes: "; + foreach(int node, nodes) qCDebug(modelformat) << node; + } + } +}; + +struct GLTFSkin { + int inverseBindMatrices; + QVector joints; + int skeleton; + QMap defined; + void dump() { + if (defined["inverseBindMatrices"]) qCDebug(modelformat) << "inverseBindMatrices: " << inverseBindMatrices; + if (defined["skeleton"]) qCDebug(modelformat) << "skeleton: " << skeleton; + if (defined["joints"]) { + qCDebug(modelformat) << "joints: "; + foreach(int joint, joints) qCDebug(modelformat) << joint; + } + } +}; + +struct GLTFTexture { + int sampler; + int source; + QMap defined; + void dump() { + if (defined["sampler"]) qCDebug(modelformat) << "sampler: " << sampler; + if (defined["source"]) qCDebug(modelformat) << "source: " << sampler; + } +}; + +struct GLTFFile { + GLTFAsset asset; + int scene = 0; + QVector accessors; + QVector animations; + QVector bufferviews; + QVector buffers; + QVector cameras; + QVector images; + QVector materials; + QVector meshes; + QVector nodes; + QVector samplers; + QVector scenes; + QVector skins; + QVector textures; + QMap defined; + void dump() { + if (defined["asset"]) asset.dump(); + if (defined["scene"]) qCDebug(modelformat) << "scene: " << scene; + if (defined["accessors"]) foreach(auto acc, accessors) acc.dump(); + if (defined["animations"]) foreach(auto ani, animations) ani.dump(); + if (defined["bufferviews"]) foreach(auto bv, bufferviews) bv.dump(); + if (defined["buffers"]) foreach(auto b, buffers) b.dump(); + if (defined["cameras"]) foreach(auto c, cameras) c.dump(); + if (defined["images"]) foreach(auto i, images) i.dump(); + if (defined["materials"]) foreach(auto mat, materials) mat.dump(); + if (defined["meshes"]) foreach(auto mes, meshes) mes.dump(); + if (defined["nodes"]) foreach(auto nod, nodes) nod.dump(); + if (defined["samplers"]) foreach(auto sa, samplers) sa.dump(); + if (defined["scenes"]) foreach(auto sc, scenes) sc.dump(); + if (defined["skins"]) foreach(auto sk, nodes) sk.dump(); + if (defined["textures"]) foreach(auto tex, textures) tex.dump(); + } +}; + +class GLTFReader : public QObject { + Q_OBJECT +public: + GLTFReader(); + FBXGeometry* readGLTF(QByteArray& model, const QVariantHash& mapping, const QUrl& url, bool loadLightmaps = true, float lightmapLevel = 1.0f); +private: + GLTFFile _file; + QUrl _url; + + glm::mat4 getModelTransform(const GLTFNode& node); + + bool buildGeometry(FBXGeometry& geometry, const QUrl& url); + bool parseGLTF(const QByteArray& model); + + bool getStringVal(const QJsonObject& object, const QString& fieldname, QString& value, QMap& defined); + bool getBoolVal(const QJsonObject& object, const QString& fieldname, bool& value, QMap& defined); + bool getIntVal(const QJsonObject& object, const QString& fieldname, int& value, QMap& defined); + bool getDoubleVal(const QJsonObject& object, const QString& fieldname, double& value, QMap& defined); + bool getObjectVal(const QJsonObject& object, const QString& fieldname, QJsonObject& value, QMap& defined); + bool getIntArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined); + bool getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined); + bool getObjectArrayVal(const QJsonObject& object, const QString& fieldname, QJsonArray& objects, QMap& defined); + + int getMaterialAlphaMode(const QString& type); + int getAccessorType(const QString& type); + int getAnimationSamplerInterpolation(const QString& interpolation); + int getCameraType(const QString& type); + int getImageMimeType(const QString& mime); + int getMeshPrimitiveRenderingMode(const QString& type); + + bool getIndexFromObject(const QJsonObject& object, const QString& field, int& outidx, QMap& defined); + + bool setAsset(const QJsonObject& object); + bool addAccessor(const QJsonObject& object); + bool addAnimation(const QJsonObject& object); + bool addBufferView(const QJsonObject& object); + bool addBuffer(const QJsonObject& object); + bool addCamera(const QJsonObject& object); + bool addImage(const QJsonObject& object); + bool addMaterial(const QJsonObject& object); + bool addMesh(const QJsonObject& object); + bool addNode(const QJsonObject& object); + bool addSampler(const QJsonObject& object); + bool addScene(const QJsonObject& object); + bool addSkin(const QJsonObject& object); + bool addTexture(const QJsonObject& object); + + bool readBinary(const QString& url, QByteArray& outdata); + + template + bool readArray(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType); + + template + bool addArrayOfType(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType, int componentType); + + void retriangulate(const QVector& in_indices, const QVector& in_vertices, const QVector& in_normals, + QVector& out_indices, QVector& out_vertices, QVector& out_normals); + + std::tuple GLTFReader::requestData(QUrl& url); + QNetworkReply* GLTFReader::request(QUrl& url, bool isTest); + bool doesResourceExist(const QString& url); + + + void setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& material); + FBXTexture getFBXTexture(const GLTFTexture& texture); + void fbxDebugDump(const FBXGeometry& fbxgeo); +}; + + + + + + + +#endif hifi_GLTFReader_h \ No newline at end of file diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 704455c981..12c932256f 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -14,6 +14,7 @@ #include #include "FBXReader.h" #include "OBJReader.h" +#include "GLTFReader.h" #include #include @@ -173,9 +174,10 @@ void GeometryReader::run() { QString urlname = _url.path().toLower(); if (!urlname.isEmpty() && !_url.path().isEmpty() && - (_url.path().toLower().endsWith(".fbx") || - _url.path().toLower().endsWith(".obj") || - _url.path().toLower().endsWith(".obj.gz"))) { + (_url.path().toLower().endsWith(".fbx") || + _url.path().toLower().endsWith(".obj") || + _url.path().toLower().endsWith(".obj.gz") || + _url.path().toLower().endsWith(".gltf"))) { FBXGeometry::Pointer fbxGeometry; if (_url.path().toLower().endsWith(".fbx")) { @@ -183,17 +185,28 @@ void GeometryReader::run() { if (fbxGeometry->meshes.size() == 0 && fbxGeometry->joints.size() == 0) { throw QString("empty geometry, possibly due to an unsupported FBX version"); } - } else if (_url.path().toLower().endsWith(".obj")) { + } + else if (_url.path().toLower().endsWith(".obj")) { fbxGeometry.reset(OBJReader().readOBJ(_data, _mapping, _combineParts, _url)); - } else if (_url.path().toLower().endsWith(".obj.gz")) { - QByteArray uncompressedData; - if (gunzip(_data, uncompressedData)){ - fbxGeometry.reset(OBJReader().readOBJ(uncompressedData, _mapping, _combineParts, _url)); - } else { - throw QString("failed to decompress .obj.gz" ); - } + } + else if (_url.path().toLower().endsWith(".obj.gz")) { + QByteArray uncompressedData; + if (gunzip(_data, uncompressedData)) { + fbxGeometry.reset(OBJReader().readOBJ(uncompressedData, _mapping, _combineParts, _url)); + } + else { + throw QString("failed to decompress .obj.gz"); + } - } else { + } + else if (_url.path().toLower().endsWith(".gltf")) { + std::unique_ptr glreader = std::make_unique(); + fbxGeometry.reset(glreader->readGLTF(_data, _mapping, _url)); + if (fbxGeometry->meshes.size() == 0 && fbxGeometry->joints.size() == 0) { + throw QString("empty geometry, possibly due to an unsupported GLTF version"); + } + } + else { throw QString("unsupported format"); } From e1ac16498e51d03a0aac7de5fbbf04276a3cfd2e Mon Sep 17 00:00:00 2001 From: Luis Cuenca Date: Tue, 12 Sep 2017 20:19:44 -0700 Subject: [PATCH 006/187] Corrected Ubuntu Errors Corrected: -endif -extra qualification -invalid initialization of non-const reference --- libraries/fbx/src/GLTFReader.cpp | 3 ++- libraries/fbx/src/GLTFReader.h | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libraries/fbx/src/GLTFReader.cpp b/libraries/fbx/src/GLTFReader.cpp index 3ff369ba28..2f852a8f19 100644 --- a/libraries/fbx/src/GLTFReader.cpp +++ b/libraries/fbx/src/GLTFReader.cpp @@ -304,8 +304,9 @@ bool GLTFReader::addImage(const QJsonObject& object) { bool GLTFReader::getIndexFromObject(const QJsonObject& object, const QString& field, int& outidx, QMap& defined) { QJsonObject subobject; + QMap tmpdefined; if (getObjectVal(object, field, subobject, defined)) { - return getIntVal(subobject, "index", outidx, QMap()); + return getIntVal(subobject, "index", outidx, tmpdefined); } return false; } diff --git a/libraries/fbx/src/GLTFReader.h b/libraries/fbx/src/GLTFReader.h index 1a23786023..120a6895b2 100644 --- a/libraries/fbx/src/GLTFReader.h +++ b/libraries/fbx/src/GLTFReader.h @@ -563,8 +563,8 @@ private: void retriangulate(const QVector& in_indices, const QVector& in_vertices, const QVector& in_normals, QVector& out_indices, QVector& out_vertices, QVector& out_normals); - std::tuple GLTFReader::requestData(QUrl& url); - QNetworkReply* GLTFReader::request(QUrl& url, bool isTest); + std::tuple requestData(QUrl& url); + QNetworkReply* request(QUrl& url, bool isTest); bool doesResourceExist(const QString& url); @@ -579,4 +579,4 @@ private: -#endif hifi_GLTFReader_h \ No newline at end of file +#endif //hifi_GLTFReader_h \ No newline at end of file From f25288178baaa36c638a8b74529b393e65d9ab35 Mon Sep 17 00:00:00 2001 From: Luis Cuenca Date: Tue, 12 Sep 2017 21:35:34 -0700 Subject: [PATCH 007/187] endif fixed --- libraries/fbx/src/GLTFReader.cpp | 10 ++++++++++ libraries/fbx/src/GLTFReader.h | 10 ++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/libraries/fbx/src/GLTFReader.cpp b/libraries/fbx/src/GLTFReader.cpp index 2f852a8f19..b578af87f3 100644 --- a/libraries/fbx/src/GLTFReader.cpp +++ b/libraries/fbx/src/GLTFReader.cpp @@ -1,3 +1,13 @@ +// +// GLTFReader.cpp +// libraries/fbx/src +// +// Created by Luis Cuenca on 8/30/17. +// 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 +// #include #include diff --git a/libraries/fbx/src/GLTFReader.h b/libraries/fbx/src/GLTFReader.h index 120a6895b2..f656dac0ff 100644 --- a/libraries/fbx/src/GLTFReader.h +++ b/libraries/fbx/src/GLTFReader.h @@ -1,6 +1,6 @@ // // GLTFReader.h -// interface/src/renderer +// libraries/fbx/src // // Created by Luis Cuenca on 8/30/17. // Copyright 2017 High Fidelity, Inc. @@ -573,10 +573,4 @@ private: void fbxDebugDump(const FBXGeometry& fbxgeo); }; - - - - - - -#endif //hifi_GLTFReader_h \ No newline at end of file +#endif // hifi_GLTFReader_h \ No newline at end of file From 68bce3c09c029c2d663a8f204cd10cec14e9d6aa Mon Sep 17 00:00:00 2001 From: Luis Cuenca Date: Wed, 13 Sep 2017 07:04:50 -0700 Subject: [PATCH 008/187] Qmap initialized --- libraries/fbx/src/GLTFReader.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/fbx/src/GLTFReader.cpp b/libraries/fbx/src/GLTFReader.cpp index b578af87f3..fe662e95ea 100644 --- a/libraries/fbx/src/GLTFReader.cpp +++ b/libraries/fbx/src/GLTFReader.cpp @@ -314,8 +314,8 @@ bool GLTFReader::addImage(const QJsonObject& object) { bool GLTFReader::getIndexFromObject(const QJsonObject& object, const QString& field, int& outidx, QMap& defined) { QJsonObject subobject; - QMap tmpdefined; if (getObjectVal(object, field, subobject, defined)) { + QMap tmpdefined = QMap(); return getIntVal(subobject, "index", outidx, tmpdefined); } return false; @@ -326,7 +326,6 @@ bool GLTFReader::addMaterial(const QJsonObject& object) { getStringVal(object, "name", material.name, material.defined); getDoubleArrayVal(object, "emissiveFactor", material.emissiveFactor, material.defined); - //getIntVal(object, "emissiveTexture", material.emissiveTexture, material.defined); getIndexFromObject(object, "emissiveTexture", material.emissiveTexture, material.defined); getIndexFromObject(object, "normalTexture", material.normalTexture, material.defined); getIndexFromObject(object, "occlusionTexture", material.occlusionTexture, material.defined); From 33767862888359beeb85fa2a41e7e24c3bbff933 Mon Sep 17 00:00:00 2001 From: vladest Date: Wed, 20 Sep 2017 17:02:54 +0200 Subject: [PATCH 009/187] Added text selection on focus. Added basic check for text within url input field to decide is this something for search or for goto. Limited popup list height to do not cover virtual keyboard --- interface/resources/qml/hifi/WebBrowser.qml | 37 ++++++++++++++++++--- interface/src/opensearch/opensearchengine.h | 2 +- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index 582e26bbeb..f1c6efde9a 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -39,7 +39,7 @@ Rectangle { id: searchEngine name: "Google"; //icon: ":icons/sites/google.png" - searchUrlTemplate: "https://www.google.com/search?client=qupzilla&q=%s"; + searchUrlTemplate: "https://www.google.com/search?client=hifibrowser&q={searchTerms}"; suggestionsUrlTemplate: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; suggestionsUrl: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; @@ -73,11 +73,14 @@ Rectangle { color: hifi.colors.baseGray; function goTo(url) { - if (url.indexOf("http") !== 0) { + //must be valid attempt to open an site with dot + if (url.indexOf("http") <= 0 && url.indexOf(".") > 0) { url = "http://" + url; + } else { + url = searchEngine.searchUrl(url) } + webEngineView.url = url - event.accepted = true; suggestionRequestTimer.stop() addressBar.popup.close() } @@ -125,6 +128,14 @@ Rectangle { goTo(textAt(index)) } + popup.bottomPadding: keyboard.height + + onFocusChanged: { + if (focus) { + addressBarInput.selectAll() + } + } + contentItem: QQControls.TextField { id: addressBarInput leftPadding: 26 @@ -132,8 +143,25 @@ Rectangle { text: addressBar.editText placeholderText: qsTr("Enter URL") font: addressBar.font + selectByMouse: true horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter + onFocusChanged: { + if (focus) { + selectAll() + } + } + + Keys.onDeletePressed: { + editText = "" + } + + Keys.onPressed: { + if (event.key === Qt.Key_Return) { + goTo(editText) + event.accepted = true; + } + } Image { anchors.verticalCenter: parent.verticalCenter; @@ -167,6 +195,7 @@ Rectangle { Keys.onPressed: { if (event.key === Qt.Key_Return) { goTo(editText) + event.accepted = true; } } @@ -177,7 +206,7 @@ Rectangle { Layout.fillWidth: true editText: webEngineView.url - onAccepted: webEngineView.url = editText + onAccepted: goTo(editText) } HifiControls.WebGlyphButton { diff --git a/interface/src/opensearch/opensearchengine.h b/interface/src/opensearch/opensearchengine.h index 2b717fab7e..fa714b85d3 100644 --- a/interface/src/opensearch/opensearchengine.h +++ b/interface/src/opensearch/opensearchengine.h @@ -47,7 +47,6 @@ public: QString searchUrlTemplate() const; void setSearchUrlTemplate(const QString &searchUrl); - QUrl searchUrl(const QString &searchTerm) const; QByteArray getPostData(const QString &searchTerm) const; @@ -89,6 +88,7 @@ public: bool operator<(const OpenSearchEngine &other) const; public slots: + QUrl searchUrl(const QString &searchTerm) const; void requestSuggestions(const QString &searchTerm); void requestSearchResults(const QString &searchTerm); From 7cbf50e000f2ca23257434dc4cf1aed4077a8c77 Mon Sep 17 00:00:00 2001 From: Luis Cuenca Date: Tue, 3 Oct 2017 08:52:52 -0700 Subject: [PATCH 010/187] Minor change Minor change to rebuild in order to generate a new error log --- interface/resources/meshes/defaultAvatar_full.fst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/meshes/defaultAvatar_full.fst b/interface/resources/meshes/defaultAvatar_full.fst index ac2417ceb9..378bbdd069 100644 --- a/interface/resources/meshes/defaultAvatar_full.fst +++ b/interface/resources/meshes/defaultAvatar_full.fst @@ -1,4 +1,4 @@ -name = Avocado +name = DamagedHelmet type = body+head scale = 1 filename = DamagedHelmet/DamagedHelmet.gltf From a7a1329c5f51abfd281d688013743ca5a83ca8c9 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Tue, 10 Oct 2017 12:10:03 -0700 Subject: [PATCH 011/187] Adapt code to coding standard --- BUILD_LINUX.md | 1 - libraries/fbx/src/GLTFReader.cpp | 304 ++++++++++++++------- libraries/fbx/src/GLTFReader.h | 442 +++++++++++++++++++++++-------- 3 files changed, 531 insertions(+), 216 deletions(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index ab947fae4e..038f53154c 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -93,5 +93,4 @@ Running interface: ./interface/interface ``` - Go to localhost in running interface. diff --git a/libraries/fbx/src/GLTFReader.cpp b/libraries/fbx/src/GLTFReader.cpp index fe662e95ea..198d9c2566 100644 --- a/libraries/fbx/src/GLTFReader.cpp +++ b/libraries/fbx/src/GLTFReader.cpp @@ -36,7 +36,8 @@ GLTFReader::GLTFReader() { } -bool GLTFReader::getStringVal(const QJsonObject& object, const QString& fieldname, QString& value, QMap& defined) { +bool GLTFReader::getStringVal(const QJsonObject& object, const QString& fieldname, + QString& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isString()); if (_defined) { value = object[fieldname].toString(); @@ -45,7 +46,8 @@ bool GLTFReader::getStringVal(const QJsonObject& object, const QString& fieldnam return _defined; } -bool GLTFReader::getBoolVal(const QJsonObject& object, const QString& fieldname, bool& value, QMap& defined) { +bool GLTFReader::getBoolVal(const QJsonObject& object, const QString& fieldname, + bool& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isBool()); if (_defined) { value = object[fieldname].toBool(); @@ -54,7 +56,8 @@ bool GLTFReader::getBoolVal(const QJsonObject& object, const QString& fieldname, return _defined; } -bool GLTFReader::getIntVal(const QJsonObject& object, const QString& fieldname, int& value, QMap& defined) { +bool GLTFReader::getIntVal(const QJsonObject& object, const QString& fieldname, + int& value, QMap& defined) { bool _defined = (object.contains(fieldname) && !object[fieldname].isNull()); if (_defined) { value = object[fieldname].toInt(); @@ -63,7 +66,8 @@ bool GLTFReader::getIntVal(const QJsonObject& object, const QString& fieldname, return _defined; } -bool GLTFReader::getDoubleVal(const QJsonObject& object, const QString& fieldname, double& value, QMap& defined) { +bool GLTFReader::getDoubleVal(const QJsonObject& object, const QString& fieldname, + double& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isDouble()); if (_defined) { value = object[fieldname].toDouble(); @@ -71,7 +75,8 @@ bool GLTFReader::getDoubleVal(const QJsonObject& object, const QString& fieldnam defined.insert(fieldname, _defined); return _defined; } -bool GLTFReader::getObjectVal(const QJsonObject& object, const QString& fieldname, QJsonObject& value, QMap& defined) { +bool GLTFReader::getObjectVal(const QJsonObject& object, const QString& fieldname, + QJsonObject& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isObject()); if (_defined) { value = object[fieldname].toObject(); @@ -80,7 +85,8 @@ bool GLTFReader::getObjectVal(const QJsonObject& object, const QString& fieldnam return _defined; } -bool GLTFReader::getIntArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined) { +bool GLTFReader::getIntArrayVal(const QJsonObject& object, const QString& fieldname, + QVector& values, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { QJsonArray arr = object[fieldname].toArray(); @@ -94,7 +100,8 @@ bool GLTFReader::getIntArrayVal(const QJsonObject& object, const QString& fieldn return _defined; } -bool GLTFReader::getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined) { +bool GLTFReader::getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, + QVector& values, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { QJsonArray arr = object[fieldname].toArray(); @@ -108,7 +115,8 @@ bool GLTFReader::getDoubleArrayVal(const QJsonObject& object, const QString& fie return _defined; } -bool GLTFReader::getObjectArrayVal(const QJsonObject& object, const QString& fieldname, QJsonArray& objects, QMap& defined) { +bool GLTFReader::getObjectArrayVal(const QJsonObject& object, const QString& fieldname, + QJsonArray& objects, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { objects = object[fieldname].toArray(); @@ -119,53 +127,97 @@ bool GLTFReader::getObjectArrayVal(const QJsonObject& object, const QString& fie int GLTFReader::getMeshPrimitiveRenderingMode(const QString& type) { - if (type == "POINTS") return GLTFMeshPrimitivesRenderingMode::POINTS; - if (type == "LINES") return GLTFMeshPrimitivesRenderingMode::LINES; - if (type == "LINE_LOOP") return GLTFMeshPrimitivesRenderingMode::LINE_LOOP; - if (type == "LINE_STRIP") return GLTFMeshPrimitivesRenderingMode::LINE_STRIP; - if (type == "TRIANGLES") return GLTFMeshPrimitivesRenderingMode::TRIANGLES; - if (type == "TRIANGLE_STRIP") return GLTFMeshPrimitivesRenderingMode::TRIANGLE_STRIP; - if (type == "TRIANGLE_FAN") return GLTFMeshPrimitivesRenderingMode::TRIANGLE_FAN; + if (type == "POINTS") { + return GLTFMeshPrimitivesRenderingMode::POINTS; + } + if (type == "LINES") { + return GLTFMeshPrimitivesRenderingMode::LINES; + } + if (type == "LINE_LOOP") { + return GLTFMeshPrimitivesRenderingMode::LINE_LOOP; + } + if (type == "LINE_STRIP") { + return GLTFMeshPrimitivesRenderingMode::LINE_STRIP; + } + if (type == "TRIANGLES") { + return GLTFMeshPrimitivesRenderingMode::TRIANGLES; + } + if (type == "TRIANGLE_STRIP") { + return GLTFMeshPrimitivesRenderingMode::TRIANGLE_STRIP; + } + if (type == "TRIANGLE_FAN") { + return GLTFMeshPrimitivesRenderingMode::TRIANGLE_FAN; + } return GLTFMeshPrimitivesRenderingMode::TRIANGLES; } int GLTFReader::getAccessorType(const QString& type) { - if (type == "SCALAR") return GLTFAccessorType::SCALAR; - if (type == "VEC2") return GLTFAccessorType::VEC2; - if (type == "VEC3") return GLTFAccessorType::VEC3; - if (type == "VEC4") return GLTFAccessorType::VEC4; - if (type == "MAT2") return GLTFAccessorType::MAT2; - if (type == "MAT3") return GLTFAccessorType::MAT3; - if (type == "MAT4") return GLTFAccessorType::MAT4; + if (type == "SCALAR") { + return GLTFAccessorType::SCALAR; + } + if (type == "VEC2") { + return GLTFAccessorType::VEC2; + } + if (type == "VEC3") { + return GLTFAccessorType::VEC3; + } + if (type == "VEC4") { + return GLTFAccessorType::VEC4; + } + if (type == "MAT2") { + return GLTFAccessorType::MAT2; + } + if (type == "MAT3") { + return GLTFAccessorType::MAT3; + } + if (type == "MAT4") { + return GLTFAccessorType::MAT4; + } return GLTFAccessorType::SCALAR; } int GLTFReader::getMaterialAlphaMode(const QString& type) { - if (type == "OPAQUE") return GLTFMaterialAlphaMode::OPAQUE; - if (type == "MASK") return GLTFMaterialAlphaMode::MASK; - if (type == "BLEND") return GLTFMaterialAlphaMode::BLEND; + if (type == "OPAQUE") { + return GLTFMaterialAlphaMode::OPAQUE; + } + if (type == "MASK") { + return GLTFMaterialAlphaMode::MASK; + } + if (type == "BLEND") { + return GLTFMaterialAlphaMode::BLEND; + } return GLTFMaterialAlphaMode::OPAQUE; } int GLTFReader::getCameraType(const QString& type) { - if (type == "orthographic") return GLTFCameraTypes::ORTHOGRAPHIC; - if (type == "perspective") return GLTFCameraTypes::PERSPECTIVE; + if (type == "orthographic") { + return GLTFCameraTypes::ORTHOGRAPHIC; + } + if (type == "perspective") { + return GLTFCameraTypes::PERSPECTIVE; + } return GLTFCameraTypes::PERSPECTIVE; } int GLTFReader::getImageMimeType(const QString& mime) { - if (mime == "image/jpeg") return GLTFImageMimetype::JPEG; - if (mime == "image/png") return GLTFImageMimetype::PNG; + if (mime == "image/jpeg") { + return GLTFImageMimetype::JPEG; + } + if (mime == "image/png") { + return GLTFImageMimetype::PNG; + } return GLTFImageMimetype::JPEG; } int GLTFReader::getAnimationSamplerInterpolation(const QString& interpolation) { - if (interpolation == "LINEAR") return GLTFAnimationSamplerInterpolation::LINEAR; + if (interpolation == "LINEAR") { + return GLTFAnimationSamplerInterpolation::LINEAR; + } return GLTFAnimationSamplerInterpolation::LINEAR; } @@ -173,7 +225,8 @@ bool GLTFReader::setAsset(const QJsonObject& object) { QJsonObject jsAsset; bool isAssetDefined = getObjectVal(object, "asset", jsAsset, _file.defined); if (isAssetDefined) { - if (!getStringVal(jsAsset, "version", _file.asset.version, _file.asset.defined) || _file.asset.version != "2.0") { + if (!getStringVal(jsAsset, "version", _file.asset.version, + _file.asset.defined) || _file.asset.version != "2.0") { return false; } getStringVal(jsAsset, "generator", _file.asset.generator, _file.asset.defined); @@ -280,15 +333,13 @@ bool GLTFReader::addCamera(const QJsonObject& object) { getDoubleVal(jsPerspective, "zfar", camera.perspective.zfar, camera.perspective.defined); getDoubleVal(jsPerspective, "znear", camera.perspective.znear, camera.perspective.defined); camera.type = GLTFCameraTypes::PERSPECTIVE; - } - else if (getObjectVal(object, "orthographic", jsOrthographic, camera.defined)) { + } else if (getObjectVal(object, "orthographic", jsOrthographic, camera.defined)) { getDoubleVal(jsOrthographic, "zfar", camera.orthographic.zfar, camera.orthographic.defined); getDoubleVal(jsOrthographic, "znear", camera.orthographic.znear, camera.orthographic.defined); getDoubleVal(jsOrthographic, "xmag", camera.orthographic.xmag, camera.orthographic.defined); getDoubleVal(jsOrthographic, "ymag", camera.orthographic.ymag, camera.orthographic.defined); camera.type = GLTFCameraTypes::ORTHOGRAPHIC; - } - else if (getStringVal(object, "type", type, camera.defined)) { + } else if (getStringVal(object, "type", type, camera.defined)) { camera.type = getCameraType(type); } @@ -312,7 +363,8 @@ bool GLTFReader::addImage(const QJsonObject& object) { return true; } -bool GLTFReader::getIndexFromObject(const QJsonObject& object, const QString& field, int& outidx, QMap& defined) { +bool GLTFReader::getIndexFromObject(const QJsonObject& object, const QString& field, + int& outidx, QMap& defined) { QJsonObject subobject; if (getObjectVal(object, field, subobject, defined)) { QMap tmpdefined = QMap(); @@ -331,18 +383,29 @@ bool GLTFReader::addMaterial(const QJsonObject& object) { getIndexFromObject(object, "occlusionTexture", material.occlusionTexture, material.defined); getBoolVal(object, "doubleSided", material.doubleSided, material.defined); QString alphamode; - if (getStringVal(object, "alphaMode", alphamode, material.defined)) material.alphaMode = getMaterialAlphaMode(alphamode); + if (getStringVal(object, "alphaMode", alphamode, material.defined)) { + material.alphaMode = getMaterialAlphaMode(alphamode); + } getDoubleVal(object, "alphaCutoff", material.alphaCutoff, material.defined); QJsonObject jsMetallicRoughness; if (getObjectVal(object, "pbrMetallicRoughness", jsMetallicRoughness, material.defined)) { - getDoubleArrayVal(jsMetallicRoughness, "baseColorFactor", material.pbrMetallicRoughness.baseColorFactor, material.pbrMetallicRoughness.defined); - getIndexFromObject(jsMetallicRoughness, "baseColorTexture", material.pbrMetallicRoughness.baseColorTexture, material.pbrMetallicRoughness.defined); - getDoubleVal(jsMetallicRoughness, "metallicFactor", material.pbrMetallicRoughness.metallicFactor, material.pbrMetallicRoughness.defined); - getDoubleVal(jsMetallicRoughness, "roughnessFactor", material.pbrMetallicRoughness.roughnessFactor, material.pbrMetallicRoughness.defined); - getIndexFromObject(jsMetallicRoughness, "metallicRoughnessTexture", material.pbrMetallicRoughness.metallicRoughnessTexture, material.pbrMetallicRoughness.defined); + getDoubleArrayVal(jsMetallicRoughness, "baseColorFactor", + material.pbrMetallicRoughness.baseColorFactor, + material.pbrMetallicRoughness.defined); + getIndexFromObject(jsMetallicRoughness, "baseColorTexture", + material.pbrMetallicRoughness.baseColorTexture, + material.pbrMetallicRoughness.defined); + getDoubleVal(jsMetallicRoughness, "metallicFactor", + material.pbrMetallicRoughness.metallicFactor, + material.pbrMetallicRoughness.defined); + getDoubleVal(jsMetallicRoughness, "roughnessFactor", + material.pbrMetallicRoughness.roughnessFactor, + material.pbrMetallicRoughness.defined); + getIndexFromObject(jsMetallicRoughness, "metallicRoughnessTexture", + material.pbrMetallicRoughness.metallicRoughnessTexture, + material.pbrMetallicRoughness.defined); } _file.materials.push_back(material); - return true; } @@ -477,102 +540,127 @@ bool GLTFReader::parseGLTF(const QByteArray& model) { QJsonArray accessors; if (getObjectArrayVal(jsFile, "accessors", accessors, _file.defined)) { foreach(const QJsonValue & accVal, accessors) { - if (accVal.isObject()) addAccessor(accVal.toObject()); + if (accVal.isObject()) { + addAccessor(accVal.toObject()); + } } } QJsonArray animations; if (getObjectArrayVal(jsFile, "animations", animations, _file.defined)) { foreach(const QJsonValue & animVal, accessors) { - if (animVal.isObject()) addAnimation(animVal.toObject()); + if (animVal.isObject()) { + addAnimation(animVal.toObject()); + } } } QJsonArray bufferViews; if (getObjectArrayVal(jsFile, "bufferViews", bufferViews, _file.defined)) { foreach(const QJsonValue & bufviewVal, bufferViews) { - if (bufviewVal.isObject()) addBufferView(bufviewVal.toObject()); + if (bufviewVal.isObject()) { + addBufferView(bufviewVal.toObject()); + } } } QJsonArray buffers; if (getObjectArrayVal(jsFile, "buffers", buffers, _file.defined)) { foreach(const QJsonValue & bufVal, buffers) { - if (bufVal.isObject()) addBuffer(bufVal.toObject()); + if (bufVal.isObject()) { + addBuffer(bufVal.toObject()); + } } } QJsonArray cameras; if (getObjectArrayVal(jsFile, "cameras", cameras, _file.defined)) { foreach(const QJsonValue & camVal, cameras) { - if (camVal.isObject()) addCamera(camVal.toObject()); + if (camVal.isObject()) { + addCamera(camVal.toObject()); + } } } QJsonArray images; if (getObjectArrayVal(jsFile, "images", images, _file.defined)) { foreach(const QJsonValue & imgVal, images) { - if (imgVal.isObject()) addImage(imgVal.toObject()); + if (imgVal.isObject()) { + addImage(imgVal.toObject()); + } } } QJsonArray materials; if (getObjectArrayVal(jsFile, "materials", materials, _file.defined)) { foreach(const QJsonValue & matVal, materials) { - if (matVal.isObject()) addMaterial(matVal.toObject()); + if (matVal.isObject()) { + addMaterial(matVal.toObject()); + } } } QJsonArray meshes; if (getObjectArrayVal(jsFile, "meshes", meshes, _file.defined)) { foreach(const QJsonValue & meshVal, meshes) { - if (meshVal.isObject()) addMesh(meshVal.toObject()); + if (meshVal.isObject()) { + addMesh(meshVal.toObject()); + } } } QJsonArray nodes; if (getObjectArrayVal(jsFile, "nodes", nodes, _file.defined)) { foreach(const QJsonValue & nodeVal, nodes) { - if (nodeVal.isObject()) addNode(nodeVal.toObject()); + if (nodeVal.isObject()) { + addNode(nodeVal.toObject()); + } } } QJsonArray samplers; if (getObjectArrayVal(jsFile, "samplers", samplers, _file.defined)) { foreach(const QJsonValue & samVal, samplers) { - if (samVal.isObject()) addSampler(samVal.toObject()); + if (samVal.isObject()) { + addSampler(samVal.toObject()); + } } } QJsonArray scenes; if (getObjectArrayVal(jsFile, "scenes", scenes, _file.defined)) { foreach(const QJsonValue & sceneVal, scenes) { - if (sceneVal.isObject()) addScene(sceneVal.toObject()); + if (sceneVal.isObject()) { + addScene(sceneVal.toObject()); + } } } QJsonArray skins; if (getObjectArrayVal(jsFile, "skins", skins, _file.defined)) { foreach(const QJsonValue & skinVal, skins) { - if (skinVal.isObject()) addSkin(skinVal.toObject()); + if (skinVal.isObject()) { + addSkin(skinVal.toObject()); + } } } QJsonArray textures; if (getObjectArrayVal(jsFile, "textures", textures, _file.defined)) { foreach(const QJsonValue & texVal, textures) { - if (texVal.isObject()) addTexture(texVal.toObject()); + if (texVal.isObject()) { + addTexture(texVal.toObject()); + } } } - } - else { + } else { qCDebug(modelformat) << "Error parsing GLTF file."; return false; } return true; } -glm::mat4 GLTFReader::getModelTransform(const GLTFNode& node) { +const glm::mat4& GLTFReader::getModelTransform(const GLTFNode& node) { glm::mat4 tmat = glm::mat4(1.0); if (node.defined["matrix"] && node.matrix.size() == 16) { @@ -580,11 +668,11 @@ glm::mat4 GLTFReader::getModelTransform(const GLTFNode& node) { node.matrix[4], node.matrix[5], node.matrix[6], node.matrix[7], node.matrix[8], node.matrix[9], node.matrix[10], node.matrix[11], node.matrix[12], node.matrix[13], node.matrix[14], node.matrix[15]); - } - else { + } else { if (node.defined["rotation"] && node.rotation.size() == 4) { - glm::quat rotquat = glm::quat(node.rotation[3], node.rotation[0], node.rotation[1], node.rotation[2]); //quat(x,y,z,w) to quat(w,x,y,z) + //quat(x,y,z,w) to quat(w,x,y,z) + glm::quat rotquat = glm::quat(node.rotation[3], node.rotation[0], node.rotation[1], node.rotation[2]); tmat = glm::mat4_cast(rotquat) * tmat; } @@ -618,13 +706,16 @@ bool GLTFReader::buildGeometry(FBXGeometry& geometry, const QUrl& url) { nodecount = 0; foreach(auto &node, _file.nodes) { - _file.nodes[nodecount].transforms.push_back(getModelTransform(node)); // collect node transform + // collect node transform + _file.nodes[nodecount].transforms.push_back(getModelTransform(node)); if (nodeDependencies[nodecount].size() == 1) { int parentidx = nodeDependencies[nodecount][0]; while (true) { // iterate parents - _file.nodes[nodecount].transforms.push_back(getModelTransform(_file.nodes[parentidx])); // collect parents transforms - if (nodeDependencies[parentidx].size() == 1) parentidx = nodeDependencies[parentidx][0]; - else break; + // collect parents transforms + _file.nodes[nodecount].transforms.push_back(getModelTransform(_file.nodes[parentidx])); + if (nodeDependencies[parentidx].size() == 1) { + parentidx = nodeDependencies[parentidx][0]; + } else break; } } @@ -721,8 +812,7 @@ bool GLTFReader::buildGeometry(FBXGeometry& geometry, const QUrl& url) { for (int n = 0; n < vertices.size(); n = n + 3) { mesh.vertices.push_back(glm::vec3(vertices[n], vertices[n + 1], vertices[n + 2])); } - } - else if (key == "NORMAL") { + } else if (key == "NORMAL") { QVector normals; addArrayOfType(buffer.blob, bufferview.byteOffset + accBoffset, @@ -733,8 +823,7 @@ bool GLTFReader::buildGeometry(FBXGeometry& geometry, const QUrl& url) { for (int n = 0; n < normals.size(); n = n + 3) { mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); } - } - else if (key == "TEXCOORD_0") { + } else if (key == "TEXCOORD_0") { QVector texcoords; addArrayOfType(buffer.blob, bufferview.byteOffset + accBoffset, @@ -745,8 +834,7 @@ bool GLTFReader::buildGeometry(FBXGeometry& geometry, const QUrl& url) { for (int n = 0; n < texcoords.size(); n = n + 2) { mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); } - } - else if (key == "TEXCOORD_1") { + } else if (key == "TEXCOORD_1") { QVector texcoords; addArrayOfType(buffer.blob, bufferview.byteOffset + accBoffset, @@ -761,11 +849,15 @@ bool GLTFReader::buildGeometry(FBXGeometry& geometry, const QUrl& url) { } - if (primitive.defined["material"]) part.materialID = materialIDs[primitive.material]; + if (primitive.defined["material"]) { + part.materialID = materialIDs[primitive.material]; + } mesh.parts.push_back(part); // populate the texture coordenates if they don't exist - if (mesh.texCoords.size() == 0) for (int i = 0; i < part.triangleIndices.size(); i++) mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); + if (mesh.texCoords.size() == 0) { + for (int i = 0; i < part.triangleIndices.size(); i++) mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); + } mesh.meshExtents.reset(); foreach(const glm::vec3& vertex, mesh.vertices) { mesh.meshExtents.addPoint(vertex); @@ -793,7 +885,8 @@ bool GLTFReader::buildGeometry(FBXGeometry& geometry, const QUrl& url) { return true; } -FBXGeometry* GLTFReader::readGLTF(QByteArray& model, const QVariantHash& mapping, const QUrl& url, bool loadLightmaps, float lightmapLevel) { +FBXGeometry* GLTFReader::readGLTF(QByteArray& model, const QVariantHash& mapping, + const QUrl& url, bool loadLightmaps, float lightmapLevel) { _url = url; parseGLTF(model); @@ -839,8 +932,7 @@ std::tuple GLTFReader::requestData(QUrl& url) { if (request->getResult() == ResourceRequest::Success) { return std::make_tuple(true, request->getData()); - } - else { + } else { return std::make_tuple(false, QByteArray()); } } @@ -870,7 +962,7 @@ QNetworkReply* GLTFReader::request(QUrl& url, bool isTest) { return netReply; // trying to sync later on. } -FBXTexture GLTFReader::getFBXTexture(const GLTFTexture& texture) { +const FBXTexture& GLTFReader::getFBXTexture(const GLTFTexture& texture) { FBXTexture fbxtex = FBXTexture(); fbxtex.texcoordSet = 0; @@ -889,10 +981,14 @@ FBXTexture GLTFReader::getFBXTexture(const GLTFTexture& texture) { void GLTFReader::setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& material) { - if (material.defined["name"]) fbxmat.name = fbxmat.materialID = material.name; + if (material.defined["name"]) { + fbxmat.name = fbxmat.materialID = material.name; + } if (material.defined["emissiveFactor"] && material.emissiveFactor.size() == 3) { - glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], material.emissiveFactor[1], material.emissiveFactor[2]); + glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], + material.emissiveFactor[1], + material.emissiveFactor[2]); fbxmat._material->setEmissive(emissive); } @@ -914,7 +1010,9 @@ void GLTFReader::setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& materia if (material.defined["pbrMetallicRoughness"]) { fbxmat.isPBSMaterial = true; - if (material.pbrMetallicRoughness.defined["metallicFactor"]) fbxmat.metallic = material.pbrMetallicRoughness.metallicFactor; + if (material.pbrMetallicRoughness.defined["metallicFactor"]) { + fbxmat.metallic = material.pbrMetallicRoughness.metallicFactor; + } if (material.pbrMetallicRoughness.defined["baseColorTexture"]) { fbxmat.opacityTexture = getFBXTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); fbxmat.albedoTexture = getFBXTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); @@ -927,9 +1025,14 @@ void GLTFReader::setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& materia fbxmat.useRoughnessMap = true; } - if (material.pbrMetallicRoughness.defined["roughnessFactor"]) fbxmat._material->setRoughness(material.pbrMetallicRoughness.roughnessFactor); - if (material.pbrMetallicRoughness.defined["baseColorFactor"] && material.pbrMetallicRoughness.baseColorFactor.size() == 4) { - glm::vec3 dcolor = glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], material.pbrMetallicRoughness.baseColorFactor[1], material.pbrMetallicRoughness.baseColorFactor[2]); + if (material.pbrMetallicRoughness.defined["roughnessFactor"]) { + fbxmat._material->setRoughness(material.pbrMetallicRoughness.roughnessFactor); + } + if (material.pbrMetallicRoughness.defined["baseColorFactor"] && + material.pbrMetallicRoughness.baseColorFactor.size() == 4) { + glm::vec3 dcolor = glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], + material.pbrMetallicRoughness.baseColorFactor[1], + material.pbrMetallicRoughness.baseColorFactor[2]); fbxmat.diffuseColor = dcolor; fbxmat._material->setAlbedo(dcolor); fbxmat._material->setOpacity(material.pbrMetallicRoughness.baseColorFactor[3]); @@ -939,7 +1042,8 @@ void GLTFReader::setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& materia } template -bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType) { +bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength, + QVector& outarray, int accessorType) { QDataStream blobstream(bin); blobstream.setByteOrder(QDataStream::LittleEndian); @@ -954,22 +1058,25 @@ bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength while (outarray.size() < vsize) { - T value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14, value15, value16; + + T value1, value2, value3, value4, + value5, value6, value7, value8, + value9, value10, value11, value12, + value13, value14, value15, value16; + if (accessorType == GLTFAccessorType::SCALAR) { blobstream >> value1; outarray.push_back(value1); - } - else if (accessorType == GLTFAccessorType::VEC2) { + } else if (accessorType == GLTFAccessorType::VEC2) { blobstream >> value1; blobstream >> value2; outarray.push_back(value1); outarray.push_back(value2); - } - else if (accessorType == GLTFAccessorType::VEC3) { + } else if (accessorType == GLTFAccessorType::VEC3) { blobstream >> value1; blobstream >> value2; @@ -978,8 +1085,7 @@ bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength outarray.push_back(value1); outarray.push_back(value2); outarray.push_back(value3); - } - else if (accessorType == GLTFAccessorType::VEC4 || accessorType == GLTFAccessorType::MAT2) { + } else if (accessorType == GLTFAccessorType::VEC4 || accessorType == GLTFAccessorType::MAT2) { blobstream >> value1; blobstream >> value2; @@ -990,8 +1096,7 @@ bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength outarray.push_back(value2); outarray.push_back(value3); outarray.push_back(value4); - } - else if (accessorType == GLTFAccessorType::MAT3) { + } else if (accessorType == GLTFAccessorType::MAT3) { blobstream >> value1; blobstream >> value2; @@ -1012,8 +1117,7 @@ bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength outarray.push_back(value7); outarray.push_back(value8); outarray.push_back(value9); - } - else if (accessorType == GLTFAccessorType::MAT4) { + } else if (accessorType == GLTFAccessorType::MAT4) { blobstream >> value1; blobstream >> value2; @@ -1055,7 +1159,8 @@ bool GLTFReader::readArray(const QByteArray& bin, int byteOffset, int byteLength return true; } template -bool GLTFReader::addArrayOfType(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType, int componentType) { +bool GLTFReader::addArrayOfType(const QByteArray& bin, int byteOffset, int byteLength, + QVector& outarray, int accessorType, int componentType) { switch (componentType) { case GLTFAccessorComponentType::BYTE: {} @@ -1083,8 +1188,9 @@ bool GLTFReader::addArrayOfType(const QByteArray& bin, int byteOffset, int byteL return true; } -void GLTFReader::retriangulate(const QVector& inIndices, const QVector& in_vertices, const QVector& in_normals, - QVector& outIndices, QVector& out_vertices, QVector& out_normals) { +void GLTFReader::retriangulate(const QVector& inIndices, const QVector& in_vertices, + const QVector& in_normals, QVector& outIndices, + QVector& out_vertices, QVector& out_normals) { for (int i = 0; i < inIndices.size(); i = i + 3) { int idx1 = inIndices[i]; diff --git a/libraries/fbx/src/GLTFReader.h b/libraries/fbx/src/GLTFReader.h index f656dac0ff..e8ff590d04 100644 --- a/libraries/fbx/src/GLTFReader.h +++ b/libraries/fbx/src/GLTFReader.h @@ -12,10 +12,11 @@ #ifndef hifi_GLTFReader_h #define hifi_GLTFReader_h -#include "FBXReader.h" +#include #include #include "ModelFormatLogging.h" -#include +#include "FBXReader.h" + struct GLTFAsset { QString generator; @@ -23,9 +24,15 @@ struct GLTFAsset { QString copyright; QMap defined; void dump() { - if (defined["generator"]) qCDebug(modelformat) << "generator: " << generator; - if (defined["version"]) qCDebug(modelformat) << "version: " << version; - if (defined["copyright"]) qCDebug(modelformat) << "copyright: " << copyright; + if (defined["generator"]) { + qCDebug(modelformat) << "generator: " << generator; + } + if (defined["version"]) { + qCDebug(modelformat) << "version: " << version; + } + if (defined["copyright"]) { + qCDebug(modelformat) << "copyright: " << copyright; + } } }; @@ -44,17 +51,39 @@ struct GLTFNode { QString jointName; QMap defined; void dump() { - if (defined["name"]) qCDebug(modelformat) << "name: " << name; - if (defined["camera"]) qCDebug(modelformat) << "camera: " << camera; - if (defined["mesh"]) qCDebug(modelformat) << "mesh: " << mesh; - if (defined["skin"]) qCDebug(modelformat) << "skin: " << skin; - if (defined["jointName"]) qCDebug(modelformat) << "jointName: " << jointName; - if (defined["children"]) qCDebug(modelformat) << "children: " << children; - if (defined["translation"]) qCDebug(modelformat) << "translation: " << translation; - if (defined["rotation"]) qCDebug(modelformat) << "rotation: " << rotation; - if (defined["scale"]) qCDebug(modelformat) << "scale: " << scale; - if (defined["matrix"]) qCDebug(modelformat) << "matrix: " << matrix; - if (defined["skeletons"]) qCDebug(modelformat) << "skeletons: " << skeletons; + if (defined["name"]) { + qCDebug(modelformat) << "name: " << name; + } + if (defined["camera"]) { + qCDebug(modelformat) << "camera: " << camera; + } + if (defined["mesh"]) { + qCDebug(modelformat) << "mesh: " << mesh; + } + if (defined["skin"]) { + qCDebug(modelformat) << "skin: " << skin; + } + if (defined["jointName"]) { + qCDebug(modelformat) << "jointName: " << jointName; + } + if (defined["children"]) { + qCDebug(modelformat) << "children: " << children; + } + if (defined["translation"]) { + qCDebug(modelformat) << "translation: " << translation; + } + if (defined["rotation"]) { + qCDebug(modelformat) << "rotation: " << rotation; + } + if (defined["scale"]) { + qCDebug(modelformat) << "scale: " << scale; + } + if (defined["matrix"]) { + qCDebug(modelformat) << "matrix: " << matrix; + } + if (defined["skeletons"]) { + qCDebug(modelformat) << "skeletons: " << skeletons; + } } }; @@ -66,9 +95,15 @@ struct GLTFMeshPrimitivesTarget { int tangent; QMap defined; void dump() { - if (defined["normal"]) qCDebug(modelformat) << "normal: " << normal; - if (defined["position"]) qCDebug(modelformat) << "position: " << position; - if (defined["tangent"]) qCDebug(modelformat) << "tangent: " << tangent; + if (defined["normal"]) { + qCDebug(modelformat) << "normal: " << normal; + } + if (defined["position"]) { + qCDebug(modelformat) << "position: " << position; + } + if (defined["tangent"]) { + qCDebug(modelformat) << "tangent: " << tangent; + } } }; @@ -90,7 +125,9 @@ struct GLTFMeshPrimitiveAttr { void dump() { QList keys = values.keys(); qCDebug(modelformat) << "values: "; - foreach(auto k, keys) qCDebug(modelformat) << k << ": " << values[k]; + foreach(auto k, keys) { + qCDebug(modelformat) << k << ": " << values[k]; + } } }; @@ -106,9 +143,15 @@ struct GLTFMeshPrimitive { qCDebug(modelformat) << "attributes: "; attributes.dump(); } - if (defined["indices"]) qCDebug(modelformat) << "indices: " << indices; - if (defined["material"]) qCDebug(modelformat) << "material: " << material; - if (defined["mode"]) qCDebug(modelformat) << "mode: " << mode; + if (defined["indices"]) { + qCDebug(modelformat) << "indices: " << indices; + } + if (defined["material"]) { + qCDebug(modelformat) << "material: " << material; + } + if (defined["mode"]) { + qCDebug(modelformat) << "mode: " << mode; + } if (defined["targets"]) { qCDebug(modelformat) << "targets: "; foreach(auto t, targets) t.dump(); @@ -122,12 +165,16 @@ struct GLTFMesh { QVector weights; QMap defined; void dump() { - if (defined["name"]) qCDebug(modelformat) << "name: " << name; + if (defined["name"]) { + qCDebug(modelformat) << "name: " << name; + } if (defined["primitives"]) { qCDebug(modelformat) << "primitives: "; foreach(auto prim, primitives) prim.dump(); } - if (defined["weights"]) qCDebug(modelformat) << "weights: " << weights; + if (defined["weights"]) { + qCDebug(modelformat) << "weights: " << weights; + } } }; @@ -147,10 +194,18 @@ struct GLTFBufferView { int target; QMap defined; void dump() { - if (defined["buffer"]) qCDebug(modelformat) << "buffer: " << buffer; - if (defined["byteLength"]) qCDebug(modelformat) << "byteLength: " << byteLength; - if (defined["byteOffset"]) qCDebug(modelformat) << "byteOffset: " << byteOffset; - if (defined["target"]) qCDebug(modelformat) << "target: " << target; + if (defined["buffer"]) { + qCDebug(modelformat) << "buffer: " << buffer; + } + if (defined["byteLength"]) { + qCDebug(modelformat) << "byteLength: " << byteLength; + } + if (defined["byteOffset"]) { + qCDebug(modelformat) << "byteOffset: " << byteOffset; + } + if (defined["target"]) { + qCDebug(modelformat) << "target: " << target; + } } }; @@ -162,9 +217,15 @@ struct GLTFBuffer { QByteArray blob; QMap defined; void dump() { - if (defined["byteLength"]) qCDebug(modelformat) << "byteLength: " << byteLength; - if (defined["uri"]) qCDebug(modelformat) << "uri: " << uri; - if (defined["blob"]) qCDebug(modelformat) << "blob: " << "DEFINED"; + if (defined["byteLength"]) { + qCDebug(modelformat) << "byteLength: " << byteLength; + } + if (defined["uri"]) { + qCDebug(modelformat) << "uri: " << uri; + } + if (defined["blob"]) { + qCDebug(modelformat) << "blob: " << "DEFINED"; + } } }; @@ -195,10 +256,18 @@ struct GLTFSampler { int wrapT; QMap defined; void dump() { - if (defined["magFilter"]) qCDebug(modelformat) << "magFilter: " << magFilter; - if (defined["minFilter"]) qCDebug(modelformat) << "minFilter: " << minFilter; - if (defined["wrapS"]) qCDebug(modelformat) << "wrapS: " << wrapS; - if (defined["wrapT"]) qCDebug(modelformat) << "wrapT: " << wrapT; + if (defined["magFilter"]) { + qCDebug(modelformat) << "magFilter: " << magFilter; + } + if (defined["minFilter"]) { + qCDebug(modelformat) << "minFilter: " << minFilter; + } + if (defined["wrapS"]) { + qCDebug(modelformat) << "wrapS: " << wrapS; + } + if (defined["wrapT"]) { + qCDebug(modelformat) << "wrapT: " << wrapT; + } } }; @@ -211,10 +280,18 @@ struct GLTFCameraPerspective { double znear; //required QMap defined; void dump() { - if (defined["zfar"]) qCDebug(modelformat) << "zfar: " << zfar; - if (defined["znear"]) qCDebug(modelformat) << "znear: " << znear; - if (defined["aspectRatio"]) qCDebug(modelformat) << "aspectRatio: " << aspectRatio; - if (defined["yfov"]) qCDebug(modelformat) << "yfov: " << yfov; + if (defined["zfar"]) { + qCDebug(modelformat) << "zfar: " << zfar; + } + if (defined["znear"]) { + qCDebug(modelformat) << "znear: " << znear; + } + if (defined["aspectRatio"]) { + qCDebug(modelformat) << "aspectRatio: " << aspectRatio; + } + if (defined["yfov"]) { + qCDebug(modelformat) << "yfov: " << yfov; + } } }; @@ -225,10 +302,18 @@ struct GLTFCameraOrthographic { double ymag; //required QMap defined; void dump() { - if (defined["zfar"]) qCDebug(modelformat) << "zfar: " << zfar; - if (defined["znear"]) qCDebug(modelformat) << "znear: " << znear; - if (defined["xmag"]) qCDebug(modelformat) << "xmag: " << xmag; - if (defined["ymag"]) qCDebug(modelformat) << "ymag: " << ymag; + if (defined["zfar"]) { + qCDebug(modelformat) << "zfar: " << zfar; + } + if (defined["znear"]) { + qCDebug(modelformat) << "znear: " << znear; + } + if (defined["xmag"]) { + qCDebug(modelformat) << "xmag: " << xmag; + } + if (defined["ymag"]) { + qCDebug(modelformat) << "ymag: " << ymag; + } } }; @@ -246,10 +331,18 @@ struct GLTFCamera { int type; QMap defined; void dump() { - if (defined["name"]) qCDebug(modelformat) << "name: " << name; - if (defined["type"]) qCDebug(modelformat) << "type: " << type; - if (defined["perspective"]) perspective.dump(); - if (defined["orthographic"]) orthographic.dump(); + if (defined["name"]) { + qCDebug(modelformat) << "name: " << name; + } + if (defined["type"]) { + qCDebug(modelformat) << "type: " << type; + } + if (defined["perspective"]) { + perspective.dump(); + } + if (defined["orthographic"]) { + orthographic.dump(); + } } }; @@ -268,9 +361,15 @@ struct GLTFImage { int bufferView; //required (or) QMap defined; void dump() { - if (defined["uri"]) qCDebug(modelformat) << "uri: " << uri; - if (defined["mimeType"]) qCDebug(modelformat) << "mimeType: " << mimeType; - if (defined["bufferView"]) qCDebug(modelformat) << "bufferView: " << bufferView; + if (defined["uri"]) { + qCDebug(modelformat) << "uri: " << uri; + } + if (defined["mimeType"]) { + qCDebug(modelformat) << "mimeType: " << mimeType; + } + if (defined["bufferView"]) { + qCDebug(modelformat) << "bufferView: " << bufferView; + } } }; @@ -284,12 +383,24 @@ struct GLTFpbrMetallicRoughness { double roughnessFactor; QMap defined; void dump() { - if (defined["baseColorFactor"]) qCDebug(modelformat) << "baseColorFactor: " << baseColorFactor; - if (defined["baseColorTexture"]) qCDebug(modelformat) << "baseColorTexture: " << baseColorTexture; - if (defined["metallicRoughnessTexture"]) qCDebug(modelformat) << "metallicRoughnessTexture: " << metallicRoughnessTexture; - if (defined["metallicFactor"]) qCDebug(modelformat) << "metallicFactor: " << metallicFactor; - if (defined["roughnessFactor"]) qCDebug(modelformat) << "roughnessFactor: " << roughnessFactor; - if (defined["baseColorFactor"]) qCDebug(modelformat) << "baseColorFactor: " << baseColorFactor; + if (defined["baseColorFactor"]) { + qCDebug(modelformat) << "baseColorFactor: " << baseColorFactor; + } + if (defined["baseColorTexture"]) { + qCDebug(modelformat) << "baseColorTexture: " << baseColorTexture; + } + if (defined["metallicRoughnessTexture"]) { + qCDebug(modelformat) << "metallicRoughnessTexture: " << metallicRoughnessTexture; + } + if (defined["metallicFactor"]) { + qCDebug(modelformat) << "metallicFactor: " << metallicFactor; + } + if (defined["roughnessFactor"]) { + qCDebug(modelformat) << "roughnessFactor: " << roughnessFactor; + } + if (defined["baseColorFactor"]) { + qCDebug(modelformat) << "baseColorFactor: " << baseColorFactor; + } } }; @@ -313,12 +424,24 @@ struct GLTFMaterial { GLTFpbrMetallicRoughness pbrMetallicRoughness; QMap defined; void dump() { - if (defined["name"]) qCDebug(modelformat) << "name: " << name; - if (defined["emissiveTexture"]) qCDebug(modelformat) << "emissiveTexture: " << emissiveTexture; - if (defined["normalTexture"]) qCDebug(modelformat) << "normalTexture: " << normalTexture; - if (defined["occlusionTexture"]) qCDebug(modelformat) << "occlusionTexture: " << occlusionTexture; - if (defined["emissiveFactor"]) qCDebug(modelformat) << "emissiveFactor: " << emissiveFactor; - if (defined["pbrMetallicRoughness"]) pbrMetallicRoughness.dump(); + if (defined["name"]) { + qCDebug(modelformat) << "name: " << name; + } + if (defined["emissiveTexture"]) { + qCDebug(modelformat) << "emissiveTexture: " << emissiveTexture; + } + if (defined["normalTexture"]) { + qCDebug(modelformat) << "normalTexture: " << normalTexture; + } + if (defined["occlusionTexture"]) { + qCDebug(modelformat) << "occlusionTexture: " << occlusionTexture; + } + if (defined["emissiveFactor"]) { + qCDebug(modelformat) << "emissiveFactor: " << emissiveFactor; + } + if (defined["pbrMetallicRoughness"]) { + pbrMetallicRoughness.dump(); + } } }; @@ -356,19 +479,35 @@ struct GLTFAccessor { QVector min; QMap defined; void dump() { - if (defined["bufferView"]) qCDebug(modelformat) << "bufferView: " << bufferView; - if (defined["byteOffset"]) qCDebug(modelformat) << "byteOffset: " << byteOffset; - if (defined["componentType"]) qCDebug(modelformat) << "componentType: " << componentType; - if (defined["count"]) qCDebug(modelformat) << "count: " << count; - if (defined["type"]) qCDebug(modelformat) << "type: " << type; - if (defined["normalized"]) qCDebug(modelformat) << "normalized: " << (normalized ? "TRUE" : "FALSE"); + if (defined["bufferView"]) { + qCDebug(modelformat) << "bufferView: " << bufferView; + } + if (defined["byteOffset"]) { + qCDebug(modelformat) << "byteOffset: " << byteOffset; + } + if (defined["componentType"]) { + qCDebug(modelformat) << "componentType: " << componentType; + } + if (defined["count"]) { + qCDebug(modelformat) << "count: " << count; + } + if (defined["type"]) { + qCDebug(modelformat) << "type: " << type; + } + if (defined["normalized"]) { + qCDebug(modelformat) << "normalized: " << (normalized ? "TRUE" : "FALSE"); + } if (defined["max"]) { qCDebug(modelformat) << "max: "; - foreach(float m, max) qCDebug(modelformat) << m; + foreach(float m, max) { + qCDebug(modelformat) << m; + } } if (defined["min"]) { qCDebug(modelformat) << "min: "; - foreach(float m, min) qCDebug(modelformat) << m; + foreach(float m, min) { + qCDebug(modelformat) << m; + } } } }; @@ -388,8 +527,12 @@ struct GLTFChannelTarget { int path; QMap defined; void dump() { - if (defined["node"]) qCDebug(modelformat) << "node: " << node; - if (defined["path"]) qCDebug(modelformat) << "path: " << path; + if (defined["node"]) { + qCDebug(modelformat) << "node: " << node; + } + if (defined["path"]) { + qCDebug(modelformat) << "path: " << path; + } } }; @@ -398,8 +541,12 @@ struct GLTFChannel { GLTFChannelTarget target; QMap defined; void dump() { - if (defined["sampler"]) qCDebug(modelformat) << "sampler: " << sampler; - if (defined["target"]) target.dump(); + if (defined["sampler"]) { + qCDebug(modelformat) << "sampler: " << sampler; + } + if (defined["target"]) { + target.dump(); + } } }; @@ -415,9 +562,15 @@ struct GLTFAnimationSampler { int interpolation; QMap defined; void dump() { - if (defined["input"]) qCDebug(modelformat) << "input: " << input; - if (defined["output"]) qCDebug(modelformat) << "output: " << output; - if (defined["interpolation"]) qCDebug(modelformat) << "interpolation: " << interpolation; + if (defined["input"]) { + qCDebug(modelformat) << "input: " << input; + } + if (defined["output"]) { + qCDebug(modelformat) << "output: " << output; + } + if (defined["interpolation"]) { + qCDebug(modelformat) << "interpolation: " << interpolation; + } } }; @@ -426,8 +579,12 @@ struct GLTFAnimation { QVector samplers; QMap defined; void dump() { - if (defined["channels"]) foreach(auto channel, channels) channel.dump(); - if (defined["samplers"]) foreach(auto sampler, samplers) sampler.dump(); + if (defined["channels"]) { + foreach(auto channel, channels) channel.dump(); + } + if (defined["samplers"]) { + foreach(auto sampler, samplers) sampler.dump(); + } } }; @@ -436,7 +593,9 @@ struct GLTFScene { QVector nodes; QMap defined; void dump() { - if (defined["name"]) qCDebug(modelformat) << "name: " << name; + if (defined["name"]) { + qCDebug(modelformat) << "name: " << name; + } if (defined["nodes"]) { qCDebug(modelformat) << "nodes: "; foreach(int node, nodes) qCDebug(modelformat) << node; @@ -450,8 +609,12 @@ struct GLTFSkin { int skeleton; QMap defined; void dump() { - if (defined["inverseBindMatrices"]) qCDebug(modelformat) << "inverseBindMatrices: " << inverseBindMatrices; - if (defined["skeleton"]) qCDebug(modelformat) << "skeleton: " << skeleton; + if (defined["inverseBindMatrices"]) { + qCDebug(modelformat) << "inverseBindMatrices: " << inverseBindMatrices; + } + if (defined["skeleton"]) { + qCDebug(modelformat) << "skeleton: " << skeleton; + } if (defined["joints"]) { qCDebug(modelformat) << "joints: "; foreach(int joint, joints) qCDebug(modelformat) << joint; @@ -464,8 +627,12 @@ struct GLTFTexture { int source; QMap defined; void dump() { - if (defined["sampler"]) qCDebug(modelformat) << "sampler: " << sampler; - if (defined["source"]) qCDebug(modelformat) << "source: " << sampler; + if (defined["sampler"]) { + qCDebug(modelformat) << "sampler: " << sampler; + } + if (defined["source"]) { + qCDebug(modelformat) << "source: " << sampler; + } } }; @@ -487,21 +654,51 @@ struct GLTFFile { QVector textures; QMap defined; void dump() { - if (defined["asset"]) asset.dump(); - if (defined["scene"]) qCDebug(modelformat) << "scene: " << scene; - if (defined["accessors"]) foreach(auto acc, accessors) acc.dump(); - if (defined["animations"]) foreach(auto ani, animations) ani.dump(); - if (defined["bufferviews"]) foreach(auto bv, bufferviews) bv.dump(); - if (defined["buffers"]) foreach(auto b, buffers) b.dump(); - if (defined["cameras"]) foreach(auto c, cameras) c.dump(); - if (defined["images"]) foreach(auto i, images) i.dump(); - if (defined["materials"]) foreach(auto mat, materials) mat.dump(); - if (defined["meshes"]) foreach(auto mes, meshes) mes.dump(); - if (defined["nodes"]) foreach(auto nod, nodes) nod.dump(); - if (defined["samplers"]) foreach(auto sa, samplers) sa.dump(); - if (defined["scenes"]) foreach(auto sc, scenes) sc.dump(); - if (defined["skins"]) foreach(auto sk, nodes) sk.dump(); - if (defined["textures"]) foreach(auto tex, textures) tex.dump(); + if (defined["asset"]) { + asset.dump(); + } + if (defined["scene"]) { + qCDebug(modelformat) << "scene: " << scene; + } + if (defined["accessors"]) { + foreach(auto acc, accessors) acc.dump(); + } + if (defined["animations"]) { + foreach(auto ani, animations) ani.dump(); + } + if (defined["bufferviews"]) { + foreach(auto bv, bufferviews) bv.dump(); + } + if (defined["buffers"]) { + foreach(auto b, buffers) b.dump(); + } + if (defined["cameras"]) { + foreach(auto c, cameras) c.dump(); + } + if (defined["images"]) { + foreach(auto i, images) i.dump(); + } + if (defined["materials"]) { + foreach(auto mat, materials) mat.dump(); + } + if (defined["meshes"]) { + foreach(auto mes, meshes) mes.dump(); + } + if (defined["nodes"]) { + foreach(auto nod, nodes) nod.dump(); + } + if (defined["samplers"]) { + foreach(auto sa, samplers) sa.dump(); + } + if (defined["scenes"]) { + foreach(auto sc, scenes) sc.dump(); + } + if (defined["skins"]) { + foreach(auto sk, nodes) sk.dump(); + } + if (defined["textures"]) { + foreach(auto tex, textures) tex.dump(); + } } }; @@ -509,24 +706,33 @@ class GLTFReader : public QObject { Q_OBJECT public: GLTFReader(); - FBXGeometry* readGLTF(QByteArray& model, const QVariantHash& mapping, const QUrl& url, bool loadLightmaps = true, float lightmapLevel = 1.0f); + FBXGeometry* readGLTF(QByteArray& model, const QVariantHash& mapping, + const QUrl& url, bool loadLightmaps = true, float lightmapLevel = 1.0f); private: GLTFFile _file; QUrl _url; - glm::mat4 getModelTransform(const GLTFNode& node); + const glm::mat4& getModelTransform(const GLTFNode& node); bool buildGeometry(FBXGeometry& geometry, const QUrl& url); bool parseGLTF(const QByteArray& model); - bool getStringVal(const QJsonObject& object, const QString& fieldname, QString& value, QMap& defined); - bool getBoolVal(const QJsonObject& object, const QString& fieldname, bool& value, QMap& defined); - bool getIntVal(const QJsonObject& object, const QString& fieldname, int& value, QMap& defined); - bool getDoubleVal(const QJsonObject& object, const QString& fieldname, double& value, QMap& defined); - bool getObjectVal(const QJsonObject& object, const QString& fieldname, QJsonObject& value, QMap& defined); - bool getIntArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined); - bool getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, QVector& values, QMap& defined); - bool getObjectArrayVal(const QJsonObject& object, const QString& fieldname, QJsonArray& objects, QMap& defined); + bool getStringVal(const QJsonObject& object, const QString& fieldname, + QString& value, QMap& defined); + bool getBoolVal(const QJsonObject& object, const QString& fieldname, + bool& value, QMap& defined); + bool getIntVal(const QJsonObject& object, const QString& fieldname, + int& value, QMap& defined); + bool getDoubleVal(const QJsonObject& object, const QString& fieldname, + double& value, QMap& defined); + bool getObjectVal(const QJsonObject& object, const QString& fieldname, + QJsonObject& value, QMap& defined); + bool getIntArrayVal(const QJsonObject& object, const QString& fieldname, + QVector& values, QMap& defined); + bool getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, + QVector& values, QMap& defined); + bool getObjectArrayVal(const QJsonObject& object, const QString& fieldname, + QJsonArray& objects, QMap& defined); int getMaterialAlphaMode(const QString& type); int getAccessorType(const QString& type); @@ -535,7 +741,8 @@ private: int getImageMimeType(const QString& mime); int getMeshPrimitiveRenderingMode(const QString& type); - bool getIndexFromObject(const QJsonObject& object, const QString& field, int& outidx, QMap& defined); + bool getIndexFromObject(const QJsonObject& object, const QString& field, + int& outidx, QMap& defined); bool setAsset(const QJsonObject& object); bool addAccessor(const QJsonObject& object); @@ -555,13 +762,16 @@ private: bool readBinary(const QString& url, QByteArray& outdata); template - bool readArray(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType); + bool readArray(const QByteArray& bin, int byteOffset, int byteLength, + QVector& outarray, int accessorType); template - bool addArrayOfType(const QByteArray& bin, int byteOffset, int byteLength, QVector& outarray, int accessorType, int componentType); + bool addArrayOfType(const QByteArray& bin, int byteOffset, int byteLength, + QVector& outarray, int accessorType, int componentType); - void retriangulate(const QVector& in_indices, const QVector& in_vertices, const QVector& in_normals, - QVector& out_indices, QVector& out_vertices, QVector& out_normals); + void retriangulate(const QVector& in_indices, const QVector& in_vertices, + const QVector& in_normals, QVector& out_indices, + QVector& out_vertices, QVector& out_normals); std::tuple requestData(QUrl& url); QNetworkReply* request(QUrl& url, bool isTest); @@ -569,7 +779,7 @@ private: void setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& material); - FBXTexture getFBXTexture(const GLTFTexture& texture); + const FBXTexture& getFBXTexture(const GLTFTexture& texture); void fbxDebugDump(const FBXGeometry& fbxgeo); }; From 25b419a1a1b8a631c7d7e02154f5d3fa7aa7b490 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Tue, 10 Oct 2017 12:44:38 -0700 Subject: [PATCH 012/187] fixed returning a reference to a local variable --- libraries/fbx/src/GLTFReader.cpp | 4 ++-- libraries/fbx/src/GLTFReader.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/fbx/src/GLTFReader.cpp b/libraries/fbx/src/GLTFReader.cpp index 198d9c2566..c8501688ac 100644 --- a/libraries/fbx/src/GLTFReader.cpp +++ b/libraries/fbx/src/GLTFReader.cpp @@ -660,7 +660,7 @@ bool GLTFReader::parseGLTF(const QByteArray& model) { return true; } -const glm::mat4& GLTFReader::getModelTransform(const GLTFNode& node) { +glm::mat4 GLTFReader::getModelTransform(const GLTFNode& node) { glm::mat4 tmat = glm::mat4(1.0); if (node.defined["matrix"] && node.matrix.size() == 16) { @@ -962,7 +962,7 @@ QNetworkReply* GLTFReader::request(QUrl& url, bool isTest) { return netReply; // trying to sync later on. } -const FBXTexture& GLTFReader::getFBXTexture(const GLTFTexture& texture) { +FBXTexture GLTFReader::getFBXTexture(const GLTFTexture& texture) { FBXTexture fbxtex = FBXTexture(); fbxtex.texcoordSet = 0; diff --git a/libraries/fbx/src/GLTFReader.h b/libraries/fbx/src/GLTFReader.h index e8ff590d04..3554594768 100644 --- a/libraries/fbx/src/GLTFReader.h +++ b/libraries/fbx/src/GLTFReader.h @@ -712,7 +712,7 @@ private: GLTFFile _file; QUrl _url; - const glm::mat4& getModelTransform(const GLTFNode& node); + glm::mat4 getModelTransform(const GLTFNode& node); bool buildGeometry(FBXGeometry& geometry, const QUrl& url); bool parseGLTF(const QByteArray& model); @@ -779,7 +779,7 @@ private: void setFBXMaterial(FBXMaterial& fbxmat, const GLTFMaterial& material); - const FBXTexture& getFBXTexture(const GLTFTexture& texture); + FBXTexture getFBXTexture(const GLTFTexture& texture); void fbxDebugDump(const FBXGeometry& fbxgeo); }; From 1da5c221ac19b973f3232c5d3b266ee3d0e3c94c Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Tue, 10 Oct 2017 13:53:18 -0700 Subject: [PATCH 013/187] ModelCache.cpp to coding standard --- .../src/model-networking/ModelCache.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 93b12f09fe..56862957de 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -189,28 +189,23 @@ void GeometryReader::run() { if (fbxGeometry->meshes.size() == 0 && fbxGeometry->joints.size() == 0) { throw QString("empty geometry, possibly due to an unsupported FBX version"); } - } - else if (_url.path().toLower().endsWith(".obj")) { + } else if (_url.path().toLower().endsWith(".obj")) { fbxGeometry.reset(OBJReader().readOBJ(_data, _mapping, _combineParts, _url)); - } - else if (_url.path().toLower().endsWith(".obj.gz")) { + } else if (_url.path().toLower().endsWith(".obj.gz")) { QByteArray uncompressedData; if (gunzip(_data, uncompressedData)) { fbxGeometry.reset(OBJReader().readOBJ(uncompressedData, _mapping, _combineParts, _url)); - } - else { + } else { throw QString("failed to decompress .obj.gz"); } - } - else if (_url.path().toLower().endsWith(".gltf")) { + } else if (_url.path().toLower().endsWith(".gltf")) { std::shared_ptr glreader = std::make_shared(); fbxGeometry.reset(glreader->readGLTF(_data, _mapping, _url)); if (fbxGeometry->meshes.size() == 0 && fbxGeometry->joints.size() == 0) { throw QString("empty geometry, possibly due to an unsupported GLTF version"); } - } - else { + } else { throw QString("unsupported format"); } From 45f1f074dff350da0762b180884383e7ae8f8851 Mon Sep 17 00:00:00 2001 From: vladest Date: Thu, 12 Oct 2017 20:52:40 +0200 Subject: [PATCH 014/187] Reduce combobox dropdown height taking keyboard in account --- interface/resources/qml/hifi/WebBrowser.qml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index f1c6efde9a..1b49701bdf 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -38,14 +38,12 @@ Rectangle { OpenSearchEngine { id: searchEngine name: "Google"; - //icon: ":icons/sites/google.png" searchUrlTemplate: "https://www.google.com/search?client=hifibrowser&q={searchTerms}"; suggestionsUrlTemplate: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; suggestionsUrl: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; onSuggestions: { if (suggestions.length > 0) { - console.log("suggestions:", suggestions) suggestionsList = [] suggestionsList.push(addressBar.editText) //do not overwrite edit text for(var i = 0; i < suggestions.length; i++) { @@ -128,7 +126,7 @@ Rectangle { goTo(textAt(index)) } - popup.bottomPadding: keyboard.height + popup.height: webEngineView.height onFocusChanged: { if (focus) { From 596be8ec271139a94c9c6b40ddf5a38644a46065 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 17 Oct 2017 12:00:56 -0700 Subject: [PATCH 015/187] pickmanager wip --- interface/src/raypick/JointRayPick.cpp | 4 +- interface/src/raypick/JointRayPick.h | 6 +- interface/src/raypick/MouseRayPick.cpp | 5 +- interface/src/raypick/MouseRayPick.h | 6 +- interface/src/raypick/Pick.cpp | 10 + .../RayPick.h => interface/src/raypick/Pick.h | 135 ++++++++-- interface/src/raypick/PickManager.h | 244 ++++++++++++++++++ interface/src/raypick/RayPick.cpp | 39 +++ interface/src/raypick/RayPick.h | 35 +++ interface/src/raypick/RayPickManager.cpp | 192 +------------- interface/src/raypick/RayPickManager.h | 58 +---- .../src/raypick}/StaticRayPick.cpp | 4 +- .../src/raypick}/StaticRayPick.h | 4 +- .../pointers/src/pointers/rays/RayPick.cpp | 75 ------ libraries/shared/src/RegisteredMetaTypes.h | 15 ++ 15 files changed, 487 insertions(+), 345 deletions(-) create mode 100644 interface/src/raypick/Pick.cpp rename libraries/pointers/src/pointers/rays/RayPick.h => interface/src/raypick/Pick.h (51%) create mode 100644 interface/src/raypick/PickManager.h create mode 100644 interface/src/raypick/RayPick.cpp create mode 100644 interface/src/raypick/RayPick.h rename {libraries/pointers/src/pointers/rays => interface/src/raypick}/StaticRayPick.cpp (73%) rename {libraries/pointers/src/pointers/rays => interface/src/raypick}/StaticRayPick.h (75%) delete mode 100644 libraries/pointers/src/pointers/rays/RayPick.cpp diff --git a/interface/src/raypick/JointRayPick.cpp b/interface/src/raypick/JointRayPick.cpp index cf3f380ca0..d3991eac24 100644 --- a/interface/src/raypick/JointRayPick.cpp +++ b/interface/src/raypick/JointRayPick.cpp @@ -12,7 +12,7 @@ #include "avatar/AvatarManager.h" -JointRayPick::JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const RayPickFilter& filter, const float maxDistance, const bool enabled) : +JointRayPick::JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance, const bool enabled) : RayPick(filter, maxDistance, enabled), _jointName(jointName), _posOffset(posOffset), @@ -20,7 +20,7 @@ JointRayPick::JointRayPick(const std::string& jointName, const glm::vec3& posOff { } -const PickRay JointRayPick::getPickRay(bool& valid) const { +const PickRay JointRayPick::getMathematicalPick(bool& valid) const { auto myAvatar = DependencyManager::get()->getMyAvatar(); int jointIndex = myAvatar->getJointIndex(QString::fromStdString(_jointName)); bool useAvatarHead = _jointName == "Avatar"; diff --git a/interface/src/raypick/JointRayPick.h b/interface/src/raypick/JointRayPick.h index e3e5670e20..b2bffe83c4 100644 --- a/interface/src/raypick/JointRayPick.h +++ b/interface/src/raypick/JointRayPick.h @@ -11,14 +11,14 @@ #ifndef hifi_JointRayPick_h #define hifi_JointRayPick_h -#include +#include "RayPick.h" class JointRayPick : public RayPick { public: - JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const RayPickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); + JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getPickRay(bool& valid) const override; + const PickRay getMathematicalPick(bool& valid) const override; private: std::string _jointName; diff --git a/interface/src/raypick/MouseRayPick.cpp b/interface/src/raypick/MouseRayPick.cpp index de59fde88d..27080f5857 100644 --- a/interface/src/raypick/MouseRayPick.cpp +++ b/interface/src/raypick/MouseRayPick.cpp @@ -10,16 +10,15 @@ // #include "MouseRayPick.h" -#include "DependencyManager.h" #include "Application.h" #include "display-plugins/CompositorHelper.h" -MouseRayPick::MouseRayPick(const RayPickFilter& filter, const float maxDistance, const bool enabled) : +MouseRayPick::MouseRayPick(const PickFilter& filter, const float maxDistance, const bool enabled) : RayPick(filter, maxDistance, enabled) { } -const PickRay MouseRayPick::getPickRay(bool& valid) const { +const PickRay MouseRayPick::getMathematicalPick(bool& valid) const { QVariant position = qApp->getApplicationCompositor().getReticleInterface()->getPosition(); if (position.isValid()) { QVariantMap posMap = position.toMap(); diff --git a/interface/src/raypick/MouseRayPick.h b/interface/src/raypick/MouseRayPick.h index 47f9404f3a..c565a03db7 100644 --- a/interface/src/raypick/MouseRayPick.h +++ b/interface/src/raypick/MouseRayPick.h @@ -11,14 +11,14 @@ #ifndef hifi_MouseRayPick_h #define hifi_MouseRayPick_h -#include +#include "RayPick.h" class MouseRayPick : public RayPick { public: - MouseRayPick(const RayPickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); + MouseRayPick(const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getPickRay(bool& valid) const override; + const PickRay getMathematicalPick(bool& valid) const override; }; #endif // hifi_MouseRayPick_h diff --git a/interface/src/raypick/Pick.cpp b/interface/src/raypick/Pick.cpp new file mode 100644 index 0000000000..030d2ef4b7 --- /dev/null +++ b/interface/src/raypick/Pick.cpp @@ -0,0 +1,10 @@ +// +// Created by Sam Gondelman 10/17/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 +// +#include "Pick.h" + +const PickFilter PickFilter::NOTHING; \ No newline at end of file diff --git a/libraries/pointers/src/pointers/rays/RayPick.h b/interface/src/raypick/Pick.h similarity index 51% rename from libraries/pointers/src/pointers/rays/RayPick.h rename to interface/src/raypick/Pick.h index 5a53891dc6..561c336f3b 100644 --- a/libraries/pointers/src/pointers/rays/RayPick.h +++ b/interface/src/raypick/Pick.h @@ -1,12 +1,12 @@ // -// Created by Sam Gondelman 7/11/2017 +// Created by Sam Gondelman 10/17/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 // -#ifndef hifi_RayPick_h -#define hifi_RayPick_h +#ifndef hifi_Pick_h +#define hifi_Pick_h #include #include @@ -16,7 +16,10 @@ #include #include -class RayPickFilter { +#include "EntityScriptingInterface.h" +#include "ui/overlays/Overlays.h" + +class PickFilter { public: enum FlagBit { PICK_ENTITIES = 0, @@ -39,11 +42,11 @@ public: // The key is the Flags Flags _flags; - RayPickFilter() {} - RayPickFilter(const Flags& flags) : _flags(flags) {} + PickFilter() {} + PickFilter(const Flags& flags) : _flags(flags) {} - bool operator== (const RayPickFilter& rhs) const { return _flags == rhs._flags; } - bool operator!= (const RayPickFilter& rhs) const { return _flags != rhs._flags; } + bool operator== (const PickFilter& rhs) const { return _flags == rhs._flags; } + bool operator!= (const PickFilter& rhs) const { return _flags != rhs._flags; } void setFlag(FlagBit flag, bool value) { _flags[flag] = value; } @@ -91,29 +94,42 @@ public: static constexpr unsigned int getBitMask(FlagBit bit) { return 1 << bit; } - static const RayPickFilter NOTHING; + static const PickFilter NOTHING; }; -class RayPick : protected ReadWriteLockable { +template +class Pick : protected ReadWriteLockable { public: - using Pointer = std::shared_ptr; + using Pointer = std::shared_ptr>; - RayPick(const RayPickFilter& filter, const float maxDistance, const bool enabled); + Pick(const PickFilter& filter, const float maxDistance, const bool enabled); - virtual const PickRay getPickRay(bool& valid) const = 0; + virtual const T getMathematicalPick(bool& valid) const = 0; + virtual RayToEntityIntersectionResult getEntityIntersection(const T& pick, bool precisionPicking, + const QVector& entitiesToInclude, + const QVector& entitiesToIgnore, + bool visibleOnly, bool collidableOnly) = 0; + virtual RayToOverlayIntersectionResult getOverlayIntersection(const T& pick, bool precisionPicking, + const QVector& overlaysToInclude, + const QVector& overlaysToIgnore, + bool visibleOnly, bool collidableOnly) = 0; + virtual RayToAvatarIntersectionResult getAvatarIntersection(const T& pick, + const QVector& avatarsToInclude, + const QVector& avatarsToIgnore) = 0; + virtual glm::vec3 getHUDIntersection(const T& pick) = 0; void enable(bool enabled = true); void disable() { enable(false); } - RayPickFilter getFilter() const; + PickFilter getFilter() const; float getMaxDistance() const; bool isEnabled() const; - RayPickResult getPrevRayPickResult() const; + RayPickResult getPrevPickResult() const; void setPrecisionPicking(bool precisionPicking); - void setRayPickResult(const RayPickResult& rayPickResult); + void setPickResult(const RayPickResult& rayPickResult); QVector getIgnoreItems() const; QVector getIncludeItems() const; @@ -144,7 +160,7 @@ public: void setIncludeItems(const QVector& items); private: - RayPickFilter _filter; + PickFilter _filter; const float _maxDistance; bool _enabled; RayPickResult _prevResult; @@ -153,4 +169,87 @@ private: QVector _includeItems; }; -#endif // hifi_RayPick_h + +template +Pick::Pick(const PickFilter& filter, const float maxDistance, const bool enabled) : + _filter(filter), + _maxDistance(maxDistance), + _enabled(enabled) { +} + +template +void Pick::enable(bool enabled) { + withWriteLock([&] { + _enabled = enabled; + }); +} + +template +PickFilter Pick::getFilter() const { + return resultWithReadLock([&] { + return _filter; + }); +} + +template +float Pick::getMaxDistance() const { + return _maxDistance; +} + +template +bool Pick::isEnabled() const { + withReadLock([&]) { + return _enabled; + } +} + +template +void Pick::setPrecisionPicking(bool precisionPicking) { + withWriteLock([&] { + _filter.setFlag(PickFilter::PICK_COARSE, !precisionPicking); + }); +} + +template +void Pick::setPickResult(const RayPickResult& PickResult) { + withWriteLock([&] { + _prevResult = PickResult; + }); +} + +template +QVector Pick::getIgnoreItems() const { + withReadLock([&]) { + return _ignoreItems; + } +} + +template +QVector Pick::getIncludeItems() const { + withReadLock([&]) { + return _includeItems; + } +} + +template +RayPickResult Pick::getPrevPickResult() const { + return resultWithReadLock([&] { + return _prevResult; + }); +} + +template +void Pick::setIgnoreItems(const QVector& ignoreItems) { + withWriteLock([&] { + _ignoreItems = ignoreItems; + }); +} + +template +void Pick::setIncludeItems(const QVector& includeItems) { + withWriteLock([&] { + _includeItems = includeItems; + }); +} + +#endif // hifi_Pick_h diff --git a/interface/src/raypick/PickManager.h b/interface/src/raypick/PickManager.h new file mode 100644 index 0000000000..228631449f --- /dev/null +++ b/interface/src/raypick/PickManager.h @@ -0,0 +1,244 @@ +// +// PickManager.h +// interface/src/raypick +// +// Created by Sam Gondelman 10/16/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 +// +#ifndef hifi_PickManager_h +#define hifi_PickManager_h + +#include + +#include "Pick.h" + +typedef struct RayCacheKey { + PickFilter::Flags mask; + QVector include; + QVector ignore; + + bool operator==(const RayCacheKey& other) const { + return (mask == other.mask && include == other.include && ignore == other.ignore); + } +} RayCacheKey; + +namespace std { + template <> + struct hash { + size_t operator()(const RayCacheKey& k) const { + return ((hash()(k.mask) ^ (qHash(k.include) << 1)) >> 1) ^ (qHash(k.ignore) << 1); + } + }; +} + +// T is a mathematical representation of a Pick. +// For example: origin and direction for RayPick +template +class PickManager : protected ReadWriteLockable { + +public: + virtual void update(); + + RayPickResult getPrevPickResult(const QUuid& uid) const; + + void removePick(const QUuid& uid); + void enablePick(const QUuid& uid) const; + void disablePick(const QUuid& uid) const; + + void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; + void setIgnoreItems(const QUuid& uid, const QVector& ignore) const; + void setIncludeItems(const QUuid& uid, const QVector& include) const; + +protected: + Pick::Pointer findPick(const QUuid& uid) const; + QHash::Pointer> _picks; + + typedef QHash> RayPickCache; + + // Returns true if this ray exists in the cache, and if it does, update res if the cached result is closer + bool checkAndCompareCachedResults(T& pick, RayPickCache& cache, RayPickResult& res, const RayCacheKey& key); + void cacheResult(const bool intersects, const RayPickResult& resTemp, const RayCacheKey& key, RayPickResult& res, T& pick, RayPickCache& cache); +}; + +template +RayPick::Pointer PickManager::findPick(const QUuid& uid) const { + return resultWithReadLock([&] { + if (_picks.contains(uid)) { + return _picks[uid]; + } + return RayPick::Pointer(); + }); +} + +template +bool PickManager::checkAndCompareCachedResults(T& pick, RayPickCache& cache, RayPickResult& res, const RayCacheKey& key) { + if (cache.contains(pick) && cache[pick].find(key) != cache[pick].end()) { + if (cache[pick][key].distance < res.distance) { + res = cache[pick][key]; + } + return true; + } + return false; +} + +template +void PickManager::cacheResult(const bool intersects, const RayPickResult& resTemp, const RayCacheKey& key, RayPickResult& res, T& pick, RayPickCache& cache) { + if (intersects) { + cache[pick][key] = resTemp; + if (resTemp.distance < res.distance) { + res = resTemp; + } + } else { + cache[pick][key] = RayPickResult(res.searchRay); + } +} + +template +void PickManager::update() { + RayPickCache results; + QHash::Pointer> cachedPicks; + withReadLock([&] { + cachedPicks = _picks; + }); + + for (const auto& uid : cachedPicks.keys()) { + Pick::Pointer pick = cachedPicks[uid]; + if (!pick->isEnabled() || pick->getFilter().doesPickNothing() || pick->getMaxDistance() < 0.0f) { + continue; + } + + T mathematicalPick; + + { + bool valid; + mathematicalPick = pick->getPickRay(valid); + if (!valid) { + continue; + } + } + + RayPickResult res = RayPickResult(mathematicalPick); + + if (pick->getFilter().doesPickEntities()) { + RayToEntityIntersectionResult entityRes; + bool fromCache = true; + bool invisible = pick->getFilter().doesPickInvisible(); + bool nonCollidable = pick->getFilter().doesPickNonCollidable(); + RayCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { + entityRes = pick->getEntityIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), + pick->getIncludeItemsAs(), pick->getIgnoreItemsAs(), !invisible, !nonCollidable); + fromCache = false; + } + + if (!fromCache) { + cacheResult(entityRes.intersects, RayPickResult(IntersectionType::ENTITY, entityRes.entityID, entityRes.distance, entityRes.intersection, mathematicalPick, entityRes.surfaceNormal), + entityKey, res, mathematicalPick, results); + } + } + + if (pick->getFilter().doesPickOverlays()) { + RayToOverlayIntersectionResult overlayRes; + bool fromCache = true; + bool invisible = pick->getFilter().doesPickInvisible(); + bool nonCollidable = pick->getFilter().doesPickNonCollidable(); + RayCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, overlayKey)) { + overlayRes = pick->getOverlayIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), + pick->getIncludeItemsAs(), pick->getIgnoreItemsAs(), !invisible, !nonCollidable); + fromCache = false; + } + + if (!fromCache) { + cacheResult(overlayRes.intersects, RayPickResult(IntersectionType::OVERLAY, overlayRes.overlayID, overlayRes.distance, overlayRes.intersection, mathematicalPick, overlayRes.surfaceNormal), + overlayKey, res, mathematicalPick, results); + } + } + + if (pick->getFilter().doesPickAvatars()) { + RayCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, avatarKey)) { + RayToAvatarIntersectionResult avatarRes = pick->getAvatarIntersection(mathematicalPick, + pick->getIncludeItemsAs(), pick->getIgnoreItemsAs()); + cacheResult(avatarRes.intersects, RayPickResult(IntersectionType::AVATAR, avatarRes.avatarID, avatarRes.distance, avatarRes.intersection, mathematicalPick), avatarKey, res, mathematicalPick, results); + } + } + + // Can't intersect with HUD in desktop mode + if (pick->getFilter().doesPickHUD() && DependencyManager::get()->isHMDMode()) { + RayCacheKey hudKey = { pick->getFilter().getHUDFlags(), QVector(), QVector() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, hudKey)) { + glm::vec3 hudRes = pick->getHUDIntersection(mathematicalPick.origin, mathematicalPick.direction); + cacheResult(true, RayPickResult(IntersectionType::HUD, 0, glm::distance(mathematicalPick.origin, hudRes), hudRes, mathematicalPick), hudKey, res, mathematicalPick, results); + } + } + + if (pick->getMaxDistance() == 0.0f || (pick->getMaxDistance() > 0.0f && res.distance < pick->getMaxDistance())) { + pick->setPickResult(res); + } else { + pick->setPickResult(RayPickResult(mathematicalPick)); + } + } +} + +template +RayPickResult PickManager::getPrevPickResult(const QUuid& uid) const { + auto rayPick = findPick(uid); + if (rayPick) { + return rayPick->getPrevPickResult(); + } + return RayPickResult(); +} + +template +void PickManager::removePick(const QUuid& uid) { + withWriteLock([&] { + _picks.remove(uid); + }); +} + +template +void PickManager::enablePick(const QUuid& uid) const { + auto rayPick = findPick(uid); + if (rayPick) { + rayPick->enable(); + } +} + +template +void PickManager::disablePick(const QUuid& uid) const { + auto rayPick = findPick(uid); + if (rayPick) { + rayPick->disable(); + } +} + +template +void PickManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { + auto rayPick = findPick(uid); + if (rayPick) { + rayPick->setPrecisionPicking(precisionPicking); + } +} + +template +void PickManager::setIgnoreItems(const QUuid& uid, const QVector& ignore) const { + auto rayPick = findPick(uid); + if (rayPick) { + rayPick->setIgnoreItems(ignore); + } +} + +template +void PickManager::setIncludeItems(const QUuid& uid, const QVector& include) const { + auto rayPick = findPick(uid); + if (rayPick) { + rayPick->setIncludeItems(include); + } +} + + +#endif // hifi_PickManager_h \ No newline at end of file diff --git a/interface/src/raypick/RayPick.cpp b/interface/src/raypick/RayPick.cpp new file mode 100644 index 0000000000..f12320ee35 --- /dev/null +++ b/interface/src/raypick/RayPick.cpp @@ -0,0 +1,39 @@ +// +// Created by Sam Gondelman 7/11/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 +// +#include "RayPick.h" + +#include "Application.h" +#include "avatar/AvatarManager.h" +#include "scripting/HMDScriptingInterface.h" +#include "DependencyManager.h" + +RayToEntityIntersectionResult RayPick::getEntityIntersection(const PickRay& pick, bool precisionPicking, + const QVector& entitiesToInclude, + const QVector& entitiesToIgnore, + bool visibleOnly, bool collidableOnly) { + return DependencyManager::get()->findRayIntersectionVector(pick, precisionPicking, + entitiesToInclude, entitiesToIgnore, visibleOnly, collidableOnly); +} + +RayToOverlayIntersectionResult RayPick::getOverlayIntersection(const PickRay& pick, bool precisionPicking, + const QVector& overlaysToInclude, + const QVector& overlaysToIgnore, + bool visibleOnly, bool collidableOnly) { + return qApp->getOverlays().findRayIntersectionVector(pick, precisionPicking, + overlaysToInclude, overlaysToIgnore, visibleOnly, collidableOnly); +} + +RayToAvatarIntersectionResult RayPick::getAvatarIntersection(const PickRay& pick, + const QVector& avatarsToInclude, + const QVector& avatarsToIgnore) { + return DependencyManager::get()->findRayIntersectionVector(pick, avatarsToInclude, avatarsToIgnore); +} + +glm::vec3 RayPick::getHUDIntersection(const PickRay& pick) { + return DependencyManager::get()->calculateRayUICollisionPoint(pick.origin, pick.direction); +} \ No newline at end of file diff --git a/interface/src/raypick/RayPick.h b/interface/src/raypick/RayPick.h new file mode 100644 index 0000000000..92778e74a2 --- /dev/null +++ b/interface/src/raypick/RayPick.h @@ -0,0 +1,35 @@ +// +// Created by Sam Gondelman 7/11/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 +// +#ifndef hifi_RayPick_h +#define hifi_RayPick_h + +#include "Pick.h" + +class EntityItemID; +class OverlayID; + +class RayPick : public Pick { + +public: + RayPick(const PickFilter& filter, const float maxDistance, const bool enabled) : Pick(filter, maxDistance, enabled) {} + + RayToEntityIntersectionResult getEntityIntersection(const PickRay& pick, bool precisionPicking, + const QVector& entitiesToInclude, + const QVector& entitiesToIgnore, + bool visibleOnly, bool collidableOnly) override; + RayToOverlayIntersectionResult getOverlayIntersection(const PickRay& pick, bool precisionPicking, + const QVector& overlaysToInclude, + const QVector& overlaysToIgnore, + bool visibleOnly, bool collidableOnly) override; + RayToAvatarIntersectionResult getAvatarIntersection(const PickRay& pick, + const QVector& avatarsToInclude, + const QVector& avatarsToIgnore) override; + glm::vec3 getHUDIntersection(const PickRay& pick) override; +}; + +#endif // hifi_RayPick_h diff --git a/interface/src/raypick/RayPickManager.cpp b/interface/src/raypick/RayPickManager.cpp index beb0075428..f4a45312bf 100644 --- a/interface/src/raypick/RayPickManager.cpp +++ b/interface/src/raypick/RayPickManager.cpp @@ -10,209 +10,33 @@ // #include "RayPickManager.h" -#include - -#include "Application.h" -#include "EntityScriptingInterface.h" -#include "ui/overlays/Overlays.h" -#include "avatar/AvatarManager.h" -#include "scripting/HMDScriptingInterface.h" -#include "DependencyManager.h" - +#include "StaticRayPick.h" #include "JointRayPick.h" #include "MouseRayPick.h" -bool RayPickManager::checkAndCompareCachedResults(QPair& ray, RayPickCache& cache, RayPickResult& res, const RayCacheKey& key) { - if (cache.contains(ray) && cache[ray].find(key) != cache[ray].end()) { - if (cache[ray][key].distance < res.distance) { - res = cache[ray][key]; - } - return true; - } - return false; -} - -void RayPickManager::cacheResult(const bool intersects, const RayPickResult& resTemp, const RayCacheKey& key, RayPickResult& res, QPair& ray, RayPickCache& cache) { - if (intersects) { - cache[ray][key] = resTemp; - if (resTemp.distance < res.distance) { - res = resTemp; - } - } else { - cache[ray][key] = RayPickResult(res.searchRay); - } -} - -void RayPickManager::update() { - RayPickCache results; - QHash cachedRayPicks; - withReadLock([&] { - cachedRayPicks = _rayPicks; - }); - - for (const auto& uid : cachedRayPicks.keys()) { - std::shared_ptr rayPick = cachedRayPicks[uid]; - if (!rayPick->isEnabled() || rayPick->getFilter().doesPickNothing() || rayPick->getMaxDistance() < 0.0f) { - continue; - } - - PickRay ray; - - { - bool valid; - ray = rayPick->getPickRay(valid); - if (!valid) { - continue; - } - } - - QPair rayKey = QPair(ray.origin, ray.direction); - RayPickResult res = RayPickResult(ray); - - if (rayPick->getFilter().doesPickEntities()) { - RayToEntityIntersectionResult entityRes; - bool fromCache = true; - bool invisible = rayPick->getFilter().doesPickInvisible(); - bool nonCollidable = rayPick->getFilter().doesPickNonCollidable(); - RayCacheKey entityKey = { rayPick->getFilter().getEntityFlags(), rayPick->getIncludeItems(), rayPick->getIgnoreItems() }; - if (!checkAndCompareCachedResults(rayKey, results, res, entityKey)) { - entityRes = DependencyManager::get()->findRayIntersectionVector(ray, !rayPick->getFilter().doesPickCoarse(), - rayPick->getIncludeItemsAs(), rayPick->getIgnoreItemsAs(), !invisible, !nonCollidable); - fromCache = false; - } - - if (!fromCache) { - cacheResult(entityRes.intersects, RayPickResult(IntersectionType::ENTITY, entityRes.entityID, entityRes.distance, entityRes.intersection, ray, entityRes.surfaceNormal), - entityKey, res, rayKey, results); - } - } - - if (rayPick->getFilter().doesPickOverlays()) { - RayToOverlayIntersectionResult overlayRes; - bool fromCache = true; - bool invisible = rayPick->getFilter().doesPickInvisible(); - bool nonCollidable = rayPick->getFilter().doesPickNonCollidable(); - RayCacheKey overlayKey = { rayPick->getFilter().getOverlayFlags(), rayPick->getIncludeItems(), rayPick->getIgnoreItems() }; - if (!checkAndCompareCachedResults(rayKey, results, res, overlayKey)) { - overlayRes = qApp->getOverlays().findRayIntersectionVector(ray, !rayPick->getFilter().doesPickCoarse(), - rayPick->getIncludeItemsAs(), rayPick->getIgnoreItemsAs(), !invisible, !nonCollidable); - fromCache = false; - } - - if (!fromCache) { - cacheResult(overlayRes.intersects, RayPickResult(IntersectionType::OVERLAY, overlayRes.overlayID, overlayRes.distance, overlayRes.intersection, ray, overlayRes.surfaceNormal), - overlayKey, res, rayKey, results); - } - } - - if (rayPick->getFilter().doesPickAvatars()) { - RayCacheKey avatarKey = { rayPick->getFilter().getAvatarFlags(), rayPick->getIncludeItems(), rayPick->getIgnoreItems() }; - if (!checkAndCompareCachedResults(rayKey, results, res, avatarKey)) { - RayToAvatarIntersectionResult avatarRes = DependencyManager::get()->findRayIntersectionVector(ray, - rayPick->getIncludeItemsAs(), rayPick->getIgnoreItemsAs()); - cacheResult(avatarRes.intersects, RayPickResult(IntersectionType::AVATAR, avatarRes.avatarID, avatarRes.distance, avatarRes.intersection, ray), avatarKey, res, rayKey, results); - } - } - - // Can't intersect with HUD in desktop mode - if (rayPick->getFilter().doesPickHUD() && DependencyManager::get()->isHMDMode()) { - RayPickFilter::Flags hudMask = rayPick->getFilter().getHUDFlags(); - RayCacheKey hudKey = { rayPick->getFilter().getHUDFlags() }; - if (!checkAndCompareCachedResults(rayKey, results, res, hudKey)) { - glm::vec3 hudRes = DependencyManager::get()->calculateRayUICollisionPoint(ray.origin, ray.direction); - cacheResult(true, RayPickResult(IntersectionType::HUD, 0, glm::distance(ray.origin, hudRes), hudRes, ray), hudKey, res, rayKey, results); - } - } - - if (rayPick->getMaxDistance() == 0.0f || (rayPick->getMaxDistance() > 0.0f && res.distance < rayPick->getMaxDistance())) { - rayPick->setRayPickResult(res); - } else { - rayPick->setRayPickResult(RayPickResult(ray)); - } - } -} - -QUuid RayPickManager::createRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const RayPickFilter& filter, float maxDistance, bool enabled) { +QUuid RayPickManager::createRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, float maxDistance, bool enabled) { auto newRayPick = std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled); QUuid id = QUuid::createUuid(); withWriteLock([&] { - _rayPicks[id] = newRayPick; + _picks[id] = newRayPick; }); return id; } -QUuid RayPickManager::createRayPick(const RayPickFilter& filter, float maxDistance, bool enabled) { +QUuid RayPickManager::createRayPick(const PickFilter& filter, float maxDistance, bool enabled) { QUuid id = QUuid::createUuid(); auto newRayPick = std::make_shared(filter, maxDistance, enabled); withWriteLock([&] { - _rayPicks[id] = newRayPick; + _picks[id] = newRayPick; }); return id; } -QUuid RayPickManager::createRayPick(const glm::vec3& position, const glm::vec3& direction, const RayPickFilter& filter, float maxDistance, bool enabled) { +QUuid RayPickManager::createRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, float maxDistance, bool enabled) { QUuid id = QUuid::createUuid(); auto newRayPick = std::make_shared(position, direction, filter, maxDistance, enabled); withWriteLock([&] { - _rayPicks[id] = newRayPick; + _picks[id] = newRayPick; }); return id; -} - -void RayPickManager::removeRayPick(const QUuid& uid) { - withWriteLock([&] { - _rayPicks.remove(uid); - }); -} - -RayPick::Pointer RayPickManager::findRayPick(const QUuid& uid) const { - return resultWithReadLock([&] { - if (_rayPicks.contains(uid)) { - return _rayPicks[uid]; - } - return RayPick::Pointer(); - }); -} - -void RayPickManager::enableRayPick(const QUuid& uid) const { - auto rayPick = findRayPick(uid); - if (rayPick) { - rayPick->enable(); - } -} - -void RayPickManager::disableRayPick(const QUuid& uid) const { - auto rayPick = findRayPick(uid); - if (rayPick) { - rayPick->disable(); - } -} - -RayPickResult RayPickManager::getPrevRayPickResult(const QUuid& uid) const { - auto rayPick = findRayPick(uid); - if (rayPick) { - return rayPick->getPrevRayPickResult(); - } - return RayPickResult(); -} - -void RayPickManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { - auto rayPick = findRayPick(uid); - if (rayPick) { - rayPick->setPrecisionPicking(precisionPicking); - } -} - -void RayPickManager::setIgnoreItems(const QUuid& uid, const QVector& ignore) const { - auto rayPick = findRayPick(uid); - if (rayPick) { - rayPick->setIgnoreItems(ignore); - } -} - -void RayPickManager::setIncludeItems(const QUuid& uid, const QVector& include) const { - auto rayPick = findRayPick(uid); - if (rayPick) { - rayPick->setIncludeItems(include); - } -} +} \ No newline at end of file diff --git a/interface/src/raypick/RayPickManager.h b/interface/src/raypick/RayPickManager.h index fd2c6f4a6b..7673e402f4 100644 --- a/interface/src/raypick/RayPickManager.h +++ b/interface/src/raypick/RayPickManager.h @@ -11,64 +11,16 @@ #ifndef hifi_RayPickManager_h #define hifi_RayPickManager_h - -#include -#include -#include - -#include - -#include -#include - +#include "PickManager.h" class RayPickResult; -typedef struct RayCacheKey { - RayPickFilter::Flags mask; - QVector include; - QVector ignore; - - bool operator==(const RayCacheKey& other) const { - return (mask == other.mask && include == other.include && ignore == other.ignore); - } -} RayCacheKey; - -namespace std { - template <> - struct hash { - size_t operator()(const RayCacheKey& k) const { - return ((hash()(k.mask) ^ (qHash(k.include) << 1)) >> 1) ^ (qHash(k.ignore) << 1); - } - }; -} - -class RayPickManager : protected ReadWriteLockable { +class RayPickManager : public PickManager { public: - void update(); - - QUuid createRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const RayPickFilter& filter, const float maxDistance, const bool enabled); - QUuid createRayPick(const RayPickFilter& filter, const float maxDistance, const bool enabled); - QUuid createRayPick(const glm::vec3& position, const glm::vec3& direction, const RayPickFilter& filter, const float maxDistance, const bool enabled); - void removeRayPick(const QUuid& uid); - void enableRayPick(const QUuid& uid) const; - void disableRayPick(const QUuid& uid) const; - RayPickResult getPrevRayPickResult(const QUuid& uid) const; - - void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; - void setIgnoreItems(const QUuid& uid, const QVector& ignore) const; - void setIncludeItems(const QUuid& uid, const QVector& include) const; - -private: - RayPick::Pointer findRayPick(const QUuid& uid) const; - QHash _rayPicks; - - typedef QHash, std::unordered_map> RayPickCache; - - // Returns true if this ray exists in the cache, and if it does, update res if the cached result is closer - bool checkAndCompareCachedResults(QPair& ray, RayPickCache& cache, RayPickResult& res, const RayCacheKey& key); - void cacheResult(const bool intersects, const RayPickResult& resTemp, const RayCacheKey& key, RayPickResult& res, QPair& ray, RayPickCache& cache); + QUuid createRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance, const bool enabled); + QUuid createRayPick(const PickFilter& filter, const float maxDistance, const bool enabled); + QUuid createRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance, const bool enabled); }; #endif // hifi_RayPickManager_h \ No newline at end of file diff --git a/libraries/pointers/src/pointers/rays/StaticRayPick.cpp b/interface/src/raypick/StaticRayPick.cpp similarity index 73% rename from libraries/pointers/src/pointers/rays/StaticRayPick.cpp rename to interface/src/raypick/StaticRayPick.cpp index e507341021..5db054c2e4 100644 --- a/libraries/pointers/src/pointers/rays/StaticRayPick.cpp +++ b/interface/src/raypick/StaticRayPick.cpp @@ -7,13 +7,13 @@ // #include "StaticRayPick.h" -StaticRayPick::StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const RayPickFilter& filter, const float maxDistance, const bool enabled) : +StaticRayPick::StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance, const bool enabled) : RayPick(filter, maxDistance, enabled), _pickRay(position, direction) { } -const PickRay StaticRayPick::getPickRay(bool& valid) const { +const PickRay StaticRayPick::getMathematicalPick(bool& valid) const { valid = true; return _pickRay; } \ No newline at end of file diff --git a/libraries/pointers/src/pointers/rays/StaticRayPick.h b/interface/src/raypick/StaticRayPick.h similarity index 75% rename from libraries/pointers/src/pointers/rays/StaticRayPick.h rename to interface/src/raypick/StaticRayPick.h index de5ec234a5..c26ea386d6 100644 --- a/libraries/pointers/src/pointers/rays/StaticRayPick.h +++ b/interface/src/raypick/StaticRayPick.h @@ -13,9 +13,9 @@ class StaticRayPick : public RayPick { public: - StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const RayPickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); + StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getPickRay(bool& valid) const override; + const PickRay getMathematicalPick(bool& valid) const override; private: PickRay _pickRay; diff --git a/libraries/pointers/src/pointers/rays/RayPick.cpp b/libraries/pointers/src/pointers/rays/RayPick.cpp deleted file mode 100644 index 36756cdb79..0000000000 --- a/libraries/pointers/src/pointers/rays/RayPick.cpp +++ /dev/null @@ -1,75 +0,0 @@ -// -// Created by Sam Gondelman 7/11/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 -// -#include "RayPick.h" - -const RayPickFilter RayPickFilter::NOTHING; - -RayPick::RayPick(const RayPickFilter& filter, const float maxDistance, const bool enabled) : - _filter(filter), - _maxDistance(maxDistance), - _enabled(enabled) -{ -} - -void RayPick::enable(bool enabled) { - withWriteLock([&] { - _enabled = enabled; - }); -} - -RayPickFilter RayPick::getFilter() const { - return resultWithReadLock([&] { - return _filter; - }); -} - -float RayPick::getMaxDistance() const { - return _maxDistance; -} - -bool RayPick::isEnabled() const { - return _enabled; -} - -void RayPick::setPrecisionPicking(bool precisionPicking) { - withWriteLock([&]{ - _filter.setFlag(RayPickFilter::PICK_COARSE, !precisionPicking); - }); -} - -void RayPick::setRayPickResult(const RayPickResult& rayPickResult) { - withWriteLock([&] { - _prevResult = rayPickResult; - }); -} - -QVector RayPick::getIgnoreItems() const { - return _ignoreItems; -} - -QVector RayPick::getIncludeItems() const { - return _includeItems; -} - -RayPickResult RayPick::getPrevRayPickResult() const { - return resultWithReadLock([&] { - return _prevResult; - }); -} - -void RayPick::setIgnoreItems(const QVector& ignoreItems) { - withWriteLock([&] { - _ignoreItems = ignoreItems; - }); -} - -void RayPick::setIncludeItems(const QVector& includeItems) { - withWriteLock([&] { - _includeItems = includeItems; - }); -} diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 7b7d8d8f47..01b59f27e0 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -131,7 +131,22 @@ public: PickRay(const glm::vec3& origin, const glm::vec3 direction) : origin(origin), direction(direction) {} glm::vec3 origin; glm::vec3 direction; + + bool operator==(const PickRay& other) const { + return (origin == other.origin && direction == other.direction); + } }; +namespace std { + template <> + struct hash { + size_t operator()(const glm::vec3& a) const { + return ((hash()(a.x) ^ (hash()(a.y) << 1)) >> 1) ^ (hash()(a.z) << 1); + } + }; +} +uint qHash(const PickRay& a) { + return (uint)(std::hash()(a.origin) ^ (std::hash()(a.direction) << 1)); +} Q_DECLARE_METATYPE(PickRay) QScriptValue pickRayToScriptValue(QScriptEngine* engine, const PickRay& pickRay); void pickRayFromScriptValue(const QScriptValue& object, PickRay& pickRay); From 5d4edabcc38a29a66abf1e887a499cd766c485c2 Mon Sep 17 00:00:00 2001 From: Marko Kudjerski Date: Tue, 17 Oct 2017 13:28:07 -0700 Subject: [PATCH 016/187] Updated the README with CLA details. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 6294981e9a..e0bbed3105 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,10 @@ Documentation is available at [docs.highfidelity.com](https://docs.highfidelity. There is also detailed [documentation on our coding standards](https://wiki.highfidelity.com/wiki/Coding_Standards). +Contributor License Agreement (CLA) +========= +Technology companies frequently receive and use code from contributors outside the company's development team. Outside code can be a tremendous resource, but it also carries responsibility. Best practice for accepting outside contributions consists of an Apache-type Contributor License Agreement (CLA). We have modeled the High Fidelity CLA after the CLA that Google presents to developers for contributions to their projects. This CLA does not transfer ownership of code, instead simply granting a non-exclusive right for High Fidelity to use the code you’ve contributed. In that regard, you should be sure you have permission if the work relates to or uses the resources of a company that you work for. You will be asked to sign our CLA when you create your first PR or when the CLA is updated. You can also [review it here](https://gist.githubusercontent.com/hifi-gustavo/fef8f06a8233d42a0040d45c3efb97a9/raw/9981827eb94f0b18666083670b6f6a02929fb402/High%2520Fidelity%2520CLA). We sincerely appreciate your contribution and efforts toward the success of the platform. + Build Instructions ========= All information required to build is found in the [build guide](BUILD.md). From 3ef7ebffba07e1c055c57499243505b1a483a3c4 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 17 Oct 2017 15:09:41 -0700 Subject: [PATCH 017/187] working generalized pickmanager --- interface/src/Application.cpp | 4 +- interface/src/raypick/LaserPointer.cpp | 8 +- interface/src/raypick/Pick.h | 16 ++-- interface/src/raypick/PickManager.h | 88 ++++++++++--------- .../src/raypick/RayPickScriptingInterface.cpp | 12 +-- .../src/raypick/RayPickScriptingInterface.h | 18 ++-- libraries/shared/src/RegisteredMetaTypes.h | 2 +- 7 files changed, 74 insertions(+), 74 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e5d5e696a1..b8d3168f10 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1819,11 +1819,11 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Setup the mouse ray pick and related operators DependencyManager::get()->setMouseRayPickID(_rayPickManager.createRayPick( - RayPickFilter(DependencyManager::get()->PICK_ENTITIES() | DependencyManager::get()->PICK_INCLUDE_NONCOLLIDABLE()), + PickFilter(DependencyManager::get()->PICK_ENTITIES() | DependencyManager::get()->PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true)); DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { RayToEntityIntersectionResult entityResult; - RayPickResult result = _rayPickManager.getPrevRayPickResult(rayPickID); + RayPickResult result = _rayPickManager.getPrevPickResult(rayPickID); entityResult.intersects = result.type != DependencyManager::get()->INTERSECTED_NONE(); if (entityResult.intersects) { entityResult.intersection = result.intersection; diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index a2f7c7a521..1c5073b9c9 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -39,7 +39,7 @@ LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& rende } LaserPointer::~LaserPointer() { - qApp->getRayPickManager().removeRayPick(_rayPickUID); + qApp->getRayPickManager().removePick(_rayPickUID); for (auto& renderState : _renderStates) { renderState.second.deleteOverlays(); @@ -50,14 +50,14 @@ LaserPointer::~LaserPointer() { } void LaserPointer::enable() { - qApp->getRayPickManager().enableRayPick(_rayPickUID); + qApp->getRayPickManager().enablePick(_rayPickUID); withWriteLock([&] { _renderingEnabled = true; }); } void LaserPointer::disable() { - qApp->getRayPickManager().disableRayPick(_rayPickUID); + qApp->getRayPickManager().disablePick(_rayPickUID); withWriteLock([&] { _renderingEnabled = false; if (!_currentRenderState.empty()) { @@ -198,7 +198,7 @@ void LaserPointer::disableRenderState(const RenderState& renderState) { void LaserPointer::update() { // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts withReadLock([&] { - RayPickResult prevRayPickResult = qApp->getRayPickManager().getPrevRayPickResult(_rayPickUID); + RayPickResult prevRayPickResult = qApp->getRayPickManager().getPrevPickResult(_rayPickUID); if (_renderingEnabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() && (prevRayPickResult.type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) { float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult.distance; diff --git a/interface/src/raypick/Pick.h b/interface/src/raypick/Pick.h index 561c336f3b..c8d637bcb7 100644 --- a/interface/src/raypick/Pick.h +++ b/interface/src/raypick/Pick.h @@ -8,6 +8,7 @@ #ifndef hifi_Pick_h #define hifi_Pick_h +#include #include #include @@ -101,8 +102,6 @@ template class Pick : protected ReadWriteLockable { public: - using Pointer = std::shared_ptr>; - Pick(const PickFilter& filter, const float maxDistance, const bool enabled); virtual const T getMathematicalPick(bool& valid) const = 0; @@ -169,7 +168,6 @@ private: QVector _includeItems; }; - template Pick::Pick(const PickFilter& filter, const float maxDistance, const bool enabled) : _filter(filter), @@ -198,9 +196,9 @@ float Pick::getMaxDistance() const { template bool Pick::isEnabled() const { - withReadLock([&]) { + return resultWithReadLock([&] { return _enabled; - } + }); } template @@ -219,16 +217,16 @@ void Pick::setPickResult(const RayPickResult& PickResult) { template QVector Pick::getIgnoreItems() const { - withReadLock([&]) { + return resultWithReadLock>([&] { return _ignoreItems; - } + }); } template QVector Pick::getIncludeItems() const { - withReadLock([&]) { + return resultWithReadLock>([&] { return _includeItems; - } + }); } template diff --git a/interface/src/raypick/PickManager.h b/interface/src/raypick/PickManager.h index 228631449f..1c6093d2f0 100644 --- a/interface/src/raypick/PickManager.h +++ b/interface/src/raypick/PickManager.h @@ -13,29 +13,31 @@ #include +#include "scripting/HMDScriptingInterface.h" + #include "Pick.h" -typedef struct RayCacheKey { +typedef struct PickCacheKey { PickFilter::Flags mask; QVector include; QVector ignore; - bool operator==(const RayCacheKey& other) const { + bool operator==(const PickCacheKey& other) const { return (mask == other.mask && include == other.include && ignore == other.ignore); } -} RayCacheKey; +} PickCacheKey; namespace std { template <> - struct hash { - size_t operator()(const RayCacheKey& k) const { + struct hash { + size_t operator()(const PickCacheKey& k) const { return ((hash()(k.mask) ^ (qHash(k.include) << 1)) >> 1) ^ (qHash(k.ignore) << 1); } }; } // T is a mathematical representation of a Pick. -// For example: origin and direction for RayPick +// For example: PickRay for RayPick template class PickManager : protected ReadWriteLockable { @@ -53,28 +55,28 @@ public: void setIncludeItems(const QUuid& uid, const QVector& include) const; protected: - Pick::Pointer findPick(const QUuid& uid) const; - QHash::Pointer> _picks; + std::shared_ptr> findPick(const QUuid& uid) const; + QHash>> _picks; - typedef QHash> RayPickCache; + typedef QHash> PickCache; // Returns true if this ray exists in the cache, and if it does, update res if the cached result is closer - bool checkAndCompareCachedResults(T& pick, RayPickCache& cache, RayPickResult& res, const RayCacheKey& key); - void cacheResult(const bool intersects, const RayPickResult& resTemp, const RayCacheKey& key, RayPickResult& res, T& pick, RayPickCache& cache); + bool checkAndCompareCachedResults(T& pick, PickCache& cache, RayPickResult& res, const PickCacheKey& key); + void cacheResult(const bool intersects, const RayPickResult& resTemp, const PickCacheKey& key, RayPickResult& res, T& pick, PickCache& cache); }; template -RayPick::Pointer PickManager::findPick(const QUuid& uid) const { - return resultWithReadLock([&] { +std::shared_ptr> PickManager::findPick(const QUuid& uid) const { + return resultWithReadLock>>([&] { if (_picks.contains(uid)) { return _picks[uid]; } - return RayPick::Pointer(); + return std::shared_ptr>(); }); } template -bool PickManager::checkAndCompareCachedResults(T& pick, RayPickCache& cache, RayPickResult& res, const RayCacheKey& key) { +bool PickManager::checkAndCompareCachedResults(T& pick, PickCache& cache, RayPickResult& res, const PickCacheKey& key) { if (cache.contains(pick) && cache[pick].find(key) != cache[pick].end()) { if (cache[pick][key].distance < res.distance) { res = cache[pick][key]; @@ -85,7 +87,7 @@ bool PickManager::checkAndCompareCachedResults(T& pick, RayPickCache& cache, } template -void PickManager::cacheResult(const bool intersects, const RayPickResult& resTemp, const RayCacheKey& key, RayPickResult& res, T& pick, RayPickCache& cache) { +void PickManager::cacheResult(const bool intersects, const RayPickResult& resTemp, const PickCacheKey& key, RayPickResult& res, T& pick, PickCache& cache) { if (intersects) { cache[pick][key] = resTemp; if (resTemp.distance < res.distance) { @@ -98,14 +100,14 @@ void PickManager::cacheResult(const bool intersects, const RayPickResult& res template void PickManager::update() { - RayPickCache results; - QHash::Pointer> cachedPicks; + PickCache results; + QHash>> cachedPicks; withReadLock([&] { cachedPicks = _picks; }); for (const auto& uid : cachedPicks.keys()) { - Pick::Pointer pick = cachedPicks[uid]; + std::shared_ptr> pick = cachedPicks[uid]; if (!pick->isEnabled() || pick->getFilter().doesPickNothing() || pick->getMaxDistance() < 0.0f) { continue; } @@ -114,7 +116,7 @@ void PickManager::update() { { bool valid; - mathematicalPick = pick->getPickRay(valid); + mathematicalPick = pick->getMathematicalPick(valid); if (!valid) { continue; } @@ -127,7 +129,7 @@ void PickManager::update() { bool fromCache = true; bool invisible = pick->getFilter().doesPickInvisible(); bool nonCollidable = pick->getFilter().doesPickNonCollidable(); - RayCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + PickCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { entityRes = pick->getEntityIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), pick->getIncludeItemsAs(), pick->getIgnoreItemsAs(), !invisible, !nonCollidable); @@ -145,7 +147,7 @@ void PickManager::update() { bool fromCache = true; bool invisible = pick->getFilter().doesPickInvisible(); bool nonCollidable = pick->getFilter().doesPickNonCollidable(); - RayCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + PickCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, overlayKey)) { overlayRes = pick->getOverlayIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), pick->getIncludeItemsAs(), pick->getIgnoreItemsAs(), !invisible, !nonCollidable); @@ -159,7 +161,7 @@ void PickManager::update() { } if (pick->getFilter().doesPickAvatars()) { - RayCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + PickCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, avatarKey)) { RayToAvatarIntersectionResult avatarRes = pick->getAvatarIntersection(mathematicalPick, pick->getIncludeItemsAs(), pick->getIgnoreItemsAs()); @@ -169,9 +171,9 @@ void PickManager::update() { // Can't intersect with HUD in desktop mode if (pick->getFilter().doesPickHUD() && DependencyManager::get()->isHMDMode()) { - RayCacheKey hudKey = { pick->getFilter().getHUDFlags(), QVector(), QVector() }; + PickCacheKey hudKey = { pick->getFilter().getHUDFlags(), QVector(), QVector() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, hudKey)) { - glm::vec3 hudRes = pick->getHUDIntersection(mathematicalPick.origin, mathematicalPick.direction); + glm::vec3 hudRes = pick->getHUDIntersection(mathematicalPick); cacheResult(true, RayPickResult(IntersectionType::HUD, 0, glm::distance(mathematicalPick.origin, hudRes), hudRes, mathematicalPick), hudKey, res, mathematicalPick, results); } } @@ -186,9 +188,9 @@ void PickManager::update() { template RayPickResult PickManager::getPrevPickResult(const QUuid& uid) const { - auto rayPick = findPick(uid); - if (rayPick) { - return rayPick->getPrevPickResult(); + auto pick = findPick(uid); + if (pick) { + return pick->getPrevPickResult(); } return RayPickResult(); } @@ -202,41 +204,41 @@ void PickManager::removePick(const QUuid& uid) { template void PickManager::enablePick(const QUuid& uid) const { - auto rayPick = findPick(uid); - if (rayPick) { - rayPick->enable(); + auto pick = findPick(uid); + if (pick) { + pick->enable(); } } template void PickManager::disablePick(const QUuid& uid) const { - auto rayPick = findPick(uid); - if (rayPick) { - rayPick->disable(); + auto pick = findPick(uid); + if (pick) { + pick->disable(); } } template void PickManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { - auto rayPick = findPick(uid); - if (rayPick) { - rayPick->setPrecisionPicking(precisionPicking); + auto pick = findPick(uid); + if (pick) { + pick->setPrecisionPicking(precisionPicking); } } template void PickManager::setIgnoreItems(const QUuid& uid, const QVector& ignore) const { - auto rayPick = findPick(uid); - if (rayPick) { - rayPick->setIgnoreItems(ignore); + auto pick = findPick(uid); + if (pick) { + pick->setIgnoreItems(ignore); } } template void PickManager::setIncludeItems(const QUuid& uid, const QVector& include) const { - auto rayPick = findPick(uid); - if (rayPick) { - rayPick->setIncludeItems(include); + auto pick = findPick(uid); + if (pick) { + pick->setIncludeItems(include); } } diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index 621ae9b738..380971b5e6 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -23,9 +23,9 @@ QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { enabled = propMap["enabled"].toBool(); } - RayPickFilter filter = RayPickFilter(); + PickFilter filter = PickFilter(); if (propMap["filter"].isValid()) { - filter = RayPickFilter(propMap["filter"].toUInt()); + filter = PickFilter(propMap["filter"].toUInt()); } float maxDistance = 0.0f; @@ -67,19 +67,19 @@ QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { } void RayPickScriptingInterface::enableRayPick(const QUuid& uid) { - qApp->getRayPickManager().enableRayPick(uid); + qApp->getRayPickManager().enablePick(uid); } void RayPickScriptingInterface::disableRayPick(const QUuid& uid) { - qApp->getRayPickManager().disableRayPick(uid); + qApp->getRayPickManager().disablePick(uid); } void RayPickScriptingInterface::removeRayPick(const QUuid& uid) { - qApp->getRayPickManager().removeRayPick(uid); + qApp->getRayPickManager().removePick(uid); } RayPickResult RayPickScriptingInterface::getPrevRayPickResult(const QUuid& uid) { - return qApp->getRayPickManager().getPrevRayPickResult(uid); + return qApp->getRayPickManager().getPrevPickResult(uid); } void RayPickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { diff --git a/interface/src/raypick/RayPickScriptingInterface.h b/interface/src/raypick/RayPickScriptingInterface.h index 099103e4c5..2153c4f3a5 100644 --- a/interface/src/raypick/RayPickScriptingInterface.h +++ b/interface/src/raypick/RayPickScriptingInterface.h @@ -15,7 +15,7 @@ #include #include -#include +#include "RayPick.h" class RayPickScriptingInterface : public QObject, public Dependency { Q_OBJECT @@ -47,14 +47,14 @@ public slots: Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); unsigned int PICK_NOTHING() { return 0; } - unsigned int PICK_ENTITIES() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_ENTITIES); } - unsigned int PICK_OVERLAYS() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_OVERLAYS); } - unsigned int PICK_AVATARS() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_AVATARS); } - unsigned int PICK_HUD() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_HUD); } - unsigned int PICK_COARSE() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_COARSE); } - unsigned int PICK_INCLUDE_INVISIBLE() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } - unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } - unsigned int PICK_ALL_INTERSECTIONS() { return RayPickFilter::getBitMask(RayPickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } + unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } + unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } + unsigned int PICK_AVATARS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_AVATARS); } + unsigned int PICK_HUD() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_HUD); } + unsigned int PICK_COARSE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_COARSE); } + unsigned int PICK_INCLUDE_INVISIBLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } + unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } + unsigned int PICK_ALL_INTERSECTIONS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } unsigned int INTERSECTED_NONE() { return IntersectionType::NONE; } unsigned int INTERSECTED_ENTITY() { return IntersectionType::ENTITY; } unsigned int INTERSECTED_OVERLAY() { return IntersectionType::OVERLAY; } diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 01b59f27e0..c7b482a917 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -144,7 +144,7 @@ namespace std { } }; } -uint qHash(const PickRay& a) { +inline uint qHash(const PickRay& a) { return (uint)(std::hash()(a.origin) ^ (std::hash()(a.direction) << 1)); } Q_DECLARE_METATYPE(PickRay) From 8a5759df69f989e8e62ba0a1e05856dab5d74b42 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 17 Oct 2017 15:22:39 -0700 Subject: [PATCH 018/187] PickManager::addPick --- interface/src/raypick/PickManager.h | 11 +++++++++++ interface/src/raypick/RayPickManager.cpp | 21 +++------------------ 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/interface/src/raypick/PickManager.h b/interface/src/raypick/PickManager.h index 1c6093d2f0..01cffaeb8e 100644 --- a/interface/src/raypick/PickManager.h +++ b/interface/src/raypick/PickManager.h @@ -38,6 +38,7 @@ namespace std { // T is a mathematical representation of a Pick. // For example: PickRay for RayPick +// TODO: add another template type to replace RayPickResult with a generalized PickResult template class PickManager : protected ReadWriteLockable { @@ -46,6 +47,7 @@ public: RayPickResult getPrevPickResult(const QUuid& uid) const; + QUuid addPick(const std::shared_ptr> pick); void removePick(const QUuid& uid); void enablePick(const QUuid& uid) const; void disablePick(const QUuid& uid) const; @@ -195,6 +197,15 @@ RayPickResult PickManager::getPrevPickResult(const QUuid& uid) const { return RayPickResult(); } +template +QUuid PickManager::addPick(const std::shared_ptr> pick) { + QUuid id = QUuid::createUuid(); + withWriteLock([&] { + _picks[id] = pick; + }); + return id; +} + template void PickManager::removePick(const QUuid& uid) { withWriteLock([&] { diff --git a/interface/src/raypick/RayPickManager.cpp b/interface/src/raypick/RayPickManager.cpp index f4a45312bf..e6b183133d 100644 --- a/interface/src/raypick/RayPickManager.cpp +++ b/interface/src/raypick/RayPickManager.cpp @@ -15,28 +15,13 @@ #include "MouseRayPick.h" QUuid RayPickManager::createRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, float maxDistance, bool enabled) { - auto newRayPick = std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled); - QUuid id = QUuid::createUuid(); - withWriteLock([&] { - _picks[id] = newRayPick; - }); - return id; + return addPick(std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled)); } QUuid RayPickManager::createRayPick(const PickFilter& filter, float maxDistance, bool enabled) { - QUuid id = QUuid::createUuid(); - auto newRayPick = std::make_shared(filter, maxDistance, enabled); - withWriteLock([&] { - _picks[id] = newRayPick; - }); - return id; + return addPick(std::make_shared(filter, maxDistance, enabled)); } QUuid RayPickManager::createRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, float maxDistance, bool enabled) { - QUuid id = QUuid::createUuid(); - auto newRayPick = std::make_shared(position, direction, filter, maxDistance, enabled); - withWriteLock([&] { - _picks[id] = newRayPick; - }); - return id; + return addPick(std::make_shared(position, direction, filter, maxDistance, enabled)); } \ No newline at end of file From 05f4883104d54d5e65eaaa9ac1cb5e4b051f2e2c Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 17 Oct 2017 16:15:54 -0700 Subject: [PATCH 019/187] get rid of valid --- interface/src/raypick/JointRayPick.cpp | 4 +--- interface/src/raypick/JointRayPick.h | 2 +- interface/src/raypick/MouseRayPick.cpp | 4 +--- interface/src/raypick/MouseRayPick.h | 2 +- interface/src/raypick/Pick.h | 2 +- interface/src/raypick/PickManager.h | 14 +++++--------- interface/src/raypick/StaticRayPick.cpp | 3 +-- interface/src/raypick/StaticRayPick.h | 2 +- libraries/shared/src/RegisteredMetaTypes.h | 15 +++++++++++---- 9 files changed, 23 insertions(+), 25 deletions(-) diff --git a/interface/src/raypick/JointRayPick.cpp b/interface/src/raypick/JointRayPick.cpp index d3991eac24..c2a7fb11e5 100644 --- a/interface/src/raypick/JointRayPick.cpp +++ b/interface/src/raypick/JointRayPick.cpp @@ -20,7 +20,7 @@ JointRayPick::JointRayPick(const std::string& jointName, const glm::vec3& posOff { } -const PickRay JointRayPick::getMathematicalPick(bool& valid) const { +const PickRay JointRayPick::getMathematicalPick() const { auto myAvatar = DependencyManager::get()->getMyAvatar(); int jointIndex = myAvatar->getJointIndex(QString::fromStdString(_jointName)); bool useAvatarHead = _jointName == "Avatar"; @@ -38,10 +38,8 @@ const PickRay JointRayPick::getMathematicalPick(bool& valid) const { pos = pos + (rot * (myAvatar->getSensorToWorldScale() * _posOffset)); glm::vec3 dir = rot * glm::normalize(_dirOffset); - valid = true; return PickRay(pos, dir); } - valid = false; return PickRay(); } diff --git a/interface/src/raypick/JointRayPick.h b/interface/src/raypick/JointRayPick.h index b2bffe83c4..ab44bf67c8 100644 --- a/interface/src/raypick/JointRayPick.h +++ b/interface/src/raypick/JointRayPick.h @@ -18,7 +18,7 @@ class JointRayPick : public RayPick { public: JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getMathematicalPick(bool& valid) const override; + const PickRay getMathematicalPick() const override; private: std::string _jointName; diff --git a/interface/src/raypick/MouseRayPick.cpp b/interface/src/raypick/MouseRayPick.cpp index 27080f5857..f691dafc01 100644 --- a/interface/src/raypick/MouseRayPick.cpp +++ b/interface/src/raypick/MouseRayPick.cpp @@ -18,14 +18,12 @@ MouseRayPick::MouseRayPick(const PickFilter& filter, const float maxDistance, co { } -const PickRay MouseRayPick::getMathematicalPick(bool& valid) const { +const PickRay MouseRayPick::getMathematicalPick() const { QVariant position = qApp->getApplicationCompositor().getReticleInterface()->getPosition(); if (position.isValid()) { QVariantMap posMap = position.toMap(); - valid = true; return qApp->getCamera().computePickRay(posMap["x"].toFloat(), posMap["y"].toFloat()); } - valid = false; return PickRay(); } diff --git a/interface/src/raypick/MouseRayPick.h b/interface/src/raypick/MouseRayPick.h index c565a03db7..e9eb3ccabf 100644 --- a/interface/src/raypick/MouseRayPick.h +++ b/interface/src/raypick/MouseRayPick.h @@ -18,7 +18,7 @@ class MouseRayPick : public RayPick { public: MouseRayPick(const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getMathematicalPick(bool& valid) const override; + const PickRay getMathematicalPick() const override; }; #endif // hifi_MouseRayPick_h diff --git a/interface/src/raypick/Pick.h b/interface/src/raypick/Pick.h index c8d637bcb7..161e9779ce 100644 --- a/interface/src/raypick/Pick.h +++ b/interface/src/raypick/Pick.h @@ -104,7 +104,7 @@ class Pick : protected ReadWriteLockable { public: Pick(const PickFilter& filter, const float maxDistance, const bool enabled); - virtual const T getMathematicalPick(bool& valid) const = 0; + virtual const T getMathematicalPick() const = 0; virtual RayToEntityIntersectionResult getEntityIntersection(const T& pick, bool precisionPicking, const QVector& entitiesToInclude, const QVector& entitiesToIgnore, diff --git a/interface/src/raypick/PickManager.h b/interface/src/raypick/PickManager.h index 01cffaeb8e..424be0aa4f 100644 --- a/interface/src/raypick/PickManager.h +++ b/interface/src/raypick/PickManager.h @@ -60,7 +60,7 @@ protected: std::shared_ptr> findPick(const QUuid& uid) const; QHash>> _picks; - typedef QHash> PickCache; + typedef std::unordered_map> PickCache; // Returns true if this ray exists in the cache, and if it does, update res if the cached result is closer bool checkAndCompareCachedResults(T& pick, PickCache& cache, RayPickResult& res, const PickCacheKey& key); @@ -79,7 +79,7 @@ std::shared_ptr> PickManager::findPick(const QUuid& uid) const { template bool PickManager::checkAndCompareCachedResults(T& pick, PickCache& cache, RayPickResult& res, const PickCacheKey& key) { - if (cache.contains(pick) && cache[pick].find(key) != cache[pick].end()) { + if (cache.find(pick) != cache.end() && cache[pick].find(key) != cache[pick].end()) { if (cache[pick][key].distance < res.distance) { res = cache[pick][key]; } @@ -114,14 +114,10 @@ void PickManager::update() { continue; } - T mathematicalPick; + T mathematicalPick = pick->getMathematicalPick(); - { - bool valid; - mathematicalPick = pick->getMathematicalPick(valid); - if (!valid) { - continue; - } + if (!mathematicalPick) { + continue; } RayPickResult res = RayPickResult(mathematicalPick); diff --git a/interface/src/raypick/StaticRayPick.cpp b/interface/src/raypick/StaticRayPick.cpp index 5db054c2e4..f7803aade6 100644 --- a/interface/src/raypick/StaticRayPick.cpp +++ b/interface/src/raypick/StaticRayPick.cpp @@ -13,7 +13,6 @@ StaticRayPick::StaticRayPick(const glm::vec3& position, const glm::vec3& directi { } -const PickRay StaticRayPick::getMathematicalPick(bool& valid) const { - valid = true; +const PickRay StaticRayPick::getMathematicalPick() const { return _pickRay; } \ No newline at end of file diff --git a/interface/src/raypick/StaticRayPick.h b/interface/src/raypick/StaticRayPick.h index c26ea386d6..6dc0a809ae 100644 --- a/interface/src/raypick/StaticRayPick.h +++ b/interface/src/raypick/StaticRayPick.h @@ -15,7 +15,7 @@ class StaticRayPick : public RayPick { public: StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getMathematicalPick(bool& valid) const override; + const PickRay getMathematicalPick() const override; private: PickRay _pickRay; diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index c7b482a917..45813bb294 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -127,11 +127,15 @@ void aaCubeFromScriptValue(const QScriptValue &object, AACube& aaCube); class PickRay { public: - PickRay() : origin(0.0f), direction(0.0f) { } + PickRay() : origin(NAN), direction(NAN) { } PickRay(const glm::vec3& origin, const glm::vec3 direction) : origin(origin), direction(direction) {} glm::vec3 origin; glm::vec3 direction; + operator bool() const { + auto isNan = glm::isnan(origin) || glm::isnan(direction); + return !isNan.x && !isNan.y && !isNan.z; + } bool operator==(const PickRay& other) const { return (origin == other.origin && direction == other.direction); } @@ -143,9 +147,12 @@ namespace std { return ((hash()(a.x) ^ (hash()(a.y) << 1)) >> 1) ^ (hash()(a.z) << 1); } }; -} -inline uint qHash(const PickRay& a) { - return (uint)(std::hash()(a.origin) ^ (std::hash()(a.direction) << 1)); + template <> + struct hash { + size_t operator()(const PickRay& a) const { + return (hash()(a.origin) ^ (hash()(a.direction) << 1)); + } + }; } Q_DECLARE_METATYPE(PickRay) QScriptValue pickRayToScriptValue(QScriptEngine* engine, const PickRay& pickRay); From 640ad514bcfbe2745e5e9fa7f2d784c3aef6ded1 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 17 Oct 2017 16:26:55 -0700 Subject: [PATCH 020/187] updates based on austin's comments --- interface/src/Application.cpp | 4 +-- interface/src/raypick/Pick.h | 12 ++++---- interface/src/raypick/PickManager.h | 6 ++-- .../src/raypick/RayPickScriptingInterface.h | 28 +++++++++---------- libraries/shared/src/RegisteredMetaTypes.h | 3 +- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b8d3168f10..98fc3525bc 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1819,12 +1819,12 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Setup the mouse ray pick and related operators DependencyManager::get()->setMouseRayPickID(_rayPickManager.createRayPick( - PickFilter(DependencyManager::get()->PICK_ENTITIES() | DependencyManager::get()->PICK_INCLUDE_NONCOLLIDABLE()), + PickFilter(RayPickScriptingInterface::PICK_ENTITIES() | RayPickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true)); DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { RayToEntityIntersectionResult entityResult; RayPickResult result = _rayPickManager.getPrevPickResult(rayPickID); - entityResult.intersects = result.type != DependencyManager::get()->INTERSECTED_NONE(); + entityResult.intersects = result.type != RayPickScriptingInterface::INTERSECTED_NONE(); if (entityResult.intersects) { entityResult.intersection = result.intersection; entityResult.distance = result.distance; diff --git a/interface/src/raypick/Pick.h b/interface/src/raypick/Pick.h index 161e9779ce..b4d9fa91b9 100644 --- a/interface/src/raypick/Pick.h +++ b/interface/src/raypick/Pick.h @@ -133,9 +133,9 @@ public: QVector getIgnoreItems() const; QVector getIncludeItems() const; - template - QVector getIgnoreItemsAs() const { - QVector result; + template + QVector getIgnoreItemsAs() const { + QVector result; withReadLock([&] { for (const auto& uid : _ignoreItems) { result.push_back(uid); @@ -144,9 +144,9 @@ public: return result; } - template - QVector getIncludeItemsAs() const { - QVector result; + template + QVector getIncludeItemsAs() const { + QVector result; withReadLock([&] { for (const auto& uid : _includeItems) { result.push_back(uid); diff --git a/interface/src/raypick/PickManager.h b/interface/src/raypick/PickManager.h index 424be0aa4f..3b991d130a 100644 --- a/interface/src/raypick/PickManager.h +++ b/interface/src/raypick/PickManager.h @@ -130,7 +130,7 @@ void PickManager::update() { PickCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { entityRes = pick->getEntityIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), - pick->getIncludeItemsAs(), pick->getIgnoreItemsAs(), !invisible, !nonCollidable); + pick->(template getIncludeItemsAs()), (template pick->getIgnoreItemsAs()), !invisible, !nonCollidable); fromCache = false; } @@ -148,7 +148,7 @@ void PickManager::update() { PickCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, overlayKey)) { overlayRes = pick->getOverlayIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), - pick->getIncludeItemsAs(), pick->getIgnoreItemsAs(), !invisible, !nonCollidable); + pick->(template getIncludeItemsAs()), pick->(template getIgnoreItemsAs()), !invisible, !nonCollidable); fromCache = false; } @@ -162,7 +162,7 @@ void PickManager::update() { PickCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, avatarKey)) { RayToAvatarIntersectionResult avatarRes = pick->getAvatarIntersection(mathematicalPick, - pick->getIncludeItemsAs(), pick->getIgnoreItemsAs()); + pick->(template getIncludeItemsAs()), pick->(template getIgnoreItemsAs())); cacheResult(avatarRes.intersects, RayPickResult(IntersectionType::AVATAR, avatarRes.avatarID, avatarRes.distance, avatarRes.intersection, mathematicalPick), avatarKey, res, mathematicalPick, results); } } diff --git a/interface/src/raypick/RayPickScriptingInterface.h b/interface/src/raypick/RayPickScriptingInterface.h index 2153c4f3a5..b91483addf 100644 --- a/interface/src/raypick/RayPickScriptingInterface.h +++ b/interface/src/raypick/RayPickScriptingInterface.h @@ -46,20 +46,20 @@ public slots: Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities); Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); - unsigned int PICK_NOTHING() { return 0; } - unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } - unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } - unsigned int PICK_AVATARS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_AVATARS); } - unsigned int PICK_HUD() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_HUD); } - unsigned int PICK_COARSE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_COARSE); } - unsigned int PICK_INCLUDE_INVISIBLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } - unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } - unsigned int PICK_ALL_INTERSECTIONS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } - unsigned int INTERSECTED_NONE() { return IntersectionType::NONE; } - unsigned int INTERSECTED_ENTITY() { return IntersectionType::ENTITY; } - unsigned int INTERSECTED_OVERLAY() { return IntersectionType::OVERLAY; } - unsigned int INTERSECTED_AVATAR() { return IntersectionType::AVATAR; } - unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } + static unsigned int PICK_NOTHING() { return 0; } + static unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } + static unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } + static unsigned int PICK_AVATARS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_AVATARS); } + static unsigned int PICK_HUD() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_HUD); } + static unsigned int PICK_COARSE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_COARSE); } + static unsigned int PICK_INCLUDE_INVISIBLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } + static unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } + static unsigned int PICK_ALL_INTERSECTIONS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } + static unsigned int INTERSECTED_NONE() { return IntersectionType::NONE; } + static unsigned int INTERSECTED_ENTITY() { return IntersectionType::ENTITY; } + static unsigned int INTERSECTED_OVERLAY() { return IntersectionType::OVERLAY; } + static unsigned int INTERSECTED_AVATAR() { return IntersectionType::AVATAR; } + static unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } }; #endif // hifi_RayPickScriptingInterface_h diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 45813bb294..8aeabce917 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -133,8 +133,7 @@ public: glm::vec3 direction; operator bool() const { - auto isNan = glm::isnan(origin) || glm::isnan(direction); - return !isNan.x && !isNan.y && !isNan.z; + return !(glm::any(glm::isnan(origin)) || glm::any(glm::isnan(direction))); } bool operator==(const PickRay& other) const { return (origin == other.origin && direction == other.direction); From 3572f7f5db9e989c0100817fabd77d0292eceb61 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 18 Oct 2017 18:43:56 -0700 Subject: [PATCH 021/187] non-templated pickresult wip --- interface/src/Application.cpp | 19 ++-- interface/src/raypick/LaserPointer.cpp | 16 ++-- interface/src/raypick/LaserPointer.h | 4 +- interface/src/raypick/LaserPointerManager.cpp | 4 +- interface/src/raypick/LaserPointerManager.h | 5 +- .../raypick/LaserPointerScriptingInterface.h | 2 +- interface/src/raypick/RayPick.cpp | 48 ++++++---- interface/src/raypick/RayPick.h | 70 ++++++++++++--- interface/src/raypick/RayPickManager.cpp | 3 - interface/src/raypick/RayPickManager.h | 8 +- .../src/raypick/RayPickScriptingInterface.cpp | 2 +- .../src/raypick/RayPickScriptingInterface.h | 30 +++---- .../pointers/src/pointers}/Pick.cpp | 0 .../pointers/src/pointers}/Pick.h | 68 +++++++++----- .../pointers/src/pointers}/PickManager.h | 90 +++++++------------ libraries/shared/src/RegisteredMetaTypes.cpp | 22 ----- libraries/shared/src/RegisteredMetaTypes.h | 32 ++----- 17 files changed, 217 insertions(+), 206 deletions(-) rename {interface/src/raypick => libraries/pointers/src/pointers}/Pick.cpp (100%) rename {interface/src/raypick => libraries/pointers/src/pointers}/Pick.h (78%) rename {interface/src/raypick => libraries/pointers/src/pointers}/PickManager.h (59%) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 98fc3525bc..49b150db79 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1823,14 +1823,17 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo 0.0f, true)); DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { RayToEntityIntersectionResult entityResult; - RayPickResult result = _rayPickManager.getPrevPickResult(rayPickID); - entityResult.intersects = result.type != RayPickScriptingInterface::INTERSECTED_NONE(); - if (entityResult.intersects) { - entityResult.intersection = result.intersection; - entityResult.distance = result.distance; - entityResult.surfaceNormal = result.surfaceNormal; - entityResult.entityID = result.objectID; - entityResult.entity = DependencyManager::get()->getTree()->findEntityByID(entityResult.entityID); + entityResult.intersects = false; + QVariantMap result = _rayPickManager.getPrevPickResult(rayPickID); + if (result["type"].isValid()) { + entityResult.intersects = result["type"] != RayPickScriptingInterface::INTERSECTED_NONE(); + if (entityResult.intersects) { + entityResult.intersection = vec3FromVariant(result["intersection"]); + entityResult.distance = result["distance"].toFloat(); + entityResult.surfaceNormal = vec3FromVariant(result["surfaceNormal"]); + entityResult.entityID = result["objectID"].toUuid(); + entityResult.entity = DependencyManager::get()->getTree()->findEntityByID(entityResult.entityID); + } } return entityResult; }); diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 32c781b58d..2f3fc13706 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -12,7 +12,6 @@ #include "Application.h" #include "avatar/AvatarManager.h" -#include "RayPickScriptingInterface.h" LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool enabled) : @@ -101,7 +100,7 @@ void LaserPointer::updateRenderStateOverlay(const OverlayID& id, const QVariant& } } -const RayPickResult LaserPointer::getPrevRayPickResult() { +const QVariantMap LaserPointer::getPrevRayPickResult() { return qApp->getRayPickManager().getPrevPickResult(_rayPickUID); } @@ -198,15 +197,18 @@ void LaserPointer::disableRenderState(const RenderState& renderState) { void LaserPointer::update() { // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts withReadLock([&] { - RayPickResult prevRayPickResult = qApp->getRayPickManager().getPrevPickResult(_rayPickUID); + QVariantMap prevRayPickResult = qApp->getRayPickManager().getPrevPickResult(_rayPickUID); + IntersectionType type = IntersectionType(prevRayPickResult["type"].toInt()); + PickRay pickRay = PickRay(prevRayPickResult["searchRay"].toMap()); + QUuid uid = prevRayPickResult["objectID"].toUuid(); if (_renderingEnabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() && - (prevRayPickResult.type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) { - float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult.distance; - updateRenderState(_renderStates[_currentRenderState], prevRayPickResult.type, distance, prevRayPickResult.objectID, prevRayPickResult.searchRay, false); + (type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) { + float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult["distance"].toFloat(); + updateRenderState(_renderStates[_currentRenderState], type, distance, uid, pickRay, false); disableRenderState(_defaultRenderStates[_currentRenderState].second); } else if (_renderingEnabled && !_currentRenderState.empty() && _defaultRenderStates.find(_currentRenderState) != _defaultRenderStates.end()) { disableRenderState(_renderStates[_currentRenderState]); - updateRenderState(_defaultRenderStates[_currentRenderState].second, IntersectionType::NONE, _defaultRenderStates[_currentRenderState].first, QUuid(), prevRayPickResult.searchRay, true); + updateRenderState(_defaultRenderStates[_currentRenderState].second, IntersectionType::NONE, _defaultRenderStates[_currentRenderState].first, QUuid(), pickRay, true); } else if (!_currentRenderState.empty()) { disableRenderState(_renderStates[_currentRenderState]); disableRenderState(_defaultRenderStates[_currentRenderState].second); diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index 20ea824f50..d6fcf20b9d 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -19,7 +19,7 @@ #include "ui/overlays/Overlay.h" -class RayPickResult; +#include "RayPickScriptingInterface.h" class RenderState { @@ -61,7 +61,7 @@ public: QUuid getRayUID() { return _rayPickUID; } void enable(); void disable(); - const RayPickResult getPrevRayPickResult(); + const QVariantMap getPrevRayPickResult(); void setRenderState(const std::string& state); // You cannot use editRenderState to change the overlay type of any part of the laser pointer. You can only edit the properties of the existing overlays. diff --git a/interface/src/raypick/LaserPointerManager.cpp b/interface/src/raypick/LaserPointerManager.cpp index f65a8a1a84..a300a418a7 100644 --- a/interface/src/raypick/LaserPointerManager.cpp +++ b/interface/src/raypick/LaserPointerManager.cpp @@ -67,12 +67,12 @@ void LaserPointerManager::editRenderState(const QUuid& uid, const std::string& s } } -const RayPickResult LaserPointerManager::getPrevRayPickResult(const QUuid& uid) const { +const QVariantMap LaserPointerManager::getPrevRayPickResult(const QUuid& uid) const { auto laserPointer = find(uid); if (laserPointer) { return laserPointer->getPrevRayPickResult(); } - return RayPickResult(); + return QVariantMap(); } void LaserPointerManager::update() { diff --git a/interface/src/raypick/LaserPointerManager.h b/interface/src/raypick/LaserPointerManager.h index a4689cf16d..547f7cc785 100644 --- a/interface/src/raypick/LaserPointerManager.h +++ b/interface/src/raypick/LaserPointerManager.h @@ -18,9 +18,6 @@ #include "LaserPointer.h" -class RayPickResult; - - class LaserPointerManager : protected ReadWriteLockable { public: @@ -31,7 +28,7 @@ public: void disableLaserPointer(const QUuid& uid) const; void setRenderState(const QUuid& uid, const std::string& renderState) const; void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; - const RayPickResult getPrevRayPickResult(const QUuid& uid) const; + const QVariantMap getPrevRayPickResult(const QUuid& uid) const; void setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const; void setLaserLength(const QUuid& uid, const float laserLength) const; diff --git a/interface/src/raypick/LaserPointerScriptingInterface.h b/interface/src/raypick/LaserPointerScriptingInterface.h index 19262e6e5d..1e34016ab5 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.h +++ b/interface/src/raypick/LaserPointerScriptingInterface.h @@ -28,7 +28,7 @@ public slots: Q_INVOKABLE void removeLaserPointer(const QUuid& uid) const { qApp->getLaserPointerManager().removeLaserPointer(uid); } Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { qApp->getLaserPointerManager().setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE RayPickResult getPrevRayPickResult(QUuid uid) const { return qApp->getLaserPointerManager().getPrevRayPickResult(uid); } + Q_INVOKABLE QVariantMap getPrevRayPickResult(QUuid uid) const { return qApp->getLaserPointerManager().getPrevRayPickResult(uid); } Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { qApp->getLaserPointerManager().setPrecisionPicking(uid, precisionPicking); } Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { qApp->getLaserPointerManager().setLaserLength(uid, laserLength); } diff --git a/interface/src/raypick/RayPick.cpp b/interface/src/raypick/RayPick.cpp index f12320ee35..4e1e0386f1 100644 --- a/interface/src/raypick/RayPick.cpp +++ b/interface/src/raypick/RayPick.cpp @@ -8,32 +8,44 @@ #include "RayPick.h" #include "Application.h" +#include "EntityScriptingInterface.h" +#include "ui/overlays/Overlays.h" #include "avatar/AvatarManager.h" #include "scripting/HMDScriptingInterface.h" #include "DependencyManager.h" -RayToEntityIntersectionResult RayPick::getEntityIntersection(const PickRay& pick, bool precisionPicking, - const QVector& entitiesToInclude, - const QVector& entitiesToIgnore, - bool visibleOnly, bool collidableOnly) { - return DependencyManager::get()->findRayIntersectionVector(pick, precisionPicking, - entitiesToInclude, entitiesToIgnore, visibleOnly, collidableOnly); +PickResultPointer RayPick::getEntityIntersection(const PickRay& pick) { + RayToEntityIntersectionResult entityRes = + DependencyManager::get()->findRayIntersectionVector(pick, !getFilter().doesPickCoarse(), + getIncludeItemsAs(), getIgnoreItemsAs(), !getFilter().doesPickInvisible(), !getFilter().doesPickNonCollidable()); + if (entityRes.intersects) { + return std::make_shared(IntersectionType::ENTITY, entityRes.entityID, entityRes.distance, entityRes.intersection, pick, entityRes.surfaceNormal); + } else { + return std::make_shared(pick.toVariantMap()); + } } -RayToOverlayIntersectionResult RayPick::getOverlayIntersection(const PickRay& pick, bool precisionPicking, - const QVector& overlaysToInclude, - const QVector& overlaysToIgnore, - bool visibleOnly, bool collidableOnly) { - return qApp->getOverlays().findRayIntersectionVector(pick, precisionPicking, - overlaysToInclude, overlaysToIgnore, visibleOnly, collidableOnly); +PickResultPointer RayPick::getOverlayIntersection(const PickRay& pick) { + RayToOverlayIntersectionResult overlayRes = + qApp->getOverlays().findRayIntersectionVector(pick, !getFilter().doesPickCoarse(), + getIncludeItemsAs(), getIgnoreItemsAs(), !getFilter().doesPickInvisible(), !getFilter().doesPickNonCollidable()); + if (overlayRes.intersects) { + return std::make_shared(IntersectionType::OVERLAY, overlayRes.overlayID, overlayRes.distance, overlayRes.intersection, pick, overlayRes.surfaceNormal); + } else { + return std::make_shared(pick.toVariantMap()); + } } -RayToAvatarIntersectionResult RayPick::getAvatarIntersection(const PickRay& pick, - const QVector& avatarsToInclude, - const QVector& avatarsToIgnore) { - return DependencyManager::get()->findRayIntersectionVector(pick, avatarsToInclude, avatarsToIgnore); +PickResultPointer RayPick::getAvatarIntersection(const PickRay& pick) { + RayToAvatarIntersectionResult avatarRes = DependencyManager::get()->findRayIntersectionVector(pick, getIncludeItemsAs(), getIgnoreItemsAs()); + if (avatarRes.intersects) { + return std::make_shared(IntersectionType::AVATAR, avatarRes.avatarID, avatarRes.distance, avatarRes.intersection, pick); + } else { + return std::make_shared(pick.toVariantMap()); + } } -glm::vec3 RayPick::getHUDIntersection(const PickRay& pick) { - return DependencyManager::get()->calculateRayUICollisionPoint(pick.origin, pick.direction); +PickResultPointer RayPick::getHUDIntersection(const PickRay& pick) { + glm::vec3 hudRes = DependencyManager::get()->calculateRayUICollisionPoint(pick.origin, pick.direction); + return std::make_shared(IntersectionType::HUD, QUuid(), glm::distance(pick.origin, hudRes), hudRes, pick); } \ No newline at end of file diff --git a/interface/src/raypick/RayPick.h b/interface/src/raypick/RayPick.h index 92778e74a2..b5d7ea7c3e 100644 --- a/interface/src/raypick/RayPick.h +++ b/interface/src/raypick/RayPick.h @@ -8,28 +8,72 @@ #ifndef hifi_RayPick_h #define hifi_RayPick_h -#include "Pick.h" +#include +#include class EntityItemID; class OverlayID; +class RayPickResult : public PickResult { +public: + RayPickResult() {} + RayPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {} + RayPickResult(const IntersectionType type, const QUuid& objectID, const float distance, const glm::vec3& intersection, const PickRay& searchRay, const glm::vec3& surfaceNormal = glm::vec3(NAN)) : + PickResult(searchRay.toVariantMap()), type(type), intersects(type != NONE), objectID(objectID), distance(distance), intersection(intersection), surfaceNormal(surfaceNormal) { + } + + RayPickResult(const RayPickResult& rayPickResult) : PickResult(rayPickResult.pickVariant) { + type = rayPickResult.type; + intersects = rayPickResult.intersects; + objectID = rayPickResult.objectID; + distance = rayPickResult.distance; + intersection = rayPickResult.intersection; + surfaceNormal = rayPickResult.surfaceNormal; + } + + IntersectionType type { NONE }; + bool intersects { false }; + QUuid objectID; + float distance { FLT_MAX }; + glm::vec3 intersection { NAN }; + glm::vec3 surfaceNormal { NAN }; + + virtual QVariantMap toVariantMap() const override { + QVariantMap toReturn; + toReturn["type"] = type; + toReturn["intersects"] = intersects; + toReturn["objectID"] = objectID; + toReturn["distance"] = distance; + toReturn["intersection"] = vec3toVariant(intersection); + toReturn["surfaceNormal"] = vec3toVariant(surfaceNormal); + toReturn["searchRay"] = PickResult::toVariantMap(); + return toReturn; + } + + bool doesIntersect() const override { return intersects; } + bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return distance < maxDistance; } + + PickResultPointer compareAndProcessNewResult(const PickResultPointer newRes) override { + auto newRayRes = std::static_pointer_cast(newRes); + if (newRayRes->distance < distance) { + return std::make_shared(*newRayRes); + } else { + return std::make_shared(*this); + } + } + +}; + class RayPick : public Pick { public: RayPick(const PickFilter& filter, const float maxDistance, const bool enabled) : Pick(filter, maxDistance, enabled) {} - RayToEntityIntersectionResult getEntityIntersection(const PickRay& pick, bool precisionPicking, - const QVector& entitiesToInclude, - const QVector& entitiesToIgnore, - bool visibleOnly, bool collidableOnly) override; - RayToOverlayIntersectionResult getOverlayIntersection(const PickRay& pick, bool precisionPicking, - const QVector& overlaysToInclude, - const QVector& overlaysToIgnore, - bool visibleOnly, bool collidableOnly) override; - RayToAvatarIntersectionResult getAvatarIntersection(const PickRay& pick, - const QVector& avatarsToInclude, - const QVector& avatarsToIgnore) override; - glm::vec3 getHUDIntersection(const PickRay& pick) override; + PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override { return std::make_shared(pickVariant); } + PickResultPointer getEntityIntersection(const PickRay& pick) override; + PickResultPointer getOverlayIntersection(const PickRay& pick) override; + PickResultPointer getAvatarIntersection(const PickRay& pick) override; + PickResultPointer getHUDIntersection(const PickRay& pick) override; }; #endif // hifi_RayPick_h diff --git a/interface/src/raypick/RayPickManager.cpp b/interface/src/raypick/RayPickManager.cpp index e6b183133d..2e62c608d8 100644 --- a/interface/src/raypick/RayPickManager.cpp +++ b/interface/src/raypick/RayPickManager.cpp @@ -1,7 +1,4 @@ // -// RayPickManager.cpp -// interface/src/raypick -// // Created by Sam Gondelman 7/11/2017 // Copyright 2017 High Fidelity, Inc. // diff --git a/interface/src/raypick/RayPickManager.h b/interface/src/raypick/RayPickManager.h index 7673e402f4..7bc97c8526 100644 --- a/interface/src/raypick/RayPickManager.h +++ b/interface/src/raypick/RayPickManager.h @@ -1,7 +1,4 @@ // -// RayPickManager.h -// interface/src/raypick -// // Created by Sam Gondelman 7/11/2017 // Copyright 2017 High Fidelity, Inc. // @@ -11,9 +8,8 @@ #ifndef hifi_RayPickManager_h #define hifi_RayPickManager_h -#include "PickManager.h" - -class RayPickResult; +#include +#include "RegisteredMetaTypes.h" class RayPickManager : public PickManager { diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index 380971b5e6..11b6b2dfa3 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -78,7 +78,7 @@ void RayPickScriptingInterface::removeRayPick(const QUuid& uid) { qApp->getRayPickManager().removePick(uid); } -RayPickResult RayPickScriptingInterface::getPrevRayPickResult(const QUuid& uid) { +QVariantMap RayPickScriptingInterface::getPrevRayPickResult(const QUuid& uid) { return qApp->getRayPickManager().getPrevPickResult(uid); } diff --git a/interface/src/raypick/RayPickScriptingInterface.h b/interface/src/raypick/RayPickScriptingInterface.h index b91483addf..ebfc3fb9fe 100644 --- a/interface/src/raypick/RayPickScriptingInterface.h +++ b/interface/src/raypick/RayPickScriptingInterface.h @@ -40,26 +40,26 @@ public slots: Q_INVOKABLE void enableRayPick(const QUuid& uid); Q_INVOKABLE void disableRayPick(const QUuid& uid); Q_INVOKABLE void removeRayPick(const QUuid& uid); - Q_INVOKABLE RayPickResult getPrevRayPickResult(const QUuid& uid); + Q_INVOKABLE QVariantMap getPrevRayPickResult(const QUuid& uid); Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, const bool precisionPicking); Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities); Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); - static unsigned int PICK_NOTHING() { return 0; } - static unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } - static unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } - static unsigned int PICK_AVATARS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_AVATARS); } - static unsigned int PICK_HUD() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_HUD); } - static unsigned int PICK_COARSE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_COARSE); } - static unsigned int PICK_INCLUDE_INVISIBLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } - static unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } - static unsigned int PICK_ALL_INTERSECTIONS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } - static unsigned int INTERSECTED_NONE() { return IntersectionType::NONE; } - static unsigned int INTERSECTED_ENTITY() { return IntersectionType::ENTITY; } - static unsigned int INTERSECTED_OVERLAY() { return IntersectionType::OVERLAY; } - static unsigned int INTERSECTED_AVATAR() { return IntersectionType::AVATAR; } - static unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } + static constexpr unsigned int PICK_NOTHING() { return 0; } + static constexpr unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } + static constexpr unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } + static constexpr unsigned int PICK_AVATARS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_AVATARS); } + static constexpr unsigned int PICK_HUD() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_HUD); } + static constexpr unsigned int PICK_COARSE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_COARSE); } + static constexpr unsigned int PICK_INCLUDE_INVISIBLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } + static constexpr unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } + static constexpr unsigned int PICK_ALL_INTERSECTIONS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } + static constexpr unsigned int INTERSECTED_NONE() { return IntersectionType::NONE; } + static constexpr unsigned int INTERSECTED_ENTITY() { return IntersectionType::ENTITY; } + static constexpr unsigned int INTERSECTED_OVERLAY() { return IntersectionType::OVERLAY; } + static constexpr unsigned int INTERSECTED_AVATAR() { return IntersectionType::AVATAR; } + static constexpr unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } }; #endif // hifi_RayPickScriptingInterface_h diff --git a/interface/src/raypick/Pick.cpp b/libraries/pointers/src/pointers/Pick.cpp similarity index 100% rename from interface/src/raypick/Pick.cpp rename to libraries/pointers/src/pointers/Pick.cpp diff --git a/interface/src/raypick/Pick.h b/libraries/pointers/src/pointers/Pick.h similarity index 78% rename from interface/src/raypick/Pick.h rename to libraries/pointers/src/pointers/Pick.h index b4d9fa91b9..6e11506dd9 100644 --- a/interface/src/raypick/Pick.h +++ b/libraries/pointers/src/pointers/Pick.h @@ -13,12 +13,18 @@ #include #include +#include +#include -#include #include -#include "EntityScriptingInterface.h" -#include "ui/overlays/Overlays.h" +enum IntersectionType { + NONE = 0, + ENTITY, + OVERLAY, + AVATAR, + HUD +}; class PickFilter { public: @@ -98,6 +104,31 @@ public: static const PickFilter NOTHING; }; +class PickResult { +public: + PickResult() {} + PickResult(const QVariantMap& pickVariant) : pickVariant(pickVariant) {} + + virtual QVariantMap toVariantMap() const { + return pickVariant; + } + + virtual bool doesIntersect() const = 0; + + // for example: if we want the closest result, compare based on distance + // if we want all results, combine them + // must return a new pointer + virtual std::shared_ptr compareAndProcessNewResult(const std::shared_ptr newRes) = 0; + + // returns true if this result contains any valid results with distance < maxDistance + // can also filter out results with distance >= maxDistance + virtual bool checkOrFilterAgainstMaxDistance(float maxDistance) = 0; + + QVariantMap pickVariant; +}; + +using PickResultPointer = std::shared_ptr; + template class Pick : protected ReadWriteLockable { @@ -105,18 +136,11 @@ public: Pick(const PickFilter& filter, const float maxDistance, const bool enabled); virtual const T getMathematicalPick() const = 0; - virtual RayToEntityIntersectionResult getEntityIntersection(const T& pick, bool precisionPicking, - const QVector& entitiesToInclude, - const QVector& entitiesToIgnore, - bool visibleOnly, bool collidableOnly) = 0; - virtual RayToOverlayIntersectionResult getOverlayIntersection(const T& pick, bool precisionPicking, - const QVector& overlaysToInclude, - const QVector& overlaysToIgnore, - bool visibleOnly, bool collidableOnly) = 0; - virtual RayToAvatarIntersectionResult getAvatarIntersection(const T& pick, - const QVector& avatarsToInclude, - const QVector& avatarsToIgnore) = 0; - virtual glm::vec3 getHUDIntersection(const T& pick) = 0; + virtual PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const = 0; + virtual PickResultPointer getEntityIntersection(const T& pick) = 0; + virtual PickResultPointer getOverlayIntersection(const T& pick) = 0; + virtual PickResultPointer getAvatarIntersection(const T& pick) = 0; + virtual PickResultPointer getHUDIntersection(const T& pick) = 0; void enable(bool enabled = true); void disable() { enable(false); } @@ -124,11 +148,11 @@ public: PickFilter getFilter() const; float getMaxDistance() const; bool isEnabled() const; - RayPickResult getPrevPickResult() const; void setPrecisionPicking(bool precisionPicking); - void setPickResult(const RayPickResult& rayPickResult); + PickResultPointer getPrevPickResult() const; + void setPickResult(const PickResultPointer& pickResult); QVector getIgnoreItems() const; QVector getIncludeItems() const; @@ -162,7 +186,7 @@ private: PickFilter _filter; const float _maxDistance; bool _enabled; - RayPickResult _prevResult; + PickResultPointer _prevResult; QVector _ignoreItems; QVector _includeItems; @@ -209,9 +233,9 @@ void Pick::setPrecisionPicking(bool precisionPicking) { } template -void Pick::setPickResult(const RayPickResult& PickResult) { +void Pick::setPickResult(const PickResultPointer& pickResult) { withWriteLock([&] { - _prevResult = PickResult; + _prevResult = pickResult; }); } @@ -230,8 +254,8 @@ QVector Pick::getIncludeItems() const { } template -RayPickResult Pick::getPrevPickResult() const { - return resultWithReadLock([&] { +PickResultPointer Pick::getPrevPickResult() const { + return resultWithReadLock([&] { return _prevResult; }); } diff --git a/interface/src/raypick/PickManager.h b/libraries/pointers/src/pointers/PickManager.h similarity index 59% rename from interface/src/raypick/PickManager.h rename to libraries/pointers/src/pointers/PickManager.h index 3b991d130a..5441ff9b72 100644 --- a/interface/src/raypick/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -1,7 +1,4 @@ // -// PickManager.h -// interface/src/raypick -// // Created by Sam Gondelman 10/16/2017 // Copyright 2017 High Fidelity, Inc. // @@ -36,16 +33,20 @@ namespace std { }; } -// T is a mathematical representation of a Pick. -// For example: PickRay for RayPick -// TODO: add another template type to replace RayPickResult with a generalized PickResult +// T is a mathematical representation of a Pick +// For example: RayPicks use T = PickRay +// T needs have the following functions defined: +// - operator bool() const +// - bool operator==(const T& other) const +// - QVariantMap toVariantMap() const +// - an std::hash size_t operator()(const T& a) const template class PickManager : protected ReadWriteLockable { public: virtual void update(); - RayPickResult getPrevPickResult(const QUuid& uid) const; + QVariantMap getPrevPickResult(const QUuid& uid) const; QUuid addPick(const std::shared_ptr> pick); void removePick(const QUuid& uid); @@ -60,11 +61,11 @@ protected: std::shared_ptr> findPick(const QUuid& uid) const; QHash>> _picks; - typedef std::unordered_map> PickCache; + typedef std::unordered_map> PickCache; - // Returns true if this ray exists in the cache, and if it does, update res if the cached result is closer - bool checkAndCompareCachedResults(T& pick, PickCache& cache, RayPickResult& res, const PickCacheKey& key); - void cacheResult(const bool intersects, const RayPickResult& resTemp, const PickCacheKey& key, RayPickResult& res, T& pick, PickCache& cache); + // Returns true if this pick exists in the cache, and if it does, update res if the cached result is closer + bool checkAndCompareCachedResults(T& pick, PickCache& cache, PickResultPointer& res, const PickCacheKey& key); + void cacheResult(const bool intersects, const PickResultPointer& resTemp, const PickCacheKey& key, PickResultPointer& res, T& mathPick, PickCache& cache, const std::shared_ptr> pick); }; template @@ -78,25 +79,21 @@ std::shared_ptr> PickManager::findPick(const QUuid& uid) const { } template -bool PickManager::checkAndCompareCachedResults(T& pick, PickCache& cache, RayPickResult& res, const PickCacheKey& key) { +bool PickManager::checkAndCompareCachedResults(T& pick, PickCache& cache, PickResultPointer& res, const PickCacheKey& key) { if (cache.find(pick) != cache.end() && cache[pick].find(key) != cache[pick].end()) { - if (cache[pick][key].distance < res.distance) { - res = cache[pick][key]; - } + res = res->compareAndProcessNewResult(cache[pick][key]); return true; } return false; } template -void PickManager::cacheResult(const bool intersects, const RayPickResult& resTemp, const PickCacheKey& key, RayPickResult& res, T& pick, PickCache& cache) { +void PickManager::cacheResult(const bool intersects, const PickResultPointer& resTemp, const PickCacheKey& key, PickResultPointer& res, T& mathPick, PickCache& cache, const std::shared_ptr> pick) { if (intersects) { - cache[pick][key] = resTemp; - if (resTemp.distance < res.distance) { - res = resTemp; - } + cache[mathPick][key] = resTemp; + res = res->compareAndProcessNewResult(resTemp); } else { - cache[pick][key] = RayPickResult(res.searchRay); + cache[mathPick][key] = pick->getDefaultResult(mathPick.toVariantMap()); } } @@ -120,50 +117,29 @@ void PickManager::update() { continue; } - RayPickResult res = RayPickResult(mathematicalPick); + PickResultPointer res = pick->getDefaultResult(mathematicalPick.toVariantMap()); if (pick->getFilter().doesPickEntities()) { - RayToEntityIntersectionResult entityRes; - bool fromCache = true; - bool invisible = pick->getFilter().doesPickInvisible(); - bool nonCollidable = pick->getFilter().doesPickNonCollidable(); PickCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { - entityRes = pick->getEntityIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), - pick->(template getIncludeItemsAs()), (template pick->getIgnoreItemsAs()), !invisible, !nonCollidable); - fromCache = false; - } - - if (!fromCache) { - cacheResult(entityRes.intersects, RayPickResult(IntersectionType::ENTITY, entityRes.entityID, entityRes.distance, entityRes.intersection, mathematicalPick, entityRes.surfaceNormal), - entityKey, res, mathematicalPick, results); + PickResultPointer entityRes = pick->getEntityIntersection(mathematicalPick); + cacheResult(entityRes->doesIntersect(), entityRes, entityKey, res, mathematicalPick, results, pick); } } if (pick->getFilter().doesPickOverlays()) { - RayToOverlayIntersectionResult overlayRes; - bool fromCache = true; - bool invisible = pick->getFilter().doesPickInvisible(); - bool nonCollidable = pick->getFilter().doesPickNonCollidable(); PickCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, overlayKey)) { - overlayRes = pick->getOverlayIntersection(mathematicalPick, !pick->getFilter().doesPickCoarse(), - pick->(template getIncludeItemsAs()), pick->(template getIgnoreItemsAs()), !invisible, !nonCollidable); - fromCache = false; - } - - if (!fromCache) { - cacheResult(overlayRes.intersects, RayPickResult(IntersectionType::OVERLAY, overlayRes.overlayID, overlayRes.distance, overlayRes.intersection, mathematicalPick, overlayRes.surfaceNormal), - overlayKey, res, mathematicalPick, results); + PickResultPointer overlayRes = pick->getOverlayIntersection(mathematicalPick); + cacheResult(overlayRes->doesIntersect(), overlayRes, overlayKey, res, mathematicalPick, results, pick); } } if (pick->getFilter().doesPickAvatars()) { PickCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, avatarKey)) { - RayToAvatarIntersectionResult avatarRes = pick->getAvatarIntersection(mathematicalPick, - pick->(template getIncludeItemsAs()), pick->(template getIgnoreItemsAs())); - cacheResult(avatarRes.intersects, RayPickResult(IntersectionType::AVATAR, avatarRes.avatarID, avatarRes.distance, avatarRes.intersection, mathematicalPick), avatarKey, res, mathematicalPick, results); + PickResultPointer avatarRes = pick->getAvatarIntersection(mathematicalPick); + cacheResult(avatarRes->doesIntersect(), avatarRes, avatarKey, res, mathematicalPick, results, pick); } } @@ -171,26 +147,26 @@ void PickManager::update() { if (pick->getFilter().doesPickHUD() && DependencyManager::get()->isHMDMode()) { PickCacheKey hudKey = { pick->getFilter().getHUDFlags(), QVector(), QVector() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, hudKey)) { - glm::vec3 hudRes = pick->getHUDIntersection(mathematicalPick); - cacheResult(true, RayPickResult(IntersectionType::HUD, 0, glm::distance(mathematicalPick.origin, hudRes), hudRes, mathematicalPick), hudKey, res, mathematicalPick, results); + PickResultPointer hudRes = pick->getHUDIntersection(mathematicalPick); + cacheResult(true, hudRes, hudKey, res, mathematicalPick, results, pick); } } - if (pick->getMaxDistance() == 0.0f || (pick->getMaxDistance() > 0.0f && res.distance < pick->getMaxDistance())) { + if (pick->getMaxDistance() == 0.0f || (pick->getMaxDistance() > 0.0f && res->checkOrFilterAgainstMaxDistance(pick->getMaxDistance()))) { pick->setPickResult(res); } else { - pick->setPickResult(RayPickResult(mathematicalPick)); + pick->setPickResult(pick->getDefaultResult(mathematicalPick.toVariantMap())); } } } template -RayPickResult PickManager::getPrevPickResult(const QUuid& uid) const { +QVariantMap PickManager::getPrevPickResult(const QUuid& uid) const { auto pick = findPick(uid); - if (pick) { - return pick->getPrevPickResult(); + if (pick && pick->getPrevPickResult()) { + return pick->getPrevPickResult()->toVariantMap(); } - return RayPickResult(); + return QVariantMap(); } template diff --git a/libraries/shared/src/RegisteredMetaTypes.cpp b/libraries/shared/src/RegisteredMetaTypes.cpp index 7d0df3ac78..b4d6ebaa7a 100644 --- a/libraries/shared/src/RegisteredMetaTypes.cpp +++ b/libraries/shared/src/RegisteredMetaTypes.cpp @@ -34,7 +34,6 @@ int vec2MetaTypeId = qRegisterMetaType(); int quatMetaTypeId = qRegisterMetaType(); int xColorMetaTypeId = qRegisterMetaType(); int pickRayMetaTypeId = qRegisterMetaType(); -int rayPickResultMetaTypeId = qRegisterMetaType(); int collisionMetaTypeId = qRegisterMetaType(); int qMapURLStringMetaTypeId = qRegisterMetaType>(); int socketErrorMetaTypeId = qRegisterMetaType(); @@ -57,7 +56,6 @@ void registerMetaTypes(QScriptEngine* engine) { qScriptRegisterMetaType(engine, qColorToScriptValue, qColorFromScriptValue); qScriptRegisterMetaType(engine, qURLToScriptValue, qURLFromScriptValue); qScriptRegisterMetaType(engine, pickRayToScriptValue, pickRayFromScriptValue); - qScriptRegisterMetaType(engine, rayPickResultToScriptValue, rayPickResultFromScriptValue); qScriptRegisterMetaType(engine, collisionToScriptValue, collisionFromScriptValue); qScriptRegisterMetaType(engine, quuidToScriptValue, quuidFromScriptValue); qScriptRegisterMetaType(engine, qSizeFToScriptValue, qSizeFFromScriptValue); @@ -753,26 +751,6 @@ void pickRayFromScriptValue(const QScriptValue& object, PickRay& pickRay) { } } -QScriptValue rayPickResultToScriptValue(QScriptEngine* engine, const RayPickResult& rayPickResult) { - QScriptValue obj = engine->newObject(); - obj.setProperty("type", rayPickResult.type); - QScriptValue objectID = quuidToScriptValue(engine, rayPickResult.objectID); - obj.setProperty("objectID", objectID); - obj.setProperty("distance", rayPickResult.distance); - QScriptValue intersection = vec3toScriptValue(engine, rayPickResult.intersection); - obj.setProperty("intersection", intersection); - obj.setProperty("intersects", rayPickResult.type != NONE); - QScriptValue searchRay = pickRayToScriptValue(engine, rayPickResult.searchRay); - obj.setProperty("searchRay", searchRay); - QScriptValue surfaceNormal = vec3toScriptValue(engine, rayPickResult.surfaceNormal); - obj.setProperty("surfaceNormal", surfaceNormal); - return obj; -} - -void rayPickResultFromScriptValue(const QScriptValue& object, RayPickResult& rayPickResult) { - // TODO: cannot currently accept RayPickResults from JS -} - QScriptValue collisionToScriptValue(QScriptEngine* engine, const Collision& collision) { QScriptValue obj = engine->newObject(); obj.setProperty("type", collision.type); diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 8aeabce917..3d423d5205 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -128,6 +128,7 @@ void aaCubeFromScriptValue(const QScriptValue &object, AACube& aaCube); class PickRay { public: PickRay() : origin(NAN), direction(NAN) { } + PickRay(const QVariantMap& pickVariant) : origin(vec3FromVariant(pickVariant["origin"])), direction(vec3FromVariant(pickVariant["direction"])) {} PickRay(const glm::vec3& origin, const glm::vec3 direction) : origin(origin), direction(direction) {} glm::vec3 origin; glm::vec3 direction; @@ -138,6 +139,12 @@ public: bool operator==(const PickRay& other) const { return (origin == other.origin && direction == other.direction); } + QVariantMap toVariantMap() const { + QVariantMap pickRay; + pickRay["origin"] = vec3toVariant(origin); + pickRay["direction"] = vec3toVariant(direction); + return pickRay; + } }; namespace std { template <> @@ -157,31 +164,6 @@ Q_DECLARE_METATYPE(PickRay) QScriptValue pickRayToScriptValue(QScriptEngine* engine, const PickRay& pickRay); void pickRayFromScriptValue(const QScriptValue& object, PickRay& pickRay); -enum IntersectionType { - NONE = 0, - ENTITY, - OVERLAY, - AVATAR, - HUD -}; - -class RayPickResult { -public: - RayPickResult() {} - RayPickResult(const PickRay& searchRay) : searchRay(searchRay) {} - RayPickResult(const IntersectionType type, const QUuid& objectID, const float distance, const glm::vec3& intersection, const PickRay& searchRay, const glm::vec3& surfaceNormal = glm::vec3(NAN)) : - type(type), objectID(objectID), distance(distance), intersection(intersection), searchRay(searchRay), surfaceNormal(surfaceNormal) {} - IntersectionType type { NONE }; - QUuid objectID; - float distance { FLT_MAX }; - glm::vec3 intersection { NAN }; - PickRay searchRay; - glm::vec3 surfaceNormal { NAN }; -}; -Q_DECLARE_METATYPE(RayPickResult) -QScriptValue rayPickResultToScriptValue(QScriptEngine* engine, const RayPickResult& rayPickResult); -void rayPickResultFromScriptValue(const QScriptValue& object, RayPickResult& rayPickResult); - enum ContactEventType { CONTACT_EVENT_TYPE_START, CONTACT_EVENT_TYPE_CONTINUE, From d7745efc8e1a256f22aa5bf24a14799a2c2f83ef Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 19 Oct 2017 16:55:24 -0700 Subject: [PATCH 022/187] one global pickmanager --- interface/src/Application.cpp | 119 +++++----- interface/src/Application.h | 6 +- interface/src/raypick/LaserPointer.cpp | 16 +- .../LaserPointerScriptingInterface.cpp | 1 - .../raypick/LaserPointerScriptingInterface.h | 1 - interface/src/raypick/RayPickManager.cpp | 24 -- interface/src/raypick/RayPickManager.h | 22 -- .../src/raypick/RayPickScriptingInterface.cpp | 25 ++- libraries/pointers/src/pointers/Pick.cpp | 72 +++++- libraries/pointers/src/pointers/Pick.h | 102 +-------- .../src/pointers/PickCacheOptimizer.h | 127 +++++++++++ .../pointers/src/pointers/PickManager.cpp | 94 ++++++++ libraries/pointers/src/pointers/PickManager.h | 212 ++---------------- libraries/shared/src/RegisteredMetaTypes.h | 12 +- 14 files changed, 417 insertions(+), 416 deletions(-) delete mode 100644 interface/src/raypick/RayPickManager.cpp delete mode 100644 interface/src/raypick/RayPickManager.h create mode 100644 libraries/pointers/src/pointers/PickCacheOptimizer.h create mode 100644 libraries/pointers/src/pointers/PickManager.cpp diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 49b150db79..a727c58f86 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -195,6 +195,7 @@ #include #include +#include #include @@ -750,8 +751,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo _notifiedPacketVersionMismatchThisDomain(false), _maxOctreePPS(maxOctreePacketsPerSecond.get()), _lastFaceTrackerUpdate(0), - _snapshotSound(nullptr) -{ + _snapshotSound(nullptr) { auto steamClient = PluginManager::getInstance()->getSteamClientPlugin(); setProperty(hifi::properties::STEAM, (steamClient && steamClient->isRunning())); setProperty(hifi::properties::CRASHED, _previousSessionCrashed); @@ -795,7 +795,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo installNativeEventFilter(&MyNativeEventFilter::getInstance()); #endif - + _logger = new FileLogger(this); qInstallMessageHandler(messageHandler); @@ -850,13 +850,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo auto audioIO = DependencyManager::get(); - audioIO->setPositionGetter([]{ + audioIO->setPositionGetter([] { auto avatarManager = DependencyManager::get(); auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; return myAvatar ? myAvatar->getPositionForAudio() : Vectors::ZERO; }); - audioIO->setOrientationGetter([]{ + audioIO->setOrientationGetter([] { auto avatarManager = DependencyManager::get(); auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; @@ -867,7 +867,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo audioIO->handleRecordedAudioInput(frame->data); }); - connect(audioIO.data(), &AudioClient::inputReceived, [](const QByteArray& audio){ + connect(audioIO.data(), &AudioClient::inputReceived, [](const QByteArray& audio) { static auto recorder = DependencyManager::get(); if (recorder->isRecording()) { static const recording::FrameType AUDIO_FRAME_TYPE = recording::Frame::registerFrameType(AudioConstants::getAudioFrameName()); @@ -956,14 +956,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo auto addressManager = DependencyManager::get(); // use our MyAvatar position and quat for address manager path - addressManager->setPositionGetter([this]{ return getMyAvatar()->getPosition(); }); - addressManager->setOrientationGetter([this]{ return getMyAvatar()->getOrientation(); }); + addressManager->setPositionGetter([this] { return getMyAvatar()->getPosition(); }); + addressManager->setOrientationGetter([this] { return getMyAvatar()->getOrientation(); }); connect(addressManager.data(), &AddressManager::hostChanged, this, &Application::updateWindowTitle); connect(this, &QCoreApplication::aboutToQuit, addressManager.data(), &AddressManager::storeCurrentAddress); connect(this, &Application::activeDisplayPluginChanged, this, &Application::updateThreadPoolCount); - connect(this, &Application::activeDisplayPluginChanged, this, [](){ + connect(this, &Application::activeDisplayPluginChanged, this, []() { qApp->setProperty(hifi::properties::HMD, qApp->isHMDMode()); }); connect(this, &Application::activeDisplayPluginChanged, this, &Application::updateSystemTabletMode); @@ -973,7 +973,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo DependencyManager::get().data(), &AddressManager::storeCurrentAddress); auto scriptEngines = DependencyManager::get().data(); - scriptEngines->registerScriptInitializer([this](ScriptEnginePointer engine){ + scriptEngines->registerScriptInitializer([this](ScriptEnginePointer engine) { registerScriptEngineWithApplicationServices(engine); }); @@ -989,7 +989,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo }, Qt::QueuedConnection); connect(scriptEngines, &ScriptEngines::scriptLoadError, - scriptEngines, [](const QString& filename, const QString& error){ + scriptEngines, [](const QString& filename, const QString& error) { OffscreenUi::asyncWarning(nullptr, "Error Loading Script", filename + " failed to load."); }, Qt::QueuedConnection); @@ -1101,7 +1101,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } // add firstRun flag from settings to launch event - Setting::Handle firstRun { Settings::firstRun, true }; + Setting::Handle firstRun{ Settings::firstRun, true }; // once the settings have been loaded, check if we need to flip the default for UserActivityLogger auto& userActivityLogger = UserActivityLogger::getInstance(); @@ -1202,42 +1202,42 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo static int lastKey = Qt::Key_unknown; bool navAxis = false; switch (actionEnum) { - case Action::UI_NAV_VERTICAL: - navAxis = true; - if (state > 0.0f) { - key = Qt::Key_Up; - } else if (state < 0.0f) { - key = Qt::Key_Down; - } - break; + case Action::UI_NAV_VERTICAL: + navAxis = true; + if (state > 0.0f) { + key = Qt::Key_Up; + } else if (state < 0.0f) { + key = Qt::Key_Down; + } + break; - case Action::UI_NAV_LATERAL: - navAxis = true; - if (state > 0.0f) { - key = Qt::Key_Right; - } else if (state < 0.0f) { - key = Qt::Key_Left; - } - break; + case Action::UI_NAV_LATERAL: + navAxis = true; + if (state > 0.0f) { + key = Qt::Key_Right; + } else if (state < 0.0f) { + key = Qt::Key_Left; + } + break; - case Action::UI_NAV_GROUP: - navAxis = true; - if (state > 0.0f) { - key = Qt::Key_Tab; - } else if (state < 0.0f) { - key = Qt::Key_Backtab; - } - break; + case Action::UI_NAV_GROUP: + navAxis = true; + if (state > 0.0f) { + key = Qt::Key_Tab; + } else if (state < 0.0f) { + key = Qt::Key_Backtab; + } + break; - case Action::UI_NAV_BACK: - key = Qt::Key_Escape; - break; + case Action::UI_NAV_BACK: + key = Qt::Key_Escape; + break; - case Action::UI_NAV_SELECT: - key = Qt::Key_Return; - break; - default: - break; + case Action::UI_NAV_SELECT: + key = Qt::Key_Return; + break; + default: + break; } auto window = tabletScriptingInterface->getTabletWindow(); @@ -1376,8 +1376,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo QTimer* settingsTimer = new QTimer(); - moveToNewNamedThread(settingsTimer, "Settings Thread", [this, settingsTimer]{ - connect(qApp, &Application::beforeAboutToQuit, [this, settingsTimer]{ + moveToNewNamedThread(settingsTimer, "Settings Thread", [this, settingsTimer] { + connect(qApp, &Application::beforeAboutToQuit, [this, settingsTimer] { // Disconnect the signal from the save settings QObject::disconnect(settingsTimer, &QTimer::timeout, this, &Application::saveSettings); // Stop the settings timer @@ -1439,7 +1439,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Now that menu is initialized we can sync myAvatar with it's state. myAvatar->updateMotionBehaviorFromMenu(); -// FIXME spacemouse code still needs cleanup + // FIXME spacemouse code still needs cleanup #if 0 // the 3Dconnexion device wants to be initialized after a window is displayed. SpacemouseManager::getInstance().init(); @@ -1448,7 +1448,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // If the user clicks an an entity, we will check that it's an unlocked web entity, and if so, set the focus to it auto entityScriptingInterface = DependencyManager::get(); connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickDownOnEntity, - [this](const EntityItemID& entityItemID, const PointerEvent& event) { + [this](const EntityItemID& entityItemID, const PointerEvent& event) { if (getEntities()->wantsKeyboardFocus(entityItemID)) { setKeyboardFocusOverlay(UNKNOWN_OVERLAY_ID); setKeyboardFocusEntity(entityItemID); @@ -1663,8 +1663,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo totalServerOctreeElements += i->second.getTotalElements(); } - properties["local_octree_elements"] = (qint64) OctreeElement::getInternalNodeCount(); - properties["server_octree_elements"] = (qint64) totalServerOctreeElements; + properties["local_octree_elements"] = (qint64)OctreeElement::getInternalNodeCount(); + properties["server_octree_elements"] = (qint64)totalServerOctreeElements; properties["active_display_plugin"] = getActiveDisplayPlugin()->getName(); properties["using_hmd"] = isHMDMode(); @@ -1685,7 +1685,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo if (_autoSwitchDisplayModeSupportedHMDPlugin) { if (getActiveDisplayPlugin() != _autoSwitchDisplayModeSupportedHMDPlugin && !_autoSwitchDisplayModeSupportedHMDPlugin->isSessionActive()) { - startHMDStandBySession(); + startHMDStandBySession(); } // Poll periodically to check whether the user has worn HMD or not. Switch Display mode accordingly. // If the user wears HMD then switch to VR mode. If the user removes HMD then switch to Desktop mode. @@ -1729,7 +1729,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(checkNearbyAvatarsTimer, &QTimer::timeout, this, [this]() { auto avatarManager = DependencyManager::get(); int nearbyAvatars = avatarManager->numberOfAvatarsInRange(avatarManager->getMyAvatar()->getPosition(), - NEARBY_AVATAR_RADIUS_METERS) - 1; + NEARBY_AVATAR_RADIUS_METERS) - 1; if (nearbyAvatars != lastCountOfNearbyAvatars) { lastCountOfNearbyAvatars = nearbyAvatars; UserActivityLogger::getInstance().logAction("nearby_avatars", { { "count", nearbyAvatars } }); @@ -1817,14 +1817,15 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(&_myCamera, &Camera::modeUpdated, this, &Application::cameraModeChanged); + _pickManager.setShouldPickHUDOperator([&]() { return DependencyManager::get()->isHMDMode(); }); + // Setup the mouse ray pick and related operators - DependencyManager::get()->setMouseRayPickID(_rayPickManager.createRayPick( - PickFilter(RayPickScriptingInterface::PICK_ENTITIES() | RayPickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), - 0.0f, true)); + DependencyManager::get()->setMouseRayPickID(_pickManager.addPick(RAY, std::make_shared( + PickFilter(RayPickScriptingInterface::PICK_ENTITIES() | RayPickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true))); DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { RayToEntityIntersectionResult entityResult; entityResult.intersects = false; - QVariantMap result = _rayPickManager.getPrevPickResult(rayPickID); + QVariantMap result = _pickManager.getPrevPickResult(rayPickID); if (result["type"].isValid()) { entityResult.intersects = result["type"] != RayPickScriptingInterface::INTERSECTED_NONE(); if (entityResult.intersects) { @@ -1838,7 +1839,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo return entityResult; }); DependencyManager::get()->setSetPrecisionPickingOperator([&](QUuid rayPickID, bool value) { - _rayPickManager.setPrecisionPicking(rayPickID, value); + _pickManager.setPrecisionPicking(rayPickID, value); }); qCDebug(interfaceapp) << "Metaverse session ID is" << uuidStringWithoutCurlyBraces(accountManager->getSessionID()); @@ -4910,8 +4911,8 @@ void Application::update(float deltaTime) { // TODO: break these out into distinct perfTimers when they prove interesting { - PROFILE_RANGE(app, "RayPickManager"); - _rayPickManager.update(); + PROFILE_RANGE(app, "PickManager"); + _pickManager.update(); } { diff --git a/interface/src/Application.h b/interface/src/Application.h index 772646f379..a70aaf93c7 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -70,7 +70,7 @@ #include "ui/overlays/Overlays.h" #include "UndoStackScriptingInterface.h" -#include "raypick/RayPickManager.h" +#include #include "raypick/LaserPointerManager.h" #include @@ -299,7 +299,7 @@ public: bool getSaveAvatarOverrideUrl() { return _saveAvatarOverrideUrl; } LaserPointerManager& getLaserPointerManager() { return _laserPointerManager; } - RayPickManager& getRayPickManager() { return _rayPickManager; } + PickManager& getPickManager() { return _pickManager; } signals: void svoImportRequested(const QString& url); @@ -713,7 +713,7 @@ private: bool _saveAvatarOverrideUrl { false }; QObject* _renderEventHandler{ nullptr }; - RayPickManager _rayPickManager; + PickManager _pickManager; LaserPointerManager _laserPointerManager; friend class RenderEventHandler; diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 2f3fc13706..0a8506ee28 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -38,7 +38,7 @@ LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& rende } LaserPointer::~LaserPointer() { - qApp->getRayPickManager().removePick(_rayPickUID); + qApp->getPickManager().removePick(_rayPickUID); for (auto& renderState : _renderStates) { renderState.second.deleteOverlays(); @@ -49,14 +49,14 @@ LaserPointer::~LaserPointer() { } void LaserPointer::enable() { - qApp->getRayPickManager().enablePick(_rayPickUID); + qApp->getPickManager().enablePick(_rayPickUID); withWriteLock([&] { _renderingEnabled = true; }); } void LaserPointer::disable() { - qApp->getRayPickManager().disablePick(_rayPickUID); + qApp->getPickManager().disablePick(_rayPickUID); withWriteLock([&] { _renderingEnabled = false; if (!_currentRenderState.empty()) { @@ -101,7 +101,7 @@ void LaserPointer::updateRenderStateOverlay(const OverlayID& id, const QVariant& } const QVariantMap LaserPointer::getPrevRayPickResult() { - return qApp->getRayPickManager().getPrevPickResult(_rayPickUID); + return qApp->getPickManager().getPrevPickResult(_rayPickUID); } void LaserPointer::updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState) { @@ -197,7 +197,7 @@ void LaserPointer::disableRenderState(const RenderState& renderState) { void LaserPointer::update() { // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts withReadLock([&] { - QVariantMap prevRayPickResult = qApp->getRayPickManager().getPrevPickResult(_rayPickUID); + QVariantMap prevRayPickResult = qApp->getPickManager().getPrevPickResult(_rayPickUID); IntersectionType type = IntersectionType(prevRayPickResult["type"].toInt()); PickRay pickRay = PickRay(prevRayPickResult["searchRay"].toMap()); QUuid uid = prevRayPickResult["objectID"].toUuid(); @@ -217,7 +217,7 @@ void LaserPointer::update() { } void LaserPointer::setPrecisionPicking(const bool precisionPicking) { - qApp->getRayPickManager().setPrecisionPicking(_rayPickUID, precisionPicking); + qApp->getPickManager().setPrecisionPicking(_rayPickUID, precisionPicking); } void LaserPointer::setLaserLength(const float laserLength) { @@ -233,11 +233,11 @@ void LaserPointer::setLockEndUUID(QUuid objectID, const bool isOverlay) { } void LaserPointer::setIgnoreItems(const QVector& ignoreItems) const { - qApp->getRayPickManager().setIgnoreItems(_rayPickUID, ignoreItems); + qApp->getPickManager().setIgnoreItems(_rayPickUID, ignoreItems); } void LaserPointer::setIncludeItems(const QVector& includeItems) const { - qApp->getRayPickManager().setIncludeItems(_rayPickUID, includeItems); + qApp->getPickManager().setIncludeItems(_rayPickUID, includeItems); } RenderState::RenderState(const OverlayID& startID, const OverlayID& pathID, const OverlayID& endID) : diff --git a/interface/src/raypick/LaserPointerScriptingInterface.cpp b/interface/src/raypick/LaserPointerScriptingInterface.cpp index 96839160fa..4ff917d8c5 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.cpp +++ b/interface/src/raypick/LaserPointerScriptingInterface.cpp @@ -14,7 +14,6 @@ #include #include -#include void LaserPointerScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) const { qApp->getLaserPointerManager().setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); diff --git a/interface/src/raypick/LaserPointerScriptingInterface.h b/interface/src/raypick/LaserPointerScriptingInterface.h index 1e34016ab5..d51420a112 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.h +++ b/interface/src/raypick/LaserPointerScriptingInterface.h @@ -13,7 +13,6 @@ #include -#include "RegisteredMetaTypes.h" #include "DependencyManager.h" #include "Application.h" diff --git a/interface/src/raypick/RayPickManager.cpp b/interface/src/raypick/RayPickManager.cpp deleted file mode 100644 index 2e62c608d8..0000000000 --- a/interface/src/raypick/RayPickManager.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by Sam Gondelman 7/11/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 -// -#include "RayPickManager.h" - -#include "StaticRayPick.h" -#include "JointRayPick.h" -#include "MouseRayPick.h" - -QUuid RayPickManager::createRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, float maxDistance, bool enabled) { - return addPick(std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled)); -} - -QUuid RayPickManager::createRayPick(const PickFilter& filter, float maxDistance, bool enabled) { - return addPick(std::make_shared(filter, maxDistance, enabled)); -} - -QUuid RayPickManager::createRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, float maxDistance, bool enabled) { - return addPick(std::make_shared(position, direction, filter, maxDistance, enabled)); -} \ No newline at end of file diff --git a/interface/src/raypick/RayPickManager.h b/interface/src/raypick/RayPickManager.h deleted file mode 100644 index 7bc97c8526..0000000000 --- a/interface/src/raypick/RayPickManager.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// Created by Sam Gondelman 7/11/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 -// -#ifndef hifi_RayPickManager_h -#define hifi_RayPickManager_h - -#include -#include "RegisteredMetaTypes.h" - -class RayPickManager : public PickManager { - -public: - QUuid createRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance, const bool enabled); - QUuid createRayPick(const PickFilter& filter, const float maxDistance, const bool enabled); - QUuid createRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance, const bool enabled); -}; - -#endif // hifi_RayPickManager_h \ No newline at end of file diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index 11b6b2dfa3..de67fdde0f 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -15,6 +15,10 @@ #include "GLMHelpers.h" #include "Application.h" +#include "StaticRayPick.h" +#include "JointRayPick.h" +#include "MouseRayPick.h" + QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { QVariantMap propMap = properties.toMap(); @@ -48,9 +52,10 @@ QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { dirOffset = vec3FromVariant(propMap["dirOffset"]); } - return qApp->getRayPickManager().createRayPick(jointName, posOffset, dirOffset, filter, maxDistance, enabled); + return qApp->getPickManager().addPick(RAY, std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled)); + } else { - return qApp->getRayPickManager().createRayPick(filter, maxDistance, enabled); + return qApp->getPickManager().addPick(RAY, std::make_shared(filter, maxDistance, enabled)); } } else if (propMap["position"].isValid()) { glm::vec3 position = vec3FromVariant(propMap["position"]); @@ -60,36 +65,36 @@ QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { direction = vec3FromVariant(propMap["direction"]); } - return qApp->getRayPickManager().createRayPick(position, direction, filter, maxDistance, enabled); + return qApp->getPickManager().addPick(RAY, std::make_shared(position, direction, filter, maxDistance, enabled)); } return QUuid(); } void RayPickScriptingInterface::enableRayPick(const QUuid& uid) { - qApp->getRayPickManager().enablePick(uid); + qApp->getPickManager().enablePick(uid); } void RayPickScriptingInterface::disableRayPick(const QUuid& uid) { - qApp->getRayPickManager().disablePick(uid); + qApp->getPickManager().disablePick(uid); } void RayPickScriptingInterface::removeRayPick(const QUuid& uid) { - qApp->getRayPickManager().removePick(uid); + qApp->getPickManager().removePick(uid); } QVariantMap RayPickScriptingInterface::getPrevRayPickResult(const QUuid& uid) { - return qApp->getRayPickManager().getPrevPickResult(uid); + return qApp->getPickManager().getPrevPickResult(uid); } void RayPickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { - qApp->getRayPickManager().setPrecisionPicking(uid, precisionPicking); + qApp->getPickManager().setPrecisionPicking(uid, precisionPicking); } void RayPickScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) { - qApp->getRayPickManager().setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); + qApp->getPickManager().setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); } void RayPickScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) { - qApp->getRayPickManager().setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); + qApp->getPickManager().setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } diff --git a/libraries/pointers/src/pointers/Pick.cpp b/libraries/pointers/src/pointers/Pick.cpp index 030d2ef4b7..4e48bc906b 100644 --- a/libraries/pointers/src/pointers/Pick.cpp +++ b/libraries/pointers/src/pointers/Pick.cpp @@ -7,4 +7,74 @@ // #include "Pick.h" -const PickFilter PickFilter::NOTHING; \ No newline at end of file +const PickFilter PickFilter::NOTHING; + +PickQuery::PickQuery(const PickFilter& filter, const float maxDistance, const bool enabled) : + _filter(filter), + _maxDistance(maxDistance), + _enabled(enabled) { +} + +void PickQuery::enable(bool enabled) { + withWriteLock([&] { + _enabled = enabled; + }); +} + +PickFilter PickQuery::getFilter() const { + return resultWithReadLock([&] { + return _filter; + }); +} + +float PickQuery::getMaxDistance() const { + return _maxDistance; +} + +bool PickQuery::isEnabled() const { + return resultWithReadLock([&] { + return _enabled; + }); +} + +void PickQuery::setPrecisionPicking(bool precisionPicking) { + withWriteLock([&] { + _filter.setFlag(PickFilter::PICK_COARSE, !precisionPicking); + }); +} + +void PickQuery::setPickResult(const PickResultPointer& pickResult) { + withWriteLock([&] { + _prevResult = pickResult; + }); +} + +QVector PickQuery::getIgnoreItems() const { + return resultWithReadLock>([&] { + return _ignoreItems; + }); +} + +QVector PickQuery::getIncludeItems() const { + return resultWithReadLock>([&] { + return _includeItems; + }); +} + +PickResultPointer PickQuery::getPrevPickResult() const { + return resultWithReadLock([&] { + return _prevResult; + }); +} + +void PickQuery::setIgnoreItems(const QVector& ignoreItems) { + withWriteLock([&] { + _ignoreItems = ignoreItems; + }); +} + +void PickQuery::setIncludeItems(const QVector& includeItems) { + withWriteLock([&] { + _includeItems = includeItems; + }); +} \ No newline at end of file diff --git a/libraries/pointers/src/pointers/Pick.h b/libraries/pointers/src/pointers/Pick.h index 6e11506dd9..6ac0d6781e 100644 --- a/libraries/pointers/src/pointers/Pick.h +++ b/libraries/pointers/src/pointers/Pick.h @@ -129,18 +129,9 @@ public: using PickResultPointer = std::shared_ptr; -template -class Pick : protected ReadWriteLockable { - +class PickQuery : protected ReadWriteLockable { public: - Pick(const PickFilter& filter, const float maxDistance, const bool enabled); - - virtual const T getMathematicalPick() const = 0; - virtual PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const = 0; - virtual PickResultPointer getEntityIntersection(const T& pick) = 0; - virtual PickResultPointer getOverlayIntersection(const T& pick) = 0; - virtual PickResultPointer getAvatarIntersection(const T& pick) = 0; - virtual PickResultPointer getHUDIntersection(const T& pick) = 0; + PickQuery(const PickFilter& filter, const float maxDistance, const bool enabled); void enable(bool enabled = true); void disable() { enable(false); } @@ -193,85 +184,16 @@ private: }; template -Pick::Pick(const PickFilter& filter, const float maxDistance, const bool enabled) : - _filter(filter), - _maxDistance(maxDistance), - _enabled(enabled) { -} +class Pick : public PickQuery { +public: + Pick(const PickFilter& filter, const float maxDistance, const bool enabled) : PickQuery(filter, maxDistance, enabled) {} -template -void Pick::enable(bool enabled) { - withWriteLock([&] { - _enabled = enabled; - }); -} - -template -PickFilter Pick::getFilter() const { - return resultWithReadLock([&] { - return _filter; - }); -} - -template -float Pick::getMaxDistance() const { - return _maxDistance; -} - -template -bool Pick::isEnabled() const { - return resultWithReadLock([&] { - return _enabled; - }); -} - -template -void Pick::setPrecisionPicking(bool precisionPicking) { - withWriteLock([&] { - _filter.setFlag(PickFilter::PICK_COARSE, !precisionPicking); - }); -} - -template -void Pick::setPickResult(const PickResultPointer& pickResult) { - withWriteLock([&] { - _prevResult = pickResult; - }); -} - -template -QVector Pick::getIgnoreItems() const { - return resultWithReadLock>([&] { - return _ignoreItems; - }); -} - -template -QVector Pick::getIncludeItems() const { - return resultWithReadLock>([&] { - return _includeItems; - }); -} - -template -PickResultPointer Pick::getPrevPickResult() const { - return resultWithReadLock([&] { - return _prevResult; - }); -} - -template -void Pick::setIgnoreItems(const QVector& ignoreItems) { - withWriteLock([&] { - _ignoreItems = ignoreItems; - }); -} - -template -void Pick::setIncludeItems(const QVector& includeItems) { - withWriteLock([&] { - _includeItems = includeItems; - }); -} + virtual const T getMathematicalPick() const = 0; + virtual PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const = 0; + virtual PickResultPointer getEntityIntersection(const T& pick) = 0; + virtual PickResultPointer getOverlayIntersection(const T& pick) = 0; + virtual PickResultPointer getAvatarIntersection(const T& pick) = 0; + virtual PickResultPointer getHUDIntersection(const T& pick) = 0; +}; #endif // hifi_Pick_h diff --git a/libraries/pointers/src/pointers/PickCacheOptimizer.h b/libraries/pointers/src/pointers/PickCacheOptimizer.h new file mode 100644 index 0000000000..c4bf96ab51 --- /dev/null +++ b/libraries/pointers/src/pointers/PickCacheOptimizer.h @@ -0,0 +1,127 @@ +// +// Created by Sam Gondelman 10/16/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 +// +#ifndef hifi_PickCacheOptimizer_h +#define hifi_PickCacheOptimizer_h + +#include + +#include "Pick.h" + +typedef struct PickCacheKey { + PickFilter::Flags mask; + QVector include; + QVector ignore; + + bool operator==(const PickCacheKey& other) const { + return (mask == other.mask && include == other.include && ignore == other.ignore); + } +} PickCacheKey; + +namespace std { + template <> + struct hash { + size_t operator()(const PickCacheKey& k) const { + return ((hash()(k.mask) ^ (qHash(k.include) << 1)) >> 1) ^ (qHash(k.ignore) << 1); + } + }; +} + +// T is a mathematical representation of a Pick (a MathPick) +// For example: RayPicks use T = PickRay +template +class PickCacheOptimizer { + +public: + void update(QHash>& picks, bool shouldPickHUD); + +protected: + typedef std::unordered_map> PickCache; + + // Returns true if this pick exists in the cache, and if it does, update res if the cached result is closer + bool checkAndCompareCachedResults(T& pick, PickCache& cache, PickResultPointer& res, const PickCacheKey& key); + void cacheResult(const bool intersects, const PickResultPointer& resTemp, const PickCacheKey& key, PickResultPointer& res, T& mathPick, PickCache& cache, const std::shared_ptr> pick); +}; + +template +bool PickCacheOptimizer::checkAndCompareCachedResults(T& pick, PickCache& cache, PickResultPointer& res, const PickCacheKey& key) { + if (cache.find(pick) != cache.end() && cache[pick].find(key) != cache[pick].end()) { + res = res->compareAndProcessNewResult(cache[pick][key]); + return true; + } + return false; +} + +template +void PickCacheOptimizer::cacheResult(const bool intersects, const PickResultPointer& resTemp, const PickCacheKey& key, PickResultPointer& res, T& mathPick, PickCache& cache, const std::shared_ptr> pick) { + if (intersects) { + cache[mathPick][key] = resTemp; + res = res->compareAndProcessNewResult(resTemp); + } else { + cache[mathPick][key] = pick->getDefaultResult(mathPick.toVariantMap()); + } +} + +template +void PickCacheOptimizer::update(QHash>& picks, bool shouldPickHUD) { + PickCache results; + for (const auto& uid : picks.keys()) { + std::shared_ptr> pick = std::static_pointer_cast>(picks[uid]); + if (!pick->isEnabled() || pick->getFilter().doesPickNothing() || pick->getMaxDistance() < 0.0f) { + continue; + } + + T mathematicalPick = pick->getMathematicalPick(); + + if (!mathematicalPick) { + continue; + } + + PickResultPointer res = pick->getDefaultResult(mathematicalPick.toVariantMap()); + + if (pick->getFilter().doesPickEntities()) { + PickCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { + PickResultPointer entityRes = pick->getEntityIntersection(mathematicalPick); + cacheResult(entityRes->doesIntersect(), entityRes, entityKey, res, mathematicalPick, results, pick); + } + } + + if (pick->getFilter().doesPickOverlays()) { + PickCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, overlayKey)) { + PickResultPointer overlayRes = pick->getOverlayIntersection(mathematicalPick); + cacheResult(overlayRes->doesIntersect(), overlayRes, overlayKey, res, mathematicalPick, results, pick); + } + } + + if (pick->getFilter().doesPickAvatars()) { + PickCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, avatarKey)) { + PickResultPointer avatarRes = pick->getAvatarIntersection(mathematicalPick); + cacheResult(avatarRes->doesIntersect(), avatarRes, avatarKey, res, mathematicalPick, results, pick); + } + } + + // Can't intersect with HUD in desktop mode + if (pick->getFilter().doesPickHUD() && shouldPickHUD) { + PickCacheKey hudKey = { pick->getFilter().getHUDFlags(), QVector(), QVector() }; + if (!checkAndCompareCachedResults(mathematicalPick, results, res, hudKey)) { + PickResultPointer hudRes = pick->getHUDIntersection(mathematicalPick); + cacheResult(true, hudRes, hudKey, res, mathematicalPick, results, pick); + } + } + + if (pick->getMaxDistance() == 0.0f || (pick->getMaxDistance() > 0.0f && res->checkOrFilterAgainstMaxDistance(pick->getMaxDistance()))) { + pick->setPickResult(res); + } else { + pick->setPickResult(pick->getDefaultResult(mathematicalPick.toVariantMap())); + } + } +} + +#endif // hifi_PickCacheOptimizer_h \ No newline at end of file diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp new file mode 100644 index 0000000000..d6c2f44212 --- /dev/null +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -0,0 +1,94 @@ +// +// Created by Sam Gondelman 10/19/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 +// +#include "PickManager.h" + +PickManager::PickManager() { + setShouldPickHUDOperator([]() { return false; }); +} + +QUuid PickManager::addPick(PickType type, const std::shared_ptr pick) { + QUuid id = QUuid::createUuid(); + withWriteLock([&] { + _picks[type][id] = pick; + _typeMap[id] = type; + }); + return id; +} + +std::shared_ptr PickManager::findPick(const QUuid& uid) const { + return resultWithReadLock>([&] { + auto type = _typeMap.find(uid); + if (type != _typeMap.end()) { + return _picks[type.value()][uid]; + } + return std::shared_ptr(); + }); +} + +void PickManager::removePick(const QUuid& uid) { + withWriteLock([&] { + auto type = _typeMap.find(uid); + if (type != _typeMap.end()) { + _picks[type.value()].remove(uid); + _typeMap.remove(uid); + } + }); +} + +QVariantMap PickManager::getPrevPickResult(const QUuid& uid) const { + auto pick = findPick(uid); + if (pick && pick->getPrevPickResult()) { + return pick->getPrevPickResult()->toVariantMap(); + } + return QVariantMap(); +} + +void PickManager::enablePick(const QUuid& uid) const { + auto pick = findPick(uid); + if (pick) { + pick->enable(); + } +} + +void PickManager::disablePick(const QUuid& uid) const { + auto pick = findPick(uid); + if (pick) { + pick->disable(); + } +} + +void PickManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { + auto pick = findPick(uid); + if (pick) { + pick->setPrecisionPicking(precisionPicking); + } +} + +void PickManager::setIgnoreItems(const QUuid& uid, const QVector& ignore) const { + auto pick = findPick(uid); + if (pick) { + pick->setIgnoreItems(ignore); + } +} + +void PickManager::setIncludeItems(const QUuid& uid, const QVector& include) const { + auto pick = findPick(uid); + if (pick) { + pick->setIncludeItems(include); + } +} + +void PickManager::update() { + QHash>> cachedPicks; + withReadLock([&] { + cachedPicks = _picks; + }); + + bool shouldPickHUD = _shouldPickHUDOperator(); + _rayPickCacheOptimizer.update(cachedPicks[RAY], shouldPickHUD); +} \ No newline at end of file diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index 5441ff9b72..9b2f19a63a 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -10,220 +10,44 @@ #include -#include "scripting/HMDScriptingInterface.h" +#include "RegisteredMetaTypes.h" #include "Pick.h" +#include "PickCacheOptimizer.h" -typedef struct PickCacheKey { - PickFilter::Flags mask; - QVector include; - QVector ignore; +enum PickType { + RAY = 0, + STYLUS +}; - bool operator==(const PickCacheKey& other) const { - return (mask == other.mask && include == other.include && ignore == other.ignore); - } -} PickCacheKey; - -namespace std { - template <> - struct hash { - size_t operator()(const PickCacheKey& k) const { - return ((hash()(k.mask) ^ (qHash(k.include) << 1)) >> 1) ^ (qHash(k.ignore) << 1); - } - }; -} - -// T is a mathematical representation of a Pick -// For example: RayPicks use T = PickRay -// T needs have the following functions defined: -// - operator bool() const -// - bool operator==(const T& other) const -// - QVariantMap toVariantMap() const -// - an std::hash size_t operator()(const T& a) const -template class PickManager : protected ReadWriteLockable { public: - virtual void update(); + PickManager(); - QVariantMap getPrevPickResult(const QUuid& uid) const; + void update(); - QUuid addPick(const std::shared_ptr> pick); + QUuid addPick(PickType type, const std::shared_ptr pick); void removePick(const QUuid& uid); void enablePick(const QUuid& uid) const; void disablePick(const QUuid& uid) const; + QVariantMap getPrevPickResult(const QUuid& uid) const; + void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; void setIgnoreItems(const QUuid& uid, const QVector& ignore) const; void setIncludeItems(const QUuid& uid, const QVector& include) const; + void setShouldPickHUDOperator(std::function shouldPickHUDOperator) { _shouldPickHUDOperator = shouldPickHUDOperator; } + protected: - std::shared_ptr> findPick(const QUuid& uid) const; - QHash>> _picks; + std::function _shouldPickHUDOperator; - typedef std::unordered_map> PickCache; + std::shared_ptr findPick(const QUuid& uid) const; + QHash>> _picks; + QHash _typeMap; - // Returns true if this pick exists in the cache, and if it does, update res if the cached result is closer - bool checkAndCompareCachedResults(T& pick, PickCache& cache, PickResultPointer& res, const PickCacheKey& key); - void cacheResult(const bool intersects, const PickResultPointer& resTemp, const PickCacheKey& key, PickResultPointer& res, T& mathPick, PickCache& cache, const std::shared_ptr> pick); + PickCacheOptimizer _rayPickCacheOptimizer; }; -template -std::shared_ptr> PickManager::findPick(const QUuid& uid) const { - return resultWithReadLock>>([&] { - if (_picks.contains(uid)) { - return _picks[uid]; - } - return std::shared_ptr>(); - }); -} - -template -bool PickManager::checkAndCompareCachedResults(T& pick, PickCache& cache, PickResultPointer& res, const PickCacheKey& key) { - if (cache.find(pick) != cache.end() && cache[pick].find(key) != cache[pick].end()) { - res = res->compareAndProcessNewResult(cache[pick][key]); - return true; - } - return false; -} - -template -void PickManager::cacheResult(const bool intersects, const PickResultPointer& resTemp, const PickCacheKey& key, PickResultPointer& res, T& mathPick, PickCache& cache, const std::shared_ptr> pick) { - if (intersects) { - cache[mathPick][key] = resTemp; - res = res->compareAndProcessNewResult(resTemp); - } else { - cache[mathPick][key] = pick->getDefaultResult(mathPick.toVariantMap()); - } -} - -template -void PickManager::update() { - PickCache results; - QHash>> cachedPicks; - withReadLock([&] { - cachedPicks = _picks; - }); - - for (const auto& uid : cachedPicks.keys()) { - std::shared_ptr> pick = cachedPicks[uid]; - if (!pick->isEnabled() || pick->getFilter().doesPickNothing() || pick->getMaxDistance() < 0.0f) { - continue; - } - - T mathematicalPick = pick->getMathematicalPick(); - - if (!mathematicalPick) { - continue; - } - - PickResultPointer res = pick->getDefaultResult(mathematicalPick.toVariantMap()); - - if (pick->getFilter().doesPickEntities()) { - PickCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; - if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { - PickResultPointer entityRes = pick->getEntityIntersection(mathematicalPick); - cacheResult(entityRes->doesIntersect(), entityRes, entityKey, res, mathematicalPick, results, pick); - } - } - - if (pick->getFilter().doesPickOverlays()) { - PickCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; - if (!checkAndCompareCachedResults(mathematicalPick, results, res, overlayKey)) { - PickResultPointer overlayRes = pick->getOverlayIntersection(mathematicalPick); - cacheResult(overlayRes->doesIntersect(), overlayRes, overlayKey, res, mathematicalPick, results, pick); - } - } - - if (pick->getFilter().doesPickAvatars()) { - PickCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; - if (!checkAndCompareCachedResults(mathematicalPick, results, res, avatarKey)) { - PickResultPointer avatarRes = pick->getAvatarIntersection(mathematicalPick); - cacheResult(avatarRes->doesIntersect(), avatarRes, avatarKey, res, mathematicalPick, results, pick); - } - } - - // Can't intersect with HUD in desktop mode - if (pick->getFilter().doesPickHUD() && DependencyManager::get()->isHMDMode()) { - PickCacheKey hudKey = { pick->getFilter().getHUDFlags(), QVector(), QVector() }; - if (!checkAndCompareCachedResults(mathematicalPick, results, res, hudKey)) { - PickResultPointer hudRes = pick->getHUDIntersection(mathematicalPick); - cacheResult(true, hudRes, hudKey, res, mathematicalPick, results, pick); - } - } - - if (pick->getMaxDistance() == 0.0f || (pick->getMaxDistance() > 0.0f && res->checkOrFilterAgainstMaxDistance(pick->getMaxDistance()))) { - pick->setPickResult(res); - } else { - pick->setPickResult(pick->getDefaultResult(mathematicalPick.toVariantMap())); - } - } -} - -template -QVariantMap PickManager::getPrevPickResult(const QUuid& uid) const { - auto pick = findPick(uid); - if (pick && pick->getPrevPickResult()) { - return pick->getPrevPickResult()->toVariantMap(); - } - return QVariantMap(); -} - -template -QUuid PickManager::addPick(const std::shared_ptr> pick) { - QUuid id = QUuid::createUuid(); - withWriteLock([&] { - _picks[id] = pick; - }); - return id; -} - -template -void PickManager::removePick(const QUuid& uid) { - withWriteLock([&] { - _picks.remove(uid); - }); -} - -template -void PickManager::enablePick(const QUuid& uid) const { - auto pick = findPick(uid); - if (pick) { - pick->enable(); - } -} - -template -void PickManager::disablePick(const QUuid& uid) const { - auto pick = findPick(uid); - if (pick) { - pick->disable(); - } -} - -template -void PickManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { - auto pick = findPick(uid); - if (pick) { - pick->setPrecisionPicking(precisionPicking); - } -} - -template -void PickManager::setIgnoreItems(const QUuid& uid, const QVector& ignore) const { - auto pick = findPick(uid); - if (pick) { - pick->setIgnoreItems(ignore); - } -} - -template -void PickManager::setIncludeItems(const QUuid& uid, const QVector& include) const { - auto pick = findPick(uid); - if (pick) { - pick->setIncludeItems(include); - } -} - - #endif // hifi_PickManager_h \ No newline at end of file diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 3d423d5205..a716c9231e 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -125,7 +125,13 @@ QVector qVectorQUuidFromScriptValue(const QScriptValue& array); QScriptValue aaCubeToScriptValue(QScriptEngine* engine, const AACube& aaCube); void aaCubeFromScriptValue(const QScriptValue &object, AACube& aaCube); -class PickRay { +// MathPicks also have to overide operator== for their type +class MathPick { + virtual operator bool() const = 0; + virtual QVariantMap toVariantMap() const = 0; +}; + +class PickRay : public MathPick { public: PickRay() : origin(NAN), direction(NAN) { } PickRay(const QVariantMap& pickVariant) : origin(vec3FromVariant(pickVariant["origin"])), direction(vec3FromVariant(pickVariant["direction"])) {} @@ -133,13 +139,13 @@ public: glm::vec3 origin; glm::vec3 direction; - operator bool() const { + operator bool() const override { return !(glm::any(glm::isnan(origin)) || glm::any(glm::isnan(direction))); } bool operator==(const PickRay& other) const { return (origin == other.origin && direction == other.direction); } - QVariantMap toVariantMap() const { + QVariantMap toVariantMap() const override { QVariantMap pickRay; pickRay["origin"] = vec3toVariant(origin); pickRay["direction"] = vec3toVariant(direction); From 83c14bba5ca412c88468a5bcf8ba3fdcd04f17a3 Mon Sep 17 00:00:00 2001 From: vladest Date: Fri, 20 Oct 2017 11:55:41 +0200 Subject: [PATCH 023/187] Fix popups misbehavior, wrong links with double http etc --- interface/resources/qml/hifi/WebBrowser.qml | 35 +++++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index 1b49701bdf..6a1d61de11 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -1,3 +1,4 @@ + // // WebBrowser.qml // @@ -45,7 +46,7 @@ Rectangle { onSuggestions: { if (suggestions.length > 0) { suggestionsList = [] - suggestionsList.push(addressBar.editText) //do not overwrite edit text + suggestionsList.push(addressBarInput.text) //do not overwrite edit text for(var i = 0; i < suggestions.length; i++) { suggestionsList.push(suggestions[i]) } @@ -63,7 +64,7 @@ Rectangle { repeat: false onTriggered: { if (addressBar.editText !== "") { - searchEngine.requestSuggestions(addressBar.editText) + searchEngine.requestSuggestions(addressBarInput.text) } } } @@ -72,12 +73,16 @@ Rectangle { function goTo(url) { //must be valid attempt to open an site with dot - if (url.indexOf("http") <= 0 && url.indexOf(".") > 0) { - url = "http://" + url; + + if (url.indexOf(".") > 0) { + if (url.indexOf("http") < 0) { + url = "http://" + url; + } } else { url = searchEngine.searchUrl(url) } + addressBar.model = [] webEngineView.url = url suggestionRequestTimer.stop() addressBar.popup.close() @@ -151,12 +156,12 @@ Rectangle { } Keys.onDeletePressed: { - editText = "" + addressBarInput.text = "" } Keys.onPressed: { if (event.key === Qt.Key_Return) { - goTo(editText) + goTo(addressBarInput.text) event.accepted = true; } } @@ -192,19 +197,24 @@ Rectangle { Keys.onPressed: { if (event.key === Qt.Key_Return) { - goTo(editText) + goTo(addressBarInput.text) event.accepted = true; } } onEditTextChanged: { - console.log("edit text", addressBar.editText) - suggestionRequestTimer.restart() + if (addressBar.editText !== "" && addressBar.editText !== webEngineView.url.toString()) { + suggestionRequestTimer.restart(); + } else { + addressBar.model = [] + addressBar.popup.close() + } + } Layout.fillWidth: true editText: webEngineView.url - onAccepted: goTo(editText) + onAccepted: goTo(addressBarInput.text) } HifiControls.WebGlyphButton { @@ -265,6 +275,11 @@ Rectangle { } } + onLinkHovered: { + //TODO: change cursor shape? + console.error("hoveredUrl:", hoveredUrl) + } + // creates a global EventBridge object. WebEngineScript { id: createGlobalEventBridge From 24ce09f91413122d6d92570b4abc75cad44a8223 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 20 Oct 2017 11:19:14 -0700 Subject: [PATCH 024/187] generalized pointer, laserpointermanager -> pointermanager --- interface/src/Application.cpp | 119 ++++++++--------- interface/src/Application.h | 9 -- interface/src/raypick/LaserPointer.cpp | 38 ++---- interface/src/raypick/LaserPointer.h | 33 ++--- interface/src/raypick/LaserPointerManager.cpp | 121 ------------------ interface/src/raypick/LaserPointerManager.h | 47 ------- .../LaserPointerScriptingInterface.cpp | 10 +- .../raypick/LaserPointerScriptingInterface.h | 20 +-- .../src/raypick/RayPickScriptingInterface.cpp | 23 ++-- libraries/pointers/src/pointers/PickManager.h | 4 +- libraries/pointers/src/pointers/Pointer.cpp | 39 ++++++ libraries/pointers/src/pointers/Pointer.h | 46 +++++++ .../pointers/src/pointers/PointerManager.cpp | 113 +++++++++++++++- .../pointers/src/pointers/PointerManager.h | 32 ++++- 14 files changed, 341 insertions(+), 313 deletions(-) delete mode 100644 interface/src/raypick/LaserPointerManager.cpp delete mode 100644 interface/src/raypick/LaserPointerManager.h create mode 100644 libraries/pointers/src/pointers/Pointer.cpp create mode 100644 libraries/pointers/src/pointers/Pointer.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a727c58f86..3476700904 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -193,6 +193,8 @@ #include #include +#include +#include #include #include #include @@ -690,6 +692,8 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); + DependencyManager::set(); + DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); @@ -751,7 +755,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo _notifiedPacketVersionMismatchThisDomain(false), _maxOctreePPS(maxOctreePacketsPerSecond.get()), _lastFaceTrackerUpdate(0), - _snapshotSound(nullptr) { + _snapshotSound(nullptr) +{ auto steamClient = PluginManager::getInstance()->getSteamClientPlugin(); setProperty(hifi::properties::STEAM, (steamClient && steamClient->isRunning())); setProperty(hifi::properties::CRASHED, _previousSessionCrashed); @@ -850,13 +855,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo auto audioIO = DependencyManager::get(); - audioIO->setPositionGetter([] { + audioIO->setPositionGetter([]{ auto avatarManager = DependencyManager::get(); auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; return myAvatar ? myAvatar->getPositionForAudio() : Vectors::ZERO; }); - audioIO->setOrientationGetter([] { + audioIO->setOrientationGetter([]{ auto avatarManager = DependencyManager::get(); auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; @@ -867,7 +872,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo audioIO->handleRecordedAudioInput(frame->data); }); - connect(audioIO.data(), &AudioClient::inputReceived, [](const QByteArray& audio) { + connect(audioIO.data(), &AudioClient::inputReceived, [](const QByteArray& audio){ static auto recorder = DependencyManager::get(); if (recorder->isRecording()) { static const recording::FrameType AUDIO_FRAME_TYPE = recording::Frame::registerFrameType(AudioConstants::getAudioFrameName()); @@ -956,14 +961,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo auto addressManager = DependencyManager::get(); // use our MyAvatar position and quat for address manager path - addressManager->setPositionGetter([this] { return getMyAvatar()->getPosition(); }); - addressManager->setOrientationGetter([this] { return getMyAvatar()->getOrientation(); }); + addressManager->setPositionGetter([this]{ return getMyAvatar()->getPosition(); }); + addressManager->setOrientationGetter([this]{ return getMyAvatar()->getOrientation(); }); connect(addressManager.data(), &AddressManager::hostChanged, this, &Application::updateWindowTitle); connect(this, &QCoreApplication::aboutToQuit, addressManager.data(), &AddressManager::storeCurrentAddress); connect(this, &Application::activeDisplayPluginChanged, this, &Application::updateThreadPoolCount); - connect(this, &Application::activeDisplayPluginChanged, this, []() { + connect(this, &Application::activeDisplayPluginChanged, this, [](){ qApp->setProperty(hifi::properties::HMD, qApp->isHMDMode()); }); connect(this, &Application::activeDisplayPluginChanged, this, &Application::updateSystemTabletMode); @@ -973,7 +978,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo DependencyManager::get().data(), &AddressManager::storeCurrentAddress); auto scriptEngines = DependencyManager::get().data(); - scriptEngines->registerScriptInitializer([this](ScriptEnginePointer engine) { + scriptEngines->registerScriptInitializer([this](ScriptEnginePointer engine){ registerScriptEngineWithApplicationServices(engine); }); @@ -989,7 +994,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo }, Qt::QueuedConnection); connect(scriptEngines, &ScriptEngines::scriptLoadError, - scriptEngines, [](const QString& filename, const QString& error) { + scriptEngines, [](const QString& filename, const QString& error){ OffscreenUi::asyncWarning(nullptr, "Error Loading Script", filename + " failed to load."); }, Qt::QueuedConnection); @@ -1101,7 +1106,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } // add firstRun flag from settings to launch event - Setting::Handle firstRun{ Settings::firstRun, true }; + Setting::Handle firstRun { Settings::firstRun, true }; // once the settings have been loaded, check if we need to flip the default for UserActivityLogger auto& userActivityLogger = UserActivityLogger::getInstance(); @@ -1202,42 +1207,42 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo static int lastKey = Qt::Key_unknown; bool navAxis = false; switch (actionEnum) { - case Action::UI_NAV_VERTICAL: - navAxis = true; - if (state > 0.0f) { - key = Qt::Key_Up; - } else if (state < 0.0f) { - key = Qt::Key_Down; - } - break; + case Action::UI_NAV_VERTICAL: + navAxis = true; + if (state > 0.0f) { + key = Qt::Key_Up; + } else if (state < 0.0f) { + key = Qt::Key_Down; + } + break; - case Action::UI_NAV_LATERAL: - navAxis = true; - if (state > 0.0f) { - key = Qt::Key_Right; - } else if (state < 0.0f) { - key = Qt::Key_Left; - } - break; + case Action::UI_NAV_LATERAL: + navAxis = true; + if (state > 0.0f) { + key = Qt::Key_Right; + } else if (state < 0.0f) { + key = Qt::Key_Left; + } + break; - case Action::UI_NAV_GROUP: - navAxis = true; - if (state > 0.0f) { - key = Qt::Key_Tab; - } else if (state < 0.0f) { - key = Qt::Key_Backtab; - } - break; + case Action::UI_NAV_GROUP: + navAxis = true; + if (state > 0.0f) { + key = Qt::Key_Tab; + } else if (state < 0.0f) { + key = Qt::Key_Backtab; + } + break; - case Action::UI_NAV_BACK: - key = Qt::Key_Escape; - break; + case Action::UI_NAV_BACK: + key = Qt::Key_Escape; + break; - case Action::UI_NAV_SELECT: - key = Qt::Key_Return; - break; - default: - break; + case Action::UI_NAV_SELECT: + key = Qt::Key_Return; + break; + default: + break; } auto window = tabletScriptingInterface->getTabletWindow(); @@ -1376,8 +1381,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo QTimer* settingsTimer = new QTimer(); - moveToNewNamedThread(settingsTimer, "Settings Thread", [this, settingsTimer] { - connect(qApp, &Application::beforeAboutToQuit, [this, settingsTimer] { + moveToNewNamedThread(settingsTimer, "Settings Thread", [this, settingsTimer]{ + connect(qApp, &Application::beforeAboutToQuit, [this, settingsTimer]{ // Disconnect the signal from the save settings QObject::disconnect(settingsTimer, &QTimer::timeout, this, &Application::saveSettings); // Stop the settings timer @@ -1439,7 +1444,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Now that menu is initialized we can sync myAvatar with it's state. myAvatar->updateMotionBehaviorFromMenu(); - // FIXME spacemouse code still needs cleanup +// FIXME spacemouse code still needs cleanup #if 0 // the 3Dconnexion device wants to be initialized after a window is displayed. SpacemouseManager::getInstance().init(); @@ -1448,7 +1453,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // If the user clicks an an entity, we will check that it's an unlocked web entity, and if so, set the focus to it auto entityScriptingInterface = DependencyManager::get(); connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickDownOnEntity, - [this](const EntityItemID& entityItemID, const PointerEvent& event) { + [this](const EntityItemID& entityItemID, const PointerEvent& event) { if (getEntities()->wantsKeyboardFocus(entityItemID)) { setKeyboardFocusOverlay(UNKNOWN_OVERLAY_ID); setKeyboardFocusEntity(entityItemID); @@ -1663,8 +1668,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo totalServerOctreeElements += i->second.getTotalElements(); } - properties["local_octree_elements"] = (qint64)OctreeElement::getInternalNodeCount(); - properties["server_octree_elements"] = (qint64)totalServerOctreeElements; + properties["local_octree_elements"] = (qint64) OctreeElement::getInternalNodeCount(); + properties["server_octree_elements"] = (qint64) totalServerOctreeElements; properties["active_display_plugin"] = getActiveDisplayPlugin()->getName(); properties["using_hmd"] = isHMDMode(); @@ -1685,7 +1690,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo if (_autoSwitchDisplayModeSupportedHMDPlugin) { if (getActiveDisplayPlugin() != _autoSwitchDisplayModeSupportedHMDPlugin && !_autoSwitchDisplayModeSupportedHMDPlugin->isSessionActive()) { - startHMDStandBySession(); + startHMDStandBySession(); } // Poll periodically to check whether the user has worn HMD or not. Switch Display mode accordingly. // If the user wears HMD then switch to VR mode. If the user removes HMD then switch to Desktop mode. @@ -1729,7 +1734,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(checkNearbyAvatarsTimer, &QTimer::timeout, this, [this]() { auto avatarManager = DependencyManager::get(); int nearbyAvatars = avatarManager->numberOfAvatarsInRange(avatarManager->getMyAvatar()->getPosition(), - NEARBY_AVATAR_RADIUS_METERS) - 1; + NEARBY_AVATAR_RADIUS_METERS) - 1; if (nearbyAvatars != lastCountOfNearbyAvatars) { lastCountOfNearbyAvatars = nearbyAvatars; UserActivityLogger::getInstance().logAction("nearby_avatars", { { "count", nearbyAvatars } }); @@ -1817,15 +1822,15 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(&_myCamera, &Camera::modeUpdated, this, &Application::cameraModeChanged); - _pickManager.setShouldPickHUDOperator([&]() { return DependencyManager::get()->isHMDMode(); }); + DependencyManager::get()->setShouldPickHUDOperator([&]() { return DependencyManager::get()->isHMDMode(); }); // Setup the mouse ray pick and related operators - DependencyManager::get()->setMouseRayPickID(_pickManager.addPick(RAY, std::make_shared( + DependencyManager::get()->setMouseRayPickID(DependencyManager::get()->addPick(RAY, std::make_shared( PickFilter(RayPickScriptingInterface::PICK_ENTITIES() | RayPickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true))); DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { RayToEntityIntersectionResult entityResult; entityResult.intersects = false; - QVariantMap result = _pickManager.getPrevPickResult(rayPickID); + QVariantMap result = DependencyManager::get()->getPrevPickResult(rayPickID); if (result["type"].isValid()) { entityResult.intersects = result["type"] != RayPickScriptingInterface::INTERSECTED_NONE(); if (entityResult.intersects) { @@ -1839,7 +1844,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo return entityResult; }); DependencyManager::get()->setSetPrecisionPickingOperator([&](QUuid rayPickID, bool value) { - _pickManager.setPrecisionPicking(rayPickID, value); + DependencyManager::get()->setPrecisionPicking(rayPickID, value); }); qCDebug(interfaceapp) << "Metaverse session ID is" << uuidStringWithoutCurlyBraces(accountManager->getSessionID()); @@ -4912,12 +4917,12 @@ void Application::update(float deltaTime) { // TODO: break these out into distinct perfTimers when they prove interesting { PROFILE_RANGE(app, "PickManager"); - _pickManager.update(); + DependencyManager::get()->update(); } { - PROFILE_RANGE(app, "LaserPointerManager"); - _laserPointerManager.update(); + PROFILE_RANGE(app, "PointerManager"); + DependencyManager::get()->update(); } { diff --git a/interface/src/Application.h b/interface/src/Application.h index a70aaf93c7..7075745a39 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -70,9 +70,6 @@ #include "ui/overlays/Overlays.h" #include "UndoStackScriptingInterface.h" -#include -#include "raypick/LaserPointerManager.h" - #include #include #include @@ -298,9 +295,6 @@ public: QUrl getAvatarOverrideUrl() { return _avatarOverrideUrl; } bool getSaveAvatarOverrideUrl() { return _saveAvatarOverrideUrl; } - LaserPointerManager& getLaserPointerManager() { return _laserPointerManager; } - PickManager& getPickManager() { return _pickManager; } - signals: void svoImportRequested(const QString& url); @@ -713,9 +707,6 @@ private: bool _saveAvatarOverrideUrl { false }; QObject* _renderEventHandler{ nullptr }; - PickManager _pickManager; - LaserPointerManager _laserPointerManager; - friend class RenderEventHandler; }; #endif // hifi_Application_h diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 0a8506ee28..3100a18dde 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -13,18 +13,20 @@ #include "Application.h" #include "avatar/AvatarManager.h" +#include +#include +#include "RayPickScriptingInterface.h" + LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool enabled) : + Pointer(DependencyManager::get()->createRayPick(rayProps)), _renderingEnabled(enabled), _renderStates(renderStates), _defaultRenderStates(defaultRenderStates), _faceAvatar(faceAvatar), _centerEndY(centerEndY), - _lockEnd(lockEnd), - _rayPickUID(DependencyManager::get()->createRayPick(rayProps)) + _lockEnd(lockEnd) { - - for (auto& state : _renderStates) { if (!enabled || state.first != _currentRenderState) { disableRenderState(state.second); @@ -38,8 +40,6 @@ LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& rende } LaserPointer::~LaserPointer() { - qApp->getPickManager().removePick(_rayPickUID); - for (auto& renderState : _renderStates) { renderState.second.deleteOverlays(); } @@ -49,14 +49,14 @@ LaserPointer::~LaserPointer() { } void LaserPointer::enable() { - qApp->getPickManager().enablePick(_rayPickUID); + Pointer::enable(); withWriteLock([&] { _renderingEnabled = true; }); } void LaserPointer::disable() { - qApp->getPickManager().disablePick(_rayPickUID); + Pointer::disable(); withWriteLock([&] { _renderingEnabled = false; if (!_currentRenderState.empty()) { @@ -100,10 +100,6 @@ void LaserPointer::updateRenderStateOverlay(const OverlayID& id, const QVariant& } } -const QVariantMap LaserPointer::getPrevRayPickResult() { - return qApp->getPickManager().getPrevPickResult(_rayPickUID); -} - void LaserPointer::updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState) { if (!renderState.getStartID().isNull()) { QVariantMap startProps; @@ -197,7 +193,7 @@ void LaserPointer::disableRenderState(const RenderState& renderState) { void LaserPointer::update() { // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts withReadLock([&] { - QVariantMap prevRayPickResult = qApp->getPickManager().getPrevPickResult(_rayPickUID); + QVariantMap prevRayPickResult = DependencyManager::get()->getPrevPickResult(_pickUID); IntersectionType type = IntersectionType(prevRayPickResult["type"].toInt()); PickRay pickRay = PickRay(prevRayPickResult["searchRay"].toMap()); QUuid uid = prevRayPickResult["objectID"].toUuid(); @@ -216,13 +212,9 @@ void LaserPointer::update() { }); } -void LaserPointer::setPrecisionPicking(const bool precisionPicking) { - qApp->getPickManager().setPrecisionPicking(_rayPickUID, precisionPicking); -} - -void LaserPointer::setLaserLength(const float laserLength) { +void LaserPointer::setLength(const float length) { withWriteLock([&] { - _laserLength = laserLength; + _laserLength = length; }); } @@ -232,14 +224,6 @@ void LaserPointer::setLockEndUUID(QUuid objectID, const bool isOverlay) { }); } -void LaserPointer::setIgnoreItems(const QVector& ignoreItems) const { - qApp->getPickManager().setIgnoreItems(_rayPickUID, ignoreItems); -} - -void LaserPointer::setIncludeItems(const QVector& includeItems) const { - qApp->getPickManager().setIncludeItems(_rayPickUID, includeItems); -} - RenderState::RenderState(const OverlayID& startID, const OverlayID& pathID, const OverlayID& endID) : _startID(startID), _pathID(pathID), _endID(endID) { diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index d6fcf20b9d..a0fd1b2417 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -14,12 +14,10 @@ #include #include -#include -#include - #include "ui/overlays/Overlay.h" -#include "RayPickScriptingInterface.h" +#include +#include class RenderState { @@ -45,12 +43,9 @@ private: bool _endIgnoreRays; }; - -class LaserPointer : public ReadWriteLockable { +class LaserPointer : public Pointer { public: - using Pointer = std::shared_ptr; - typedef std::unordered_map RenderStateMap; typedef std::unordered_map> DefaultRenderStateMap; @@ -58,23 +53,17 @@ public: const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool enabled); ~LaserPointer(); - QUuid getRayUID() { return _rayPickUID; } - void enable(); - void disable(); - const QVariantMap getPrevRayPickResult(); + void enable() override; + void disable() override; - void setRenderState(const std::string& state); + void setRenderState(const std::string& state) override; // You cannot use editRenderState to change the overlay type of any part of the laser pointer. You can only edit the properties of the existing overlays. - void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps); + void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) override; - void setPrecisionPicking(const bool precisionPicking); - void setLaserLength(const float laserLength); - void setLockEndUUID(QUuid objectID, const bool isOverlay); + void setLength(const float length) override; + void setLockEndUUID(QUuid objectID, const bool isOverlay) override; - void setIgnoreItems(const QVector& ignoreItems) const; - void setIncludeItems(const QVector& includeItems) const; - - void update(); + void update() override; private: bool _renderingEnabled; @@ -87,8 +76,6 @@ private: bool _lockEnd; std::pair _objectLockEnd { std::pair(QUuid(), false)}; - const QUuid _rayPickUID; - void updateRenderStateOverlay(const OverlayID& id, const QVariant& props); void updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState); void disableRenderState(const RenderState& renderState); diff --git a/interface/src/raypick/LaserPointerManager.cpp b/interface/src/raypick/LaserPointerManager.cpp deleted file mode 100644 index a300a418a7..0000000000 --- a/interface/src/raypick/LaserPointerManager.cpp +++ /dev/null @@ -1,121 +0,0 @@ -// -// LaserPointerManager.cpp -// interface/src/raypick -// -// Created by Sam Gondelman 7/11/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 -// -#include "LaserPointerManager.h" - -QUuid LaserPointerManager::createLaserPointer(const QVariant& rayProps, const LaserPointer::RenderStateMap& renderStates, const LaserPointer::DefaultRenderStateMap& defaultRenderStates, - const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool enabled) { - QUuid result; - std::shared_ptr laserPointer = std::make_shared(rayProps, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, enabled); - if (!laserPointer->getRayUID().isNull()) { - result = QUuid::createUuid(); - withWriteLock([&] { _laserPointers[result] = laserPointer; }); - } - return result; -} - - -LaserPointer::Pointer LaserPointerManager::find(const QUuid& uid) const { - return resultWithReadLock([&] { - auto itr = _laserPointers.find(uid); - if (itr != _laserPointers.end()) { - return *itr; - } - return LaserPointer::Pointer(); - }); -} - - -void LaserPointerManager::removeLaserPointer(const QUuid& uid) { - withWriteLock([&] { - _laserPointers.remove(uid); - }); -} - -void LaserPointerManager::enableLaserPointer(const QUuid& uid) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->enable(); - } -} - -void LaserPointerManager::disableLaserPointer(const QUuid& uid) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->disable(); - } -} - -void LaserPointerManager::setRenderState(const QUuid& uid, const std::string& renderState) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->setRenderState(renderState); - } -} - -void LaserPointerManager::editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->editRenderState(state, startProps, pathProps, endProps); - } -} - -const QVariantMap LaserPointerManager::getPrevRayPickResult(const QUuid& uid) const { - auto laserPointer = find(uid); - if (laserPointer) { - return laserPointer->getPrevRayPickResult(); - } - return QVariantMap(); -} - -void LaserPointerManager::update() { - auto cachedLaserPointers = resultWithReadLock>>([&] { - return _laserPointers.values(); - }); - - for (const auto& laserPointer : cachedLaserPointers) { - laserPointer->update(); - } -} - -void LaserPointerManager::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->setPrecisionPicking(precisionPicking); - } -} - -void LaserPointerManager::setLaserLength(const QUuid& uid, const float laserLength) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->setLaserLength(laserLength); - } -} - -void LaserPointerManager::setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->setIgnoreItems(ignoreEntities); - } -} - -void LaserPointerManager::setIncludeItems(const QUuid& uid, const QVector& includeEntities) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->setIncludeItems(includeEntities); - } -} - -void LaserPointerManager::setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const { - auto laserPointer = find(uid); - if (laserPointer) { - laserPointer->setLockEndUUID(objectID, isOverlay); - } -} diff --git a/interface/src/raypick/LaserPointerManager.h b/interface/src/raypick/LaserPointerManager.h deleted file mode 100644 index 547f7cc785..0000000000 --- a/interface/src/raypick/LaserPointerManager.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// LaserPointerManager.h -// interface/src/raypick -// -// Created by Sam Gondelman 7/11/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 -// -#ifndef hifi_LaserPointerManager_h -#define hifi_LaserPointerManager_h - -#include -#include - -#include - -#include "LaserPointer.h" - -class LaserPointerManager : protected ReadWriteLockable { - -public: - QUuid createLaserPointer(const QVariant& rayProps, const LaserPointer::RenderStateMap& renderStates, const LaserPointer::DefaultRenderStateMap& defaultRenderStates, - const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool enabled); - void removeLaserPointer(const QUuid& uid); - void enableLaserPointer(const QUuid& uid) const; - void disableLaserPointer(const QUuid& uid) const; - void setRenderState(const QUuid& uid, const std::string& renderState) const; - void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; - const QVariantMap getPrevRayPickResult(const QUuid& uid) const; - - void setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const; - void setLaserLength(const QUuid& uid, const float laserLength) const; - void setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const; - void setIncludeItems(const QUuid& uid, const QVector& includeEntities) const; - - void setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const; - - void update(); - -private: - LaserPointer::Pointer find(const QUuid& uid) const; - QHash> _laserPointers; -}; - -#endif // hifi_LaserPointerManager_h diff --git a/interface/src/raypick/LaserPointerScriptingInterface.cpp b/interface/src/raypick/LaserPointerScriptingInterface.cpp index 4ff917d8c5..779f9ff605 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.cpp +++ b/interface/src/raypick/LaserPointerScriptingInterface.cpp @@ -15,11 +15,13 @@ #include +#include "Application.h" + void LaserPointerScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) const { - qApp->getLaserPointerManager().setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); + DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); } void LaserPointerScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) const { - qApp->getLaserPointerManager().setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); + DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } QUuid LaserPointerScriptingInterface::createLaserPointer(const QVariant& properties) const { @@ -74,7 +76,7 @@ QUuid LaserPointerScriptingInterface::createLaserPointer(const QVariant& propert } } - return qApp->getLaserPointerManager().createLaserPointer(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, enabled); + return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, enabled)); } void LaserPointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const { @@ -95,7 +97,7 @@ void LaserPointerScriptingInterface::editRenderState(const QUuid& uid, const QSt endProps = propMap["end"]; } - qApp->getLaserPointerManager().editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps); + DependencyManager::get()->editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps); } RenderState LaserPointerScriptingInterface::buildRenderState(const QVariantMap& propMap) { diff --git a/interface/src/raypick/LaserPointerScriptingInterface.h b/interface/src/raypick/LaserPointerScriptingInterface.h index d51420a112..b2e46f66d6 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.h +++ b/interface/src/raypick/LaserPointerScriptingInterface.h @@ -14,7 +14,9 @@ #include #include "DependencyManager.h" -#include "Application.h" +#include + +#include "LaserPointer.h" class LaserPointerScriptingInterface : public QObject, public Dependency { Q_OBJECT @@ -22,19 +24,19 @@ class LaserPointerScriptingInterface : public QObject, public Dependency { public slots: Q_INVOKABLE QUuid createLaserPointer(const QVariant& properties) const; - Q_INVOKABLE void enableLaserPointer(const QUuid& uid) const { qApp->getLaserPointerManager().enableLaserPointer(uid); } - Q_INVOKABLE void disableLaserPointer(const QUuid& uid) const { qApp->getLaserPointerManager().disableLaserPointer(uid); } - Q_INVOKABLE void removeLaserPointer(const QUuid& uid) const { qApp->getLaserPointerManager().removeLaserPointer(uid); } + Q_INVOKABLE void enableLaserPointer(const QUuid& uid) const { DependencyManager::get()->enablePointer(uid); } + Q_INVOKABLE void disableLaserPointer(const QUuid& uid) const { DependencyManager::get()->disablePointer(uid); } + Q_INVOKABLE void removeLaserPointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; - Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { qApp->getLaserPointerManager().setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE QVariantMap getPrevRayPickResult(QUuid uid) const { return qApp->getLaserPointerManager().getPrevRayPickResult(uid); } + Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } + Q_INVOKABLE QVariantMap getPrevRayPickResult(QUuid uid) const { return DependencyManager::get()->getPrevRayPickResult(uid); } - Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { qApp->getLaserPointerManager().setPrecisionPicking(uid, precisionPicking); } - Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { qApp->getLaserPointerManager().setLaserLength(uid, laserLength); } + Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } + Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities) const; Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities) const; - Q_INVOKABLE void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { qApp->getLaserPointerManager().setLockEndUUID(uid, objectID, isOverlay); } + Q_INVOKABLE void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } private: static RenderState buildRenderState(const QVariantMap& propMap); diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index de67fdde0f..8913138c36 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -13,7 +13,8 @@ #include #include "GLMHelpers.h" -#include "Application.h" + +#include #include "StaticRayPick.h" #include "JointRayPick.h" @@ -52,10 +53,10 @@ QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { dirOffset = vec3FromVariant(propMap["dirOffset"]); } - return qApp->getPickManager().addPick(RAY, std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled)); + return DependencyManager::get()->addPick(RAY, std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled)); } else { - return qApp->getPickManager().addPick(RAY, std::make_shared(filter, maxDistance, enabled)); + return DependencyManager::get()->addPick(RAY, std::make_shared(filter, maxDistance, enabled)); } } else if (propMap["position"].isValid()) { glm::vec3 position = vec3FromVariant(propMap["position"]); @@ -65,36 +66,36 @@ QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { direction = vec3FromVariant(propMap["direction"]); } - return qApp->getPickManager().addPick(RAY, std::make_shared(position, direction, filter, maxDistance, enabled)); + return DependencyManager::get()->addPick(RAY, std::make_shared(position, direction, filter, maxDistance, enabled)); } return QUuid(); } void RayPickScriptingInterface::enableRayPick(const QUuid& uid) { - qApp->getPickManager().enablePick(uid); + DependencyManager::get()->enablePick(uid); } void RayPickScriptingInterface::disableRayPick(const QUuid& uid) { - qApp->getPickManager().disablePick(uid); + DependencyManager::get()->disablePick(uid); } void RayPickScriptingInterface::removeRayPick(const QUuid& uid) { - qApp->getPickManager().removePick(uid); + DependencyManager::get()->removePick(uid); } QVariantMap RayPickScriptingInterface::getPrevRayPickResult(const QUuid& uid) { - return qApp->getPickManager().getPrevPickResult(uid); + return DependencyManager::get()->getPrevPickResult(uid); } void RayPickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { - qApp->getPickManager().setPrecisionPicking(uid, precisionPicking); + DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } void RayPickScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) { - qApp->getPickManager().setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); + DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); } void RayPickScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) { - qApp->getPickManager().setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); + DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index 9b2f19a63a..07c8d914f3 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -10,6 +10,7 @@ #include +#include #include "RegisteredMetaTypes.h" #include "Pick.h" @@ -20,7 +21,8 @@ enum PickType { STYLUS }; -class PickManager : protected ReadWriteLockable { +class PickManager : public Dependency, protected ReadWriteLockable { + SINGLETON_DEPENDENCY public: PickManager(); diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp new file mode 100644 index 0000000000..6ba8c6072c --- /dev/null +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -0,0 +1,39 @@ +// +// Created by Sam Gondelman 10/19/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 +// +#include "Pointer.h" + +#include +#include "PickManager.h" + +Pointer::~Pointer() { + DependencyManager::get()->removePick(_pickUID); +} + +void Pointer::enable() { + DependencyManager::get()->enablePick(_pickUID); +} + +void Pointer::disable() { + DependencyManager::get()->disablePick(_pickUID); +} + +const QVariantMap Pointer::getPrevPickResult() { + return DependencyManager::get()->getPrevPickResult(_pickUID); +} + +void Pointer::setPrecisionPicking(const bool precisionPicking) { + DependencyManager::get()->setPrecisionPicking(_pickUID, precisionPicking); +} + +void Pointer::setIgnoreItems(const QVector& ignoreItems) const { + DependencyManager::get()->setIgnoreItems(_pickUID, ignoreItems); +} + +void Pointer::setIncludeItems(const QVector& includeItems) const { + DependencyManager::get()->setIncludeItems(_pickUID, includeItems); +} \ No newline at end of file diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h new file mode 100644 index 0000000000..4a105f8a92 --- /dev/null +++ b/libraries/pointers/src/pointers/Pointer.h @@ -0,0 +1,46 @@ +// +// Created by Sam Gondelman 10/17/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 +// +#ifndef hifi_Pointer_h +#define hifi_Pointer_h + +#include +#include +#include + +#include + +class Pointer : protected ReadWriteLockable { +public: + Pointer(const QUuid& uid) : _pickUID(uid) {} + + virtual ~Pointer(); + + virtual void enable(); + virtual void disable(); + virtual const QVariantMap getPrevPickResult(); + + virtual void setRenderState(const std::string& state) = 0; + virtual void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) = 0; + + virtual void setPrecisionPicking(const bool precisionPicking); + virtual void setIgnoreItems(const QVector& ignoreItems) const; + virtual void setIncludeItems(const QVector& includeItems) const; + + // Pointers can choose to implement these + virtual void setLength(const float length) {} + virtual void setLockEndUUID(QUuid objectID, const bool isOverlay) {} + + virtual void update() = 0; + + QUuid getRayUID() { return _pickUID; } + +protected: + const QUuid _pickUID; +}; + +#endif // hifi_Pick_h diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index 63bd983420..f2c2756d6f 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -1,6 +1,115 @@ +// +// Created by Bradley Austin Davis on 2017/10/16 +// Copyright 2013-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 +// + #include "PointerManager.h" -PointerManager::PointerManager() { - +std::shared_ptr PointerManager::find(const QUuid& uid) const { + return resultWithReadLock>([&] { + auto itr = _pointers.find(uid); + if (itr != _pointers.end()) { + return *itr; + } + return std::shared_ptr(); + }); } +QUuid PointerManager::addPointer(std::shared_ptr pointer) { + QUuid result; + if (!pointer->getRayUID().isNull()) { + result = QUuid::createUuid(); + withWriteLock([&] { _pointers[result] = pointer; }); + } + return result; +} + +void PointerManager::removePointer(const QUuid& uid) { + withWriteLock([&] { + _pointers.remove(uid); + }); +} + +void PointerManager::enablePointer(const QUuid& uid) const { + auto pointer = find(uid); + if (pointer) { + pointer->enable(); + } +} + +void PointerManager::disablePointer(const QUuid& uid) const { + auto pointer = find(uid); + if (pointer) { + pointer->disable(); + } +} + +void PointerManager::setRenderState(const QUuid& uid, const std::string& renderState) const { + auto pointer = find(uid); + if (pointer) { + pointer->setRenderState(renderState); + } +} + +void PointerManager::editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const { + auto pointer = find(uid); + if (pointer) { + pointer->editRenderState(state, startProps, pathProps, endProps); + } +} + +const QVariantMap PointerManager::getPrevRayPickResult(const QUuid& uid) const { + auto pointer = find(uid); + if (pointer) { + return pointer->getPrevPickResult(); + } + return QVariantMap(); +} + +void PointerManager::update() { + auto cachedPointers = resultWithReadLock>>([&] { + return _pointers.values(); + }); + + for (const auto& pointer : cachedPointers) { + pointer->update(); + } +} + +void PointerManager::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const { + auto pointer = find(uid); + if (pointer) { + pointer->setPrecisionPicking(precisionPicking); + } +} + +void PointerManager::setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const { + auto pointer = find(uid); + if (pointer) { + pointer->setIgnoreItems(ignoreEntities); + } +} + +void PointerManager::setIncludeItems(const QUuid& uid, const QVector& includeEntities) const { + auto pointer = find(uid); + if (pointer) { + pointer->setIncludeItems(includeEntities); + } +} + +void PointerManager::setLength(const QUuid& uid, const float length) const { + auto pointer = find(uid); + if (pointer) { + pointer->setLength(length); + } +} + +void PointerManager::setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const { + auto pointer = find(uid); + if (pointer) { + pointer->setLockEndUUID(objectID, isOverlay); + } +} diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 16f854bff5..1841e66f7b 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -11,11 +11,39 @@ #include #include -class PointerManager : public QObject, public Dependency { +#include +#include + +#include + +#include "Pointer.h" + +class PointerManager : public QObject, public Dependency, protected ReadWriteLockable{ Q_OBJECT SINGLETON_DEPENDENCY public: - PointerManager(); + PointerManager() {} + + QUuid addPointer(std::shared_ptr pointer); + void removePointer(const QUuid& uid); + void enablePointer(const QUuid& uid) const; + void disablePointer(const QUuid& uid) const; + void setRenderState(const QUuid& uid, const std::string& renderState) const; + void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; + const QVariantMap getPrevRayPickResult(const QUuid& uid) const; + + void setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const; + void setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const; + void setIncludeItems(const QUuid& uid, const QVector& includeEntities) const; + + void setLength(const QUuid& uid, const float length) const; + void setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const; + + void update(); + +private: + std::shared_ptr find(const QUuid& uid) const; + QHash> _pointers; signals: void triggerBegin(const QUuid& id, const PointerEvent& pointerEvent); From fb969964f3663131c88925a2571427a590d46fe4 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 20 Oct 2017 14:37:10 -0700 Subject: [PATCH 025/187] generalized scripting interfaces --- interface/src/Application.cpp | 12 +- .../LaserPointerScriptingInterface.cpp | 105 +------------ .../raypick/LaserPointerScriptingInterface.h | 7 +- .../src/raypick/PickScriptingInterface.cpp | 107 ++++++++++++++ .../src/raypick/PickScriptingInterface.h | 65 ++++++++ .../src/raypick/PointerScriptingInterface.cpp | 139 ++++++++++++++++++ .../src/raypick/PointerScriptingInterface.h | 46 ++++++ .../src/raypick/RayPickScriptingInterface.cpp | 50 +------ .../src/raypick/RayPickScriptingInterface.h | 31 +--- libraries/pointers/src/pointers/Pick.h | 7 + .../pointers/src/pointers/PickManager.cpp | 6 +- libraries/pointers/src/pointers/PickManager.h | 11 +- .../pointers/src/pointers/PointerManager.cpp | 2 +- .../pointers/src/pointers/PointerManager.h | 2 +- .../controllers/controllerDispatcher.js | 12 +- .../controllerModules/farActionGrabEntity.js | 8 +- .../controllerModules/farTrigger.js | 2 +- .../controllerModules/hudOverlayPointer.js | 2 +- .../controllerModules/inEditMode.js | 6 +- .../controllerModules/overlayLaserInput.js | 4 +- .../controllers/controllerModules/teleport.js | 10 +- .../controllerModules/webEntityLaserInput.js | 4 +- scripts/system/controllers/grab.js | 8 +- scripts/system/libraries/touchEventUtils.js | 2 +- 24 files changed, 417 insertions(+), 231 deletions(-) create mode 100644 interface/src/raypick/PickScriptingInterface.cpp create mode 100644 interface/src/raypick/PickScriptingInterface.h create mode 100644 interface/src/raypick/PointerScriptingInterface.cpp create mode 100644 interface/src/raypick/PointerScriptingInterface.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3476700904..26e659e118 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -197,6 +197,8 @@ #include #include #include +#include +#include #include #include @@ -696,6 +698,8 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); + DependencyManager::set(); + DependencyManager::set(); return previousSessionCrashed; } @@ -1825,14 +1829,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo DependencyManager::get()->setShouldPickHUDOperator([&]() { return DependencyManager::get()->isHMDMode(); }); // Setup the mouse ray pick and related operators - DependencyManager::get()->setMouseRayPickID(DependencyManager::get()->addPick(RAY, std::make_shared( - PickFilter(RayPickScriptingInterface::PICK_ENTITIES() | RayPickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true))); + DependencyManager::get()->setMouseRayPickID(DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared( + PickFilter(PickScriptingInterface::PICK_ENTITIES() | PickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true))); DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { RayToEntityIntersectionResult entityResult; entityResult.intersects = false; QVariantMap result = DependencyManager::get()->getPrevPickResult(rayPickID); if (result["type"].isValid()) { - entityResult.intersects = result["type"] != RayPickScriptingInterface::INTERSECTED_NONE(); + entityResult.intersects = result["type"] != PickScriptingInterface::INTERSECTED_NONE(); if (entityResult.intersects) { entityResult.intersection = vec3FromVariant(result["intersection"]); entityResult.distance = result["distance"].toFloat(); @@ -5798,6 +5802,8 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe scriptEngine->registerGlobalObject("RayPick", DependencyManager::get().data()); scriptEngine->registerGlobalObject("LaserPointers", DependencyManager::get().data()); + scriptEngine->registerGlobalObject("Picks", DependencyManager::get().data()); + scriptEngine->registerGlobalObject("Pointers", DependencyManager::get().data()); // Caches scriptEngine->registerGlobalObject("AnimationCache", DependencyManager::get().data()); diff --git a/interface/src/raypick/LaserPointerScriptingInterface.cpp b/interface/src/raypick/LaserPointerScriptingInterface.cpp index 779f9ff605..8f8f9d921a 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.cpp +++ b/interface/src/raypick/LaserPointerScriptingInterface.cpp @@ -15,6 +15,7 @@ #include +#include "PointerScriptingInterface.h" #include "Application.h" void LaserPointerScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) const { @@ -25,109 +26,9 @@ void LaserPointerScriptingInterface::setIncludeItems(const QUuid& uid, const QSc } QUuid LaserPointerScriptingInterface::createLaserPointer(const QVariant& properties) const { - QVariantMap propertyMap = properties.toMap(); - - bool faceAvatar = false; - if (propertyMap["faceAvatar"].isValid()) { - faceAvatar = propertyMap["faceAvatar"].toBool(); - } - - bool centerEndY = true; - if (propertyMap["centerEndY"].isValid()) { - centerEndY = propertyMap["centerEndY"].toBool(); - } - - bool lockEnd = false; - if (propertyMap["lockEnd"].isValid()) { - lockEnd = propertyMap["lockEnd"].toBool(); - } - - bool enabled = false; - if (propertyMap["enabled"].isValid()) { - enabled = propertyMap["enabled"].toBool(); - } - - LaserPointer::RenderStateMap renderStates; - if (propertyMap["renderStates"].isValid()) { - QList renderStateVariants = propertyMap["renderStates"].toList(); - for (QVariant& renderStateVariant : renderStateVariants) { - if (renderStateVariant.isValid()) { - QVariantMap renderStateMap = renderStateVariant.toMap(); - if (renderStateMap["name"].isValid()) { - std::string name = renderStateMap["name"].toString().toStdString(); - renderStates[name] = buildRenderState(renderStateMap); - } - } - } - } - - LaserPointer::DefaultRenderStateMap defaultRenderStates; - if (propertyMap["defaultRenderStates"].isValid()) { - QList renderStateVariants = propertyMap["defaultRenderStates"].toList(); - for (QVariant& renderStateVariant : renderStateVariants) { - if (renderStateVariant.isValid()) { - QVariantMap renderStateMap = renderStateVariant.toMap(); - if (renderStateMap["name"].isValid() && renderStateMap["distance"].isValid()) { - std::string name = renderStateMap["name"].toString().toStdString(); - float distance = renderStateMap["distance"].toFloat(); - defaultRenderStates[name] = std::pair(distance, buildRenderState(renderStateMap)); - } - } - } - } - - return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, enabled)); + return DependencyManager::get()->createLaserPointer(properties); } void LaserPointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const { - QVariantMap propMap = properties.toMap(); - - QVariant startProps; - if (propMap["start"].isValid()) { - startProps = propMap["start"]; - } - - QVariant pathProps; - if (propMap["path"].isValid()) { - pathProps = propMap["path"]; - } - - QVariant endProps; - if (propMap["end"].isValid()) { - endProps = propMap["end"]; - } - - DependencyManager::get()->editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps); -} - -RenderState LaserPointerScriptingInterface::buildRenderState(const QVariantMap& propMap) { - QUuid startID; - if (propMap["start"].isValid()) { - QVariantMap startMap = propMap["start"].toMap(); - if (startMap["type"].isValid()) { - startMap.remove("visible"); - startID = qApp->getOverlays().addOverlay(startMap["type"].toString(), startMap); - } - } - - QUuid pathID; - if (propMap["path"].isValid()) { - QVariantMap pathMap = propMap["path"].toMap(); - // right now paths must be line3ds - if (pathMap["type"].isValid() && pathMap["type"].toString() == "line3d") { - pathMap.remove("visible"); - pathID = qApp->getOverlays().addOverlay(pathMap["type"].toString(), pathMap); - } - } - - QUuid endID; - if (propMap["end"].isValid()) { - QVariantMap endMap = propMap["end"].toMap(); - if (endMap["type"].isValid()) { - endMap.remove("visible"); - endID = qApp->getOverlays().addOverlay(endMap["type"].toString(), endMap); - } - } - - return RenderState(startID, pathID, endID); + DependencyManager::get()->editRenderState(uid, renderState, properties); } \ No newline at end of file diff --git a/interface/src/raypick/LaserPointerScriptingInterface.h b/interface/src/raypick/LaserPointerScriptingInterface.h index b2e46f66d6..1116da1528 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.h +++ b/interface/src/raypick/LaserPointerScriptingInterface.h @@ -16,8 +16,6 @@ #include "DependencyManager.h" #include -#include "LaserPointer.h" - class LaserPointerScriptingInterface : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -29,7 +27,7 @@ public slots: Q_INVOKABLE void removeLaserPointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE QVariantMap getPrevRayPickResult(QUuid uid) const { return DependencyManager::get()->getPrevRayPickResult(uid); } + Q_INVOKABLE QVariantMap getPrevRayPickResult(QUuid uid) const { return DependencyManager::get()->getPrevPickResult(uid); } Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } @@ -38,9 +36,6 @@ public slots: Q_INVOKABLE void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } -private: - static RenderState buildRenderState(const QVariantMap& propMap); - }; #endif // hifi_LaserPointerScriptingInterface_h diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp new file mode 100644 index 0000000000..99f7ac2515 --- /dev/null +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -0,0 +1,107 @@ +// +// Created by Sam Gondelman 10/20/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 +// + +#include "PickScriptingInterface.h" + +#include +#include "GLMHelpers.h" + +#include + +#include "StaticRayPick.h" +#include "JointRayPick.h" +#include "MouseRayPick.h" + +QUuid PickScriptingInterface::createPick(const PickQuery::PickType type, const QVariant& properties) { + switch (type) { + case PickQuery::PickType::Ray: + return createRayPick(properties); + default: + return QUuid(); + } +} + +QUuid PickScriptingInterface::createRayPick(const QVariant& properties) { + QVariantMap propMap = properties.toMap(); + + bool enabled = false; + if (propMap["enabled"].isValid()) { + enabled = propMap["enabled"].toBool(); + } + + PickFilter filter = PickFilter(); + if (propMap["filter"].isValid()) { + filter = PickFilter(propMap["filter"].toUInt()); + } + + float maxDistance = 0.0f; + if (propMap["maxDistance"].isValid()) { + maxDistance = propMap["maxDistance"].toFloat(); + } + + if (propMap["joint"].isValid()) { + std::string jointName = propMap["joint"].toString().toStdString(); + + if (jointName != "Mouse") { + // x = upward, y = forward, z = lateral + glm::vec3 posOffset = Vectors::ZERO; + if (propMap["posOffset"].isValid()) { + posOffset = vec3FromVariant(propMap["posOffset"]); + } + + glm::vec3 dirOffset = Vectors::UP; + if (propMap["dirOffset"].isValid()) { + dirOffset = vec3FromVariant(propMap["dirOffset"]); + } + + return DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled)); + + } else { + return DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared(filter, maxDistance, enabled)); + } + } else if (propMap["position"].isValid()) { + glm::vec3 position = vec3FromVariant(propMap["position"]); + + glm::vec3 direction = -Vectors::UP; + if (propMap["direction"].isValid()) { + direction = vec3FromVariant(propMap["direction"]); + } + + return DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared(position, direction, filter, maxDistance, enabled)); + } + + return QUuid(); +} + +void PickScriptingInterface::enablePick(const QUuid& uid) { + DependencyManager::get()->enablePick(uid); +} + +void PickScriptingInterface::disablePick(const QUuid& uid) { + DependencyManager::get()->disablePick(uid); +} + +void PickScriptingInterface::removePick(const QUuid& uid) { + DependencyManager::get()->removePick(uid); +} + +QVariantMap PickScriptingInterface::getPrevPickResult(const QUuid& uid) { + return DependencyManager::get()->getPrevPickResult(uid); +} + +void PickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { + DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); +} + +void PickScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) { + DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); +} + +void PickScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) { + DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); +} diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h new file mode 100644 index 0000000000..462b64dbd1 --- /dev/null +++ b/interface/src/raypick/PickScriptingInterface.h @@ -0,0 +1,65 @@ +// +// Created by Sam Gondelman 10/20/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 +// +#ifndef hifi_PickScriptingInterface_h +#define hifi_PickScriptingInterface_h + +#include + +#include +#include +#include + +class PickScriptingInterface : public QObject, public Dependency { + Q_OBJECT + Q_PROPERTY(unsigned int PICK_NOTHING READ PICK_NOTHING CONSTANT) + Q_PROPERTY(unsigned int PICK_ENTITIES READ PICK_ENTITIES CONSTANT) + Q_PROPERTY(unsigned int PICK_OVERLAYS READ PICK_OVERLAYS CONSTANT) + Q_PROPERTY(unsigned int PICK_AVATARS READ PICK_AVATARS CONSTANT) + Q_PROPERTY(unsigned int PICK_HUD READ PICK_HUD CONSTANT) + Q_PROPERTY(unsigned int PICK_COARSE READ PICK_COARSE CONSTANT) + Q_PROPERTY(unsigned int PICK_INCLUDE_INVISIBLE READ PICK_INCLUDE_INVISIBLE CONSTANT) + Q_PROPERTY(unsigned int PICK_INCLUDE_NONCOLLIDABLE READ PICK_INCLUDE_NONCOLLIDABLE CONSTANT) + Q_PROPERTY(unsigned int PICK_ALL_INTERSECTIONS READ PICK_ALL_INTERSECTIONS CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_NONE READ INTERSECTED_NONE CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_ENTITY READ INTERSECTED_ENTITY CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_OVERLAY READ INTERSECTED_OVERLAY CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_AVATAR READ INTERSECTED_AVATAR CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_HUD READ INTERSECTED_HUD CONSTANT) + SINGLETON_DEPENDENCY + +public: + QUuid createRayPick(const QVariant& properties); + +public slots: + Q_INVOKABLE QUuid createPick(const PickQuery::PickType type, const QVariant& properties); + Q_INVOKABLE void enablePick(const QUuid& uid); + Q_INVOKABLE void disablePick(const QUuid& uid); + Q_INVOKABLE void removePick(const QUuid& uid); + Q_INVOKABLE QVariantMap getPrevPickResult(const QUuid& uid); + + Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, const bool precisionPicking); + Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities); + Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); + + static constexpr unsigned int PICK_NOTHING() { return 0; } + static constexpr unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } + static constexpr unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } + static constexpr unsigned int PICK_AVATARS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_AVATARS); } + static constexpr unsigned int PICK_HUD() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_HUD); } + static constexpr unsigned int PICK_COARSE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_COARSE); } + static constexpr unsigned int PICK_INCLUDE_INVISIBLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } + static constexpr unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } + static constexpr unsigned int PICK_ALL_INTERSECTIONS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } + static constexpr unsigned int INTERSECTED_NONE() { return IntersectionType::NONE; } + static constexpr unsigned int INTERSECTED_ENTITY() { return IntersectionType::ENTITY; } + static constexpr unsigned int INTERSECTED_OVERLAY() { return IntersectionType::OVERLAY; } + static constexpr unsigned int INTERSECTED_AVATAR() { return IntersectionType::AVATAR; } + static constexpr unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } +}; + +#endif // hifi_PickScriptingInterface_h \ No newline at end of file diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp new file mode 100644 index 0000000000..4e5d5f414f --- /dev/null +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -0,0 +1,139 @@ +// +// Created by Sam Gondelman 10/20/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 +// + +#include "PointerScriptingInterface.h" + +#include + +#include + +#include "Application.h" + +void PointerScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) const { + DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); +} +void PointerScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) const { + DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); +} + +QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType type, const QVariant& properties) const { + switch (type) { + case PickQuery::PickType::Ray: + return createLaserPointer(properties); + default: + return QUuid(); + } +} + +QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) const { + QVariantMap propertyMap = properties.toMap(); + + bool faceAvatar = false; + if (propertyMap["faceAvatar"].isValid()) { + faceAvatar = propertyMap["faceAvatar"].toBool(); + } + + bool centerEndY = true; + if (propertyMap["centerEndY"].isValid()) { + centerEndY = propertyMap["centerEndY"].toBool(); + } + + bool lockEnd = false; + if (propertyMap["lockEnd"].isValid()) { + lockEnd = propertyMap["lockEnd"].toBool(); + } + + bool enabled = false; + if (propertyMap["enabled"].isValid()) { + enabled = propertyMap["enabled"].toBool(); + } + + LaserPointer::RenderStateMap renderStates; + if (propertyMap["renderStates"].isValid()) { + QList renderStateVariants = propertyMap["renderStates"].toList(); + for (QVariant& renderStateVariant : renderStateVariants) { + if (renderStateVariant.isValid()) { + QVariantMap renderStateMap = renderStateVariant.toMap(); + if (renderStateMap["name"].isValid()) { + std::string name = renderStateMap["name"].toString().toStdString(); + renderStates[name] = buildRenderState(renderStateMap); + } + } + } + } + + LaserPointer::DefaultRenderStateMap defaultRenderStates; + if (propertyMap["defaultRenderStates"].isValid()) { + QList renderStateVariants = propertyMap["defaultRenderStates"].toList(); + for (QVariant& renderStateVariant : renderStateVariants) { + if (renderStateVariant.isValid()) { + QVariantMap renderStateMap = renderStateVariant.toMap(); + if (renderStateMap["name"].isValid() && renderStateMap["distance"].isValid()) { + std::string name = renderStateMap["name"].toString().toStdString(); + float distance = renderStateMap["distance"].toFloat(); + defaultRenderStates[name] = std::pair(distance, buildRenderState(renderStateMap)); + } + } + } + } + + return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, enabled)); +} + +void PointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const { + QVariantMap propMap = properties.toMap(); + + QVariant startProps; + if (propMap["start"].isValid()) { + startProps = propMap["start"]; + } + + QVariant pathProps; + if (propMap["path"].isValid()) { + pathProps = propMap["path"]; + } + + QVariant endProps; + if (propMap["end"].isValid()) { + endProps = propMap["end"]; + } + + DependencyManager::get()->editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps); +} + +RenderState PointerScriptingInterface::buildRenderState(const QVariantMap& propMap) { + QUuid startID; + if (propMap["start"].isValid()) { + QVariantMap startMap = propMap["start"].toMap(); + if (startMap["type"].isValid()) { + startMap.remove("visible"); + startID = qApp->getOverlays().addOverlay(startMap["type"].toString(), startMap); + } + } + + QUuid pathID; + if (propMap["path"].isValid()) { + QVariantMap pathMap = propMap["path"].toMap(); + // right now paths must be line3ds + if (pathMap["type"].isValid() && pathMap["type"].toString() == "line3d") { + pathMap.remove("visible"); + pathID = qApp->getOverlays().addOverlay(pathMap["type"].toString(), pathMap); + } + } + + QUuid endID; + if (propMap["end"].isValid()) { + QVariantMap endMap = propMap["end"].toMap(); + if (endMap["type"].isValid()) { + endMap.remove("visible"); + endID = qApp->getOverlays().addOverlay(endMap["type"].toString(), endMap); + } + } + + return RenderState(startID, pathID, endID); +} \ No newline at end of file diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h new file mode 100644 index 0000000000..8a3a316d9e --- /dev/null +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -0,0 +1,46 @@ +// +// Created by Sam Gondelman 10/20/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 +// +#ifndef hifi_PointerScriptingInterface_h +#define hifi_PointerScriptingInterface_h + +#include + +#include "DependencyManager.h" +#include + +#include "LaserPointer.h" + +class PointerScriptingInterface : public QObject, public Dependency { + Q_OBJECT + SINGLETON_DEPENDENCY + +public: + QUuid createLaserPointer(const QVariant& properties) const; + +public slots: + Q_INVOKABLE QUuid createPointer(const PickQuery::PickType type, const QVariant& properties) const; + Q_INVOKABLE void enablePointer(const QUuid& uid) const { DependencyManager::get()->enablePointer(uid); } + Q_INVOKABLE void disablePointer(const QUuid& uid) const { DependencyManager::get()->disablePointer(uid); } + Q_INVOKABLE void removePointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } + Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; + Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } + Q_INVOKABLE QVariantMap getPrevPickResult(QUuid uid) const { return DependencyManager::get()->getPrevPickResult(uid); } + + Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } + Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } + Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities) const; + Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities) const; + + Q_INVOKABLE void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } + +private: + static RenderState buildRenderState(const QVariantMap& propMap); + +}; + +#endif // hifi_PointerScriptingInterface_h diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index 8913138c36..92bf3ec521 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -21,55 +21,7 @@ #include "MouseRayPick.h" QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { - QVariantMap propMap = properties.toMap(); - - bool enabled = false; - if (propMap["enabled"].isValid()) { - enabled = propMap["enabled"].toBool(); - } - - PickFilter filter = PickFilter(); - if (propMap["filter"].isValid()) { - filter = PickFilter(propMap["filter"].toUInt()); - } - - float maxDistance = 0.0f; - if (propMap["maxDistance"].isValid()) { - maxDistance = propMap["maxDistance"].toFloat(); - } - - if (propMap["joint"].isValid()) { - std::string jointName = propMap["joint"].toString().toStdString(); - - if (jointName != "Mouse") { - // x = upward, y = forward, z = lateral - glm::vec3 posOffset = Vectors::ZERO; - if (propMap["posOffset"].isValid()) { - posOffset = vec3FromVariant(propMap["posOffset"]); - } - - glm::vec3 dirOffset = Vectors::UP; - if (propMap["dirOffset"].isValid()) { - dirOffset = vec3FromVariant(propMap["dirOffset"]); - } - - return DependencyManager::get()->addPick(RAY, std::make_shared(jointName, posOffset, dirOffset, filter, maxDistance, enabled)); - - } else { - return DependencyManager::get()->addPick(RAY, std::make_shared(filter, maxDistance, enabled)); - } - } else if (propMap["position"].isValid()) { - glm::vec3 position = vec3FromVariant(propMap["position"]); - - glm::vec3 direction = -Vectors::UP; - if (propMap["direction"].isValid()) { - direction = vec3FromVariant(propMap["direction"]); - } - - return DependencyManager::get()->addPick(RAY, std::make_shared(position, direction, filter, maxDistance, enabled)); - } - - return QUuid(); + return DependencyManager::get()->createRayPick(properties); } void RayPickScriptingInterface::enableRayPick(const QUuid& uid) { diff --git a/interface/src/raypick/RayPickScriptingInterface.h b/interface/src/raypick/RayPickScriptingInterface.h index ebfc3fb9fe..ed837afe49 100644 --- a/interface/src/raypick/RayPickScriptingInterface.h +++ b/interface/src/raypick/RayPickScriptingInterface.h @@ -17,22 +17,10 @@ #include #include "RayPick.h" +#include "PickScriptingInterface.h" + class RayPickScriptingInterface : public QObject, public Dependency { Q_OBJECT - Q_PROPERTY(unsigned int PICK_NOTHING READ PICK_NOTHING CONSTANT) - Q_PROPERTY(unsigned int PICK_ENTITIES READ PICK_ENTITIES CONSTANT) - Q_PROPERTY(unsigned int PICK_OVERLAYS READ PICK_OVERLAYS CONSTANT) - Q_PROPERTY(unsigned int PICK_AVATARS READ PICK_AVATARS CONSTANT) - Q_PROPERTY(unsigned int PICK_HUD READ PICK_HUD CONSTANT) - Q_PROPERTY(unsigned int PICK_COARSE READ PICK_COARSE CONSTANT) - Q_PROPERTY(unsigned int PICK_INCLUDE_INVISIBLE READ PICK_INCLUDE_INVISIBLE CONSTANT) - Q_PROPERTY(unsigned int PICK_INCLUDE_NONCOLLIDABLE READ PICK_INCLUDE_NONCOLLIDABLE CONSTANT) - Q_PROPERTY(unsigned int PICK_ALL_INTERSECTIONS READ PICK_ALL_INTERSECTIONS CONSTANT) - Q_PROPERTY(unsigned int INTERSECTED_NONE READ INTERSECTED_NONE CONSTANT) - Q_PROPERTY(unsigned int INTERSECTED_ENTITY READ INTERSECTED_ENTITY CONSTANT) - Q_PROPERTY(unsigned int INTERSECTED_OVERLAY READ INTERSECTED_OVERLAY CONSTANT) - Q_PROPERTY(unsigned int INTERSECTED_AVATAR READ INTERSECTED_AVATAR CONSTANT) - Q_PROPERTY(unsigned int INTERSECTED_HUD READ INTERSECTED_HUD CONSTANT) SINGLETON_DEPENDENCY public slots: @@ -45,21 +33,6 @@ public slots: Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, const bool precisionPicking); Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities); Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); - - static constexpr unsigned int PICK_NOTHING() { return 0; } - static constexpr unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } - static constexpr unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } - static constexpr unsigned int PICK_AVATARS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_AVATARS); } - static constexpr unsigned int PICK_HUD() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_HUD); } - static constexpr unsigned int PICK_COARSE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_COARSE); } - static constexpr unsigned int PICK_INCLUDE_INVISIBLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_INVISIBLE); } - static constexpr unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_INCLUDE_NONCOLLIDABLE); } - static constexpr unsigned int PICK_ALL_INTERSECTIONS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ALL_INTERSECTIONS); } - static constexpr unsigned int INTERSECTED_NONE() { return IntersectionType::NONE; } - static constexpr unsigned int INTERSECTED_ENTITY() { return IntersectionType::ENTITY; } - static constexpr unsigned int INTERSECTED_OVERLAY() { return IntersectionType::OVERLAY; } - static constexpr unsigned int INTERSECTED_AVATAR() { return IntersectionType::AVATAR; } - static constexpr unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } }; #endif // hifi_RayPickScriptingInterface_h diff --git a/libraries/pointers/src/pointers/Pick.h b/libraries/pointers/src/pointers/Pick.h index 6ac0d6781e..5dcaba2bb8 100644 --- a/libraries/pointers/src/pointers/Pick.h +++ b/libraries/pointers/src/pointers/Pick.h @@ -130,9 +130,16 @@ public: using PickResultPointer = std::shared_ptr; class PickQuery : protected ReadWriteLockable { + Q_GADGET public: PickQuery(const PickFilter& filter, const float maxDistance, const bool enabled); + enum PickType { + Ray = 0, + Stylus + }; + Q_ENUM(PickType) + void enable(bool enabled = true); void disable() { enable(false); } diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp index d6c2f44212..571f9f04cd 100644 --- a/libraries/pointers/src/pointers/PickManager.cpp +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -11,7 +11,7 @@ PickManager::PickManager() { setShouldPickHUDOperator([]() { return false; }); } -QUuid PickManager::addPick(PickType type, const std::shared_ptr pick) { +QUuid PickManager::addPick(PickQuery::PickType type, const std::shared_ptr pick) { QUuid id = QUuid::createUuid(); withWriteLock([&] { _picks[type][id] = pick; @@ -84,11 +84,11 @@ void PickManager::setIncludeItems(const QUuid& uid, const QVector& includ } void PickManager::update() { - QHash>> cachedPicks; + QHash>> cachedPicks; withReadLock([&] { cachedPicks = _picks; }); bool shouldPickHUD = _shouldPickHUDOperator(); - _rayPickCacheOptimizer.update(cachedPicks[RAY], shouldPickHUD); + _rayPickCacheOptimizer.update(cachedPicks[PickQuery::Ray], shouldPickHUD); } \ No newline at end of file diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index 07c8d914f3..f09f44621a 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -16,11 +16,6 @@ #include "Pick.h" #include "PickCacheOptimizer.h" -enum PickType { - RAY = 0, - STYLUS -}; - class PickManager : public Dependency, protected ReadWriteLockable { SINGLETON_DEPENDENCY @@ -29,7 +24,7 @@ public: void update(); - QUuid addPick(PickType type, const std::shared_ptr pick); + QUuid addPick(PickQuery::PickType type, const std::shared_ptr pick); void removePick(const QUuid& uid); void enablePick(const QUuid& uid) const; void disablePick(const QUuid& uid) const; @@ -46,8 +41,8 @@ protected: std::function _shouldPickHUDOperator; std::shared_ptr findPick(const QUuid& uid) const; - QHash>> _picks; - QHash _typeMap; + QHash>> _picks; + QHash _typeMap; PickCacheOptimizer _rayPickCacheOptimizer; }; diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index f2c2756d6f..a475ba4d83 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -61,7 +61,7 @@ void PointerManager::editRenderState(const QUuid& uid, const std::string& state, } } -const QVariantMap PointerManager::getPrevRayPickResult(const QUuid& uid) const { +const QVariantMap PointerManager::getPrevPickResult(const QUuid& uid) const { auto pointer = find(uid); if (pointer) { return pointer->getPrevPickResult(); diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 1841e66f7b..db08199949 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -30,7 +30,7 @@ public: void disablePointer(const QUuid& uid) const; void setRenderState(const QUuid& uid, const std::string& renderState) const; void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; - const QVariantMap getPrevRayPickResult(const QUuid& uid) const; + const QVariantMap getPrevPickResult(const QUuid& uid) const; void setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const; void setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const; diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 2deef5f9fa..3bc423450e 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -252,7 +252,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); length: 1000 }; - if (rayPicks[h].type === RayPick.INTERSECTED_ENTITY) { + if (rayPicks[h].type === Picks.INTERSECTED_ENTITY) { // XXX check to make sure this one isn't already in nearbyEntityProperties? if (rayPicks[h].distance < NEAR_GRAB_PICK_RADIUS * sensorScaleFactor) { var nearEntityID = rayPicks[h].objectID; @@ -390,35 +390,35 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); this.leftControllerRayPick = RayPick.createRayPick({ joint: "_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS, + filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, enabled: true, maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true) }); this.leftControllerHudRayPick = RayPick.createRayPick({ joint: "_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_HUD, + filter: Picks.PICK_HUD, enabled: true, maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true) }); this.rightControllerRayPick = RayPick.createRayPick({ joint: "_CONTROLLER_RIGHTHAND", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS, + filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, enabled: true, maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true) }); this.rightControllerHudRayPick = RayPick.createRayPick({ joint: "_CONTROLLER_RIGHTHAND", - filter: RayPick.PICK_HUD, + filter: Picks.PICK_HUD, enabled: true, maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true) }); this.mouseRayPick = RayPick.createRayPick({ joint: "Mouse", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS, + filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, enabled: true }); diff --git a/scripts/system/controllers/controllerModules/farActionGrabEntity.js b/scripts/system/controllers/controllerModules/farActionGrabEntity.js index 2ef7b1efeb..79a7b70bae 100644 --- a/scripts/system/controllers/controllerModules/farActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/farActionGrabEntity.js @@ -376,8 +376,8 @@ Script.include("/~/system/libraries/controllers.js"); var entityType = entityProperty.type; var hudRayPick = controllerData.hudRayPicks[this.hand]; var point2d = this.calculateNewReticlePosition(hudRayPick.intersection); - if ((intersection.type === RayPick.INTERSECTED_ENTITY && entityType === "Web") || - intersection.type === RayPick.INTERSECTED_OVERLAY || Window.isPointOnDesktopWindow(point2d)) { + if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web") || + intersection.type === Picks.INTERSECTED_OVERLAY || Window.isPointOnDesktopWindow(point2d)) { return true; } return false; @@ -497,7 +497,7 @@ Script.include("/~/system/libraries/controllers.js"); } var rayPickInfo = controllerData.rayPicks[this.hand]; - if (rayPickInfo.type === RayPick.INTERSECTED_ENTITY) { + if (rayPickInfo.type === Picks.INTERSECTED_ENTITY) { if (controllerData.triggerClicks[this.hand]) { var entityID = rayPickInfo.objectID; var targetProps = Entities.getEntityProperties(entityID, [ @@ -581,7 +581,7 @@ Script.include("/~/system/libraries/controllers.js"); this.fullEnd = fullEnd; this.laserPointer = LaserPointers.createLaserPointer({ joint: (this.hand === RIGHT_HAND) ? "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND" : "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS, + filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, maxDistance: PICK_MAX_DISTANCE, posOffset: getGrabPointSphereOffset(this.handToController(), true), renderStates: renderStates, diff --git a/scripts/system/controllers/controllerModules/farTrigger.js b/scripts/system/controllers/controllerModules/farTrigger.js index a683044e6e..7975889bc8 100644 --- a/scripts/system/controllers/controllerModules/farTrigger.js +++ b/scripts/system/controllers/controllerModules/farTrigger.js @@ -196,7 +196,7 @@ Script.include("/~/system/libraries/controllers.js"); this.fullEnd = fullEnd; this.laserPointer = LaserPointers.createLaserPointer({ joint: (this.hand === RIGHT_HAND) ? "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND" : "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS, + filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, maxDistance: PICK_MAX_DISTANCE, posOffset: getGrabPointSphereOffset(this.handToController(), true), renderStates: renderStates, diff --git a/scripts/system/controllers/controllerModules/hudOverlayPointer.js b/scripts/system/controllers/controllerModules/hudOverlayPointer.js index fe1dedefb8..d579ce2611 100644 --- a/scripts/system/controllers/controllerModules/hudOverlayPointer.js +++ b/scripts/system/controllers/controllerModules/hudOverlayPointer.js @@ -216,7 +216,7 @@ this.fullEnd = fullEnd; this.laserPointer = LaserPointers.createLaserPointer({ joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_HUD, + filter: Picks.PICK_HUD, maxDistance: PICK_MAX_DISTANCE, posOffset: getGrabPointSphereOffset(this.handToController(), true), renderStates: renderStates, diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index 5049185827..34247b1d9d 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -153,12 +153,12 @@ Script.include("/~/system/libraries/utils.js"); this.sendPickData = function(controllerData) { if (controllerData.triggerClicks[this.hand] && !this.triggerClicked) { var intersection = controllerData.rayPicks[this.hand]; - if (intersection.type === RayPick.INTERSECTED_ENTITY) { + if (intersection.type === Picks.INTERSECTED_ENTITY) { Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({ method: "selectEntity", entityID: intersection.objectID })); - } else if (intersection.type === RayPick.INTERSECTED_OVERLAY) { + } else if (intersection.type === Picks.INTERSECTED_OVERLAY) { Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({ method: "selectOverlay", overlayID: intersection.objectID @@ -243,7 +243,7 @@ Script.include("/~/system/libraries/utils.js"); this.laserPointer = LaserPointers.createLaserPointer({ joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS, + filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, maxDistance: PICK_MAX_DISTANCE, posOffset: getGrabPointSphereOffset(this.handToController(), true), renderStates: renderStates, diff --git a/scripts/system/controllers/controllerModules/overlayLaserInput.js b/scripts/system/controllers/controllerModules/overlayLaserInput.js index 7c86a01c5d..0747985c7b 100644 --- a/scripts/system/controllers/controllerModules/overlayLaserInput.js +++ b/scripts/system/controllers/controllerModules/overlayLaserInput.js @@ -301,7 +301,7 @@ Script.include("/~/system/libraries/controllers.js"); this.shouldExit = function(controllerData) { var intersection = controllerData.rayPicks[this.hand]; - var offOverlay = (intersection.type !== RayPick.INTERSECTED_OVERLAY); + var offOverlay = (intersection.type !== Picks.INTERSECTED_OVERLAY); var triggerOff = (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE); if (triggerOff) { this.deleteContextOverlay(); @@ -375,7 +375,7 @@ Script.include("/~/system/libraries/controllers.js"); this.fullEnd = fullEnd; this.laserPointer = LaserPointers.createLaserPointer({ joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_OVERLAYS, + filter: Picks.PICK_OVERLAYS, maxDistance: PICK_MAX_DISTANCE, posOffset: getGrabPointSphereOffset(this.handToController(), true), renderStates: renderStates, diff --git a/scripts/system/controllers/controllerModules/teleport.js b/scripts/system/controllers/controllerModules/teleport.js index 86ad9c56ca..1fb867675e 100644 --- a/scripts/system/controllers/controllerModules/teleport.js +++ b/scripts/system/controllers/controllerModules/teleport.js @@ -149,7 +149,7 @@ Script.include("/~/system/libraries/controllers.js"); this.teleportRayHandVisible = LaserPointers.createLaserPointer({ joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand", - filter: RayPick.PICK_ENTITIES, + filter: Picks.PICK_ENTITIES, faceAvatar: true, centerEndY: false, renderStates: teleportRenderStates, @@ -157,14 +157,14 @@ Script.include("/~/system/libraries/controllers.js"); }); this.teleportRayHandInvisible = LaserPointers.createLaserPointer({ joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_INCLUDE_INVISIBLE, + filter: Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_INVISIBLE, faceAvatar: true, centerEndY: false, renderStates: teleportRenderStates }); this.teleportRayHeadVisible = LaserPointers.createLaserPointer({ joint: "Avatar", - filter: RayPick.PICK_ENTITIES, + filter: Picks.PICK_ENTITIES, faceAvatar: true, centerEndY: false, renderStates: teleportRenderStates, @@ -172,7 +172,7 @@ Script.include("/~/system/libraries/controllers.js"); }); this.teleportRayHeadInvisible = LaserPointers.createLaserPointer({ joint: "Avatar", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_INCLUDE_INVISIBLE, + filter: Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_INVISIBLE, faceAvatar: true, centerEndY: false, renderStates: teleportRenderStates @@ -397,7 +397,7 @@ Script.include("/~/system/libraries/controllers.js"); // you can't teleport there. var MAX_ANGLE_FROM_UP_TO_TELEPORT = 70; function getTeleportTargetType(result) { - if (result.type === RayPick.INTERSECTED_NONE) { + if (result.type === Picks.INTERSECTED_NONE) { return TARGET.NONE; } diff --git a/scripts/system/controllers/controllerModules/webEntityLaserInput.js b/scripts/system/controllers/controllerModules/webEntityLaserInput.js index 339f248547..0076e1c865 100644 --- a/scripts/system/controllers/controllerModules/webEntityLaserInput.js +++ b/scripts/system/controllers/controllerModules/webEntityLaserInput.js @@ -386,7 +386,7 @@ Script.include("/~/system/libraries/controllers.js"); var entityProperty = Entities.getEntityProperties(intersection.objectID); var entityType = entityProperty.type; - if ((intersection.type === RayPick.INTERSECTED_ENTITY && entityType === "Web")) { + if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web")) { return true; } return false; @@ -454,7 +454,7 @@ Script.include("/~/system/libraries/controllers.js"); this.laserPointer = LaserPointers.createLaserPointer({ joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: RayPick.PICK_ENTITIES, + filter: Picks.PICK_ENTITIES, maxDistance: PICK_MAX_DISTANCE, posOffset: getGrabPointSphereOffset(this.handToController(), true), renderStates: renderStates, diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index a1846e7ad7..7e575e38b0 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -260,14 +260,14 @@ function Grabber() { this.mouseRayOverlays = RayPick.createRayPick({ joint: "Mouse", - filter: RayPick.PICK_OVERLAYS, + filter: Picks.PICK_OVERLAYS, enabled: true }); RayPick.setIncludeItems(this.mouseRayOverlays, [HMD.tabletID, HMD.tabletScreenID, HMD.homeButtonID]); var renderStates = [{name: "grabbed", end: beacon}]; this.mouseRayEntities = LaserPointers.createLaserPointer({ joint: "Mouse", - filter: RayPick.PICK_ENTITIES, + filter: Picks.PICK_ENTITIES, faceAvatar: true, enabled: true, renderStates: renderStates @@ -321,12 +321,12 @@ Grabber.prototype.pressEvent = function(event) { } var overlayResult = RayPick.getPrevRayPickResult(this.mouseRayOverlays); - if (overlayResult.type != RayPick.INTERSECTED_NONE) { + if (overlayResult.type != Picks.INTERSECTED_NONE) { return; } var pickResults = LaserPointers.getPrevRayPickResult(this.mouseRayEntities); - if (pickResults.type == RayPick.INTERSECTED_NONE) { + if (pickResults.type == Picks.INTERSECTED_NONE) { LaserPointers.setRenderState(this.mouseRayEntities, ""); return; } diff --git a/scripts/system/libraries/touchEventUtils.js b/scripts/system/libraries/touchEventUtils.js index fbd56e16ae..7d19181c2a 100644 --- a/scripts/system/libraries/touchEventUtils.js +++ b/scripts/system/libraries/touchEventUtils.js @@ -130,7 +130,7 @@ function sendTouchMoveEventToTouchTarget(hand, touchTarget) { } function composeTouchTargetFromIntersection(intersection) { - var isEntity = (intersection.type === RayPick.INTERSECTED_ENTITY); + var isEntity = (intersection.type === Picks.INTERSECTED_ENTITY); var objectID = intersection.objectID; var worldPos = intersection.intersection; var props = null; From fd41299efc5e6ed42d2ec7f6336fc57dac2f86da Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 23 Oct 2017 22:34:22 +0200 Subject: [PATCH 026/187] Disable profile and custom user agent which broke nav bars --- interface/resources/qml/hifi/WebBrowser.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index 6a1d61de11..edd0523aa6 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -264,7 +264,7 @@ Rectangle { url: "http://www.highfidelity.com" - profile: HFWebEngineProfile; + //profile: HFWebEngineProfile; property string userScriptUrl: "" @@ -321,7 +321,7 @@ Rectangle { Component.onCompleted: { webChannel.registerObject("eventBridge", eventBridge); webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); - webEngineView.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; + //webEngineView.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; } onFeaturePermissionRequested: { From 874b9149e7a204eff07d5c48c637d6793e27f812 Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 24 Oct 2017 22:04:25 +0200 Subject: [PATCH 027/187] Popupd support reworked --- interface/resources/qml/hifi/WebBrowser.qml | 255 ++++++++++++-------- 1 file changed, 159 insertions(+), 96 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index edd0523aa6..c96d05d6a7 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -253,115 +253,178 @@ Rectangle { height: 2 } - HifiControls.BaseWebView { - id: webEngineView + Component { + id: webDialogComponent + Rectangle { + property alias webDialogView: webDialogView + color: "white" + HifiControls.BaseWebView { + id: webDialogView + anchors.fill: parent + + settings.autoLoadImages: true + settings.javascriptEnabled: true + settings.errorPageEnabled: true + settings.pluginsEnabled: true + settings.fullScreenSupportEnabled: true + settings.autoLoadIconsForPage: true + settings.touchIconsEnabled: true + + onWindowCloseRequested: { + webDialog.active = false + webDialog.request = null + } + } + } + } + + Item { width: parent.width; property real webViewHeight: root.height - loadProgressBar.height - 48 - 4 height: keyboardEnabled && keyboardRaised ? webViewHeight - keyboard.height : webViewHeight - focus: true - objectName: "tabletWebEngineView" + HifiControls.BaseWebView { + id: webEngineView + anchors.fill: parent - url: "http://www.highfidelity.com" + focus: true + objectName: "tabletWebEngineView" - //profile: HFWebEngineProfile; + url: "https://www.highfidelity.com" - property string userScriptUrl: "" + //profile: HFWebEngineProfile; - onLoadingChanged: { - if (!loading) { - suggestionRequestTimer.stop() - addressBar.popup.close() + property string userScriptUrl: "" + + onLoadingChanged: { + if (!loading) { + suggestionRequestTimer.stop() + addressBar.popup.close() + } + } + + onLinkHovered: { + //TODO: change cursor shape? + console.error("hoveredUrl:", hoveredUrl) + } + + // creates a global EventBridge object. + WebEngineScript { + id: createGlobalEventBridge + sourceCode: eventBridgeJavaScriptToInject + injectionPoint: WebEngineScript.DocumentCreation + worldId: WebEngineScript.MainWorld + } + + // detects when to raise and lower virtual keyboard + WebEngineScript { + id: raiseAndLowerKeyboard + injectionPoint: WebEngineScript.Deferred + sourceUrl: resourceDirectoryUrl + "/html/raiseAndLowerKeyboard.js" + worldId: WebEngineScript.MainWorld + } + + // User script. + WebEngineScript { + id: userScript + sourceUrl: webEngineView.userScriptUrl + injectionPoint: WebEngineScript.DocumentReady // DOM ready but page load may not be finished. + worldId: WebEngineScript.MainWorld + } + + userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] + + settings.autoLoadImages: true + settings.javascriptEnabled: true + settings.errorPageEnabled: true + settings.pluginsEnabled: true + settings.fullScreenSupportEnabled: true + settings.autoLoadIconsForPage: true + settings.touchIconsEnabled: true + + onCertificateError: { + error.defer(); + } + + Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); + //webEngineView.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; + } + + onFeaturePermissionRequested: { + grantFeaturePermission(securityOrigin, feature, true); + } + + onNewViewRequested: { + console.error("new view requested:", request.destination) + if (request.destination == WebEngineView.NewViewInDialog) { + webDialog.request = request + webDialog.active = true + } else { + request.openIn(webEngineView); + } + } + + onRenderProcessTerminated: { + var status = ""; + switch (terminationStatus) { + case WebEngineView.NormalTerminationStatus: + status = "(normal exit)"; + break; + case WebEngineView.AbnormalTerminationStatus: + status = "(abnormal exit)"; + break; + case WebEngineView.CrashedTerminationStatus: + status = "(crashed)"; + break; + case WebEngineView.KilledTerminationStatus: + status = "(killed)"; + break; + } + + console.error("Render process exited with code " + exitCode + " " + status); + reloadTimer.running = true; + } + + onFullScreenRequested: { + console.error("FS requested:", request.destination) + if (request.toggleOn) { + webEngineView.state = "FullScreen"; + } else { + webEngineView.state = ""; + } + request.accept(); + } + + onWindowCloseRequested: { + console.error("window close requested:", request.destination) + } + + Timer { + id: reloadTimer + interval: 0 + running: false + repeat: false + onTriggered: webEngineView.reload() } } - onLinkHovered: { - //TODO: change cursor shape? - console.error("hoveredUrl:", hoveredUrl) - } + Loader { + id: webDialog + property WebEngineNewViewRequest request: null + anchors.fill: parent + anchors.margins: 10 - // creates a global EventBridge object. - WebEngineScript { - id: createGlobalEventBridge - sourceCode: eventBridgeJavaScriptToInject - injectionPoint: WebEngineScript.DocumentCreation - worldId: WebEngineScript.MainWorld - } - - // detects when to raise and lower virtual keyboard - WebEngineScript { - id: raiseAndLowerKeyboard - injectionPoint: WebEngineScript.Deferred - sourceUrl: resourceDirectoryUrl + "/html/raiseAndLowerKeyboard.js" - worldId: WebEngineScript.MainWorld - } - - // User script. - WebEngineScript { - id: userScript - sourceUrl: webEngineView.userScriptUrl - injectionPoint: WebEngineScript.DocumentReady // DOM ready but page load may not be finished. - worldId: WebEngineScript.MainWorld - } - - userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] - - settings.autoLoadImages: true - settings.javascriptEnabled: true - settings.errorPageEnabled: true - settings.pluginsEnabled: true - settings.fullScreenSupportEnabled: true - settings.autoLoadIconsForPage: true - settings.touchIconsEnabled: true - - onCertificateError: { - error.defer(); - } - - Component.onCompleted: { - webChannel.registerObject("eventBridge", eventBridge); - webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); - //webEngineView.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; - } - - onFeaturePermissionRequested: { - grantFeaturePermission(securityOrigin, feature, true); - } - - onNewViewRequested: { - request.openIn(webEngineView); - } - - onRenderProcessTerminated: { - var status = ""; - switch (terminationStatus) { - case WebEngineView.NormalTerminationStatus: - status = "(normal exit)"; - break; - case WebEngineView.AbnormalTerminationStatus: - status = "(abnormal exit)"; - break; - case WebEngineView.CrashedTerminationStatus: - status = "(crashed)"; - break; - case WebEngineView.KilledTerminationStatus: - status = "(killed)"; - break; + active: false + sourceComponent: webDialogComponent + onStatusChanged: { + if (Loader.Ready === status) { + focus = true + item.webDialogView.profile = webEngineView.profile + request.openIn(item.webDialogView) + } } - - print("Render process exited with code " + exitCode + " " + status); - reloadTimer.running = true; - } - - onWindowCloseRequested: { - } - - Timer { - id: reloadTimer - interval: 0 - running: false - repeat: false - onTriggered: webEngineView.reload() } } } From cf34fe334567c15114394047e2331eb0d2a094b8 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 25 Oct 2017 16:04:21 -0700 Subject: [PATCH 028/187] laserpointers generate pointerevents --- interface/src/Application.cpp | 2 + interface/src/raypick/LaserPointer.cpp | 114 ++++++++++++----- interface/src/raypick/LaserPointer.h | 19 ++- .../src/raypick/PickScriptingInterface.cpp | 22 ++++ .../src/raypick/PickScriptingInterface.h | 2 + .../src/raypick/PointerScriptingInterface.cpp | 27 +++- .../src/raypick/PointerScriptingInterface.h | 12 +- interface/src/ui/overlays/Overlays.cpp | 12 ++ interface/src/ui/overlays/Overlays.h | 2 +- .../src/controllers/UserInputMapper.h | 3 +- libraries/entities-renderer/CMakeLists.txt | 2 + .../src/EntityTreeRenderer.cpp | 10 ++ libraries/pointers/CMakeLists.txt | 2 +- libraries/pointers/src/pointers/Pick.cpp | 2 + libraries/pointers/src/pointers/Pick.h | 5 +- libraries/pointers/src/pointers/Pointer.cpp | 121 ++++++++++++++++++ libraries/pointers/src/pointers/Pointer.h | 49 ++++++- .../pointers/src/pointers/PointerManager.h | 18 ++- libraries/shared/src/PointerEvent.h | 5 +- scripts/defaultScripts.js | 2 +- 20 files changed, 375 insertions(+), 56 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 38e648ab72..1475eee59a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5919,6 +5919,8 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe qScriptRegisterMetaType(scriptEngine.data(), OverlayIDtoScriptValue, OverlayIDfromScriptValue); + DependencyManager::get()->registerMetaTypes(scriptEngine.data()); + // connect this script engines printedMessage signal to the global ScriptEngines these various messages connect(scriptEngine.data(), &ScriptEngine::printedMessage, DependencyManager::get().data(), &ScriptEngines::onPrintedMessage); diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 32c67be884..988f3023be 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -17,10 +17,10 @@ #include #include "PickScriptingInterface.h" -LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, +LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const PointerTriggers& triggers, const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled) : - Pointer(DependencyManager::get()->createRayPick(rayProps)), - _renderingEnabled(enabled), + Pointer(DependencyManager::get()->createRayPick(rayProps), enabled), + _triggers(triggers), _renderStates(renderStates), _defaultRenderStates(defaultRenderStates), _faceAvatar(faceAvatar), @@ -49,17 +49,9 @@ LaserPointer::~LaserPointer() { } } -void LaserPointer::enable() { - Pointer::enable(); - withWriteLock([&] { - _renderingEnabled = true; - }); -} - void LaserPointer::disable() { - Pointer::disable(); + Parent::disable(); withWriteLock([&] { - _renderingEnabled = false; if (!_currentRenderState.empty()) { if (_renderStates.find(_currentRenderState) != _renderStates.end()) { disableRenderState(_renderStates[_currentRenderState]); @@ -199,26 +191,37 @@ void LaserPointer::disableRenderState(const RenderState& renderState) { } } -void LaserPointer::update() { - // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts - withReadLock([&] { - QVariantMap prevRayPickResult = DependencyManager::get()->getPrevPickResult(_pickUID); - IntersectionType type = IntersectionType(prevRayPickResult["type"].toInt()); - PickRay pickRay = PickRay(prevRayPickResult["searchRay"].toMap()); - QUuid uid = prevRayPickResult["objectID"].toUuid(); - if (_renderingEnabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() && - (type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) { - float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult["distance"].toFloat(); - updateRenderState(_renderStates[_currentRenderState], type, distance, uid, pickRay, false); - disableRenderState(_defaultRenderStates[_currentRenderState].second); - } else if (_renderingEnabled && !_currentRenderState.empty() && _defaultRenderStates.find(_currentRenderState) != _defaultRenderStates.end()) { - disableRenderState(_renderStates[_currentRenderState]); - updateRenderState(_defaultRenderStates[_currentRenderState].second, IntersectionType::NONE, _defaultRenderStates[_currentRenderState].first, QUuid(), pickRay, true); - } else if (!_currentRenderState.empty()) { - disableRenderState(_renderStates[_currentRenderState]); - disableRenderState(_defaultRenderStates[_currentRenderState].second); +void LaserPointer::updateVisuals(const QVariantMap& prevRayPickResult) { + IntersectionType type = IntersectionType(prevRayPickResult["type"].toInt()); + PickRay pickRay = PickRay(prevRayPickResult["searchRay"].toMap()); + QUuid uid = prevRayPickResult["objectID"].toUuid(); + if (_enabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() && + (type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) { + float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult["distance"].toFloat(); + updateRenderState(_renderStates[_currentRenderState], type, distance, uid, pickRay, false); + disableRenderState(_defaultRenderStates[_currentRenderState].second); + } else if (_enabled && !_currentRenderState.empty() && _defaultRenderStates.find(_currentRenderState) != _defaultRenderStates.end()) { + disableRenderState(_renderStates[_currentRenderState]); + updateRenderState(_defaultRenderStates[_currentRenderState].second, IntersectionType::NONE, _defaultRenderStates[_currentRenderState].first, QUuid(), pickRay, true); + } else if (!_currentRenderState.empty()) { + disableRenderState(_renderStates[_currentRenderState]); + disableRenderState(_defaultRenderStates[_currentRenderState].second); + } +} + +Pointer::PickedObject LaserPointer::getHoveredObject(const QVariantMap& pickResult) { + return Pointer::PickedObject(pickResult["objectID"].toUuid(), IntersectionType(pickResult["type"].toUInt())); +} + +Pointer::Buttons LaserPointer::getPressedButtons() { + std::unordered_set toReturn; + for (const PointerTrigger& trigger : _triggers) { + // TODO: right now, LaserPointers don't support axes, only on/off buttons + if (trigger.getEndpoint()->peek() >= 1.0f) { + toReturn.insert(trigger.getButton()); } - }); + } + return toReturn; } void LaserPointer::setLength(const float length) { @@ -290,4 +293,53 @@ RenderState LaserPointer::buildRenderState(const QVariantMap& propMap) { } return RenderState(startID, pathID, endID); +} + +PointerEvent LaserPointer::buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const { + uint32_t id = 0; + glm::vec3 intersection = vec3FromVariant(pickResult["intersection"]); + glm::vec3 surfaceNormal = vec3FromVariant(pickResult["surfaceNormal"]); + glm::vec3 direction = -surfaceNormal; + IntersectionType type = IntersectionType(pickResult["type"].toUInt()); + glm::vec2 pos2D; + if (type == ENTITY) { + pos2D = projectOntoEntityXYPlane(uid, intersection); + } else if (type == OVERLAY) { + pos2D = projectOntoOverlayXYPlane(uid, intersection); + } + return PointerEvent(PointerEvent::Move, id, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); +} + +glm::vec2 LaserPointer::projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const { + glm::quat invRot = glm::inverse(rotation); + glm::vec3 localPos = invRot * (worldPos - position); + glm::vec3 invDimensions = glm::vec3(1.0f / dimensions.x, 1.0f / dimensions.y, 1.0f / dimensions.z); + + glm::vec3 normalizedPos = (localPos * invDimensions) + registrationPoint; + return glm::vec2(normalizedPos.x * dimensions.x, (1.0f - normalizedPos.y) * dimensions.y); +} + +glm::vec2 LaserPointer::projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos) const { + glm::vec3 position = vec3FromVariant(qApp->getOverlays().getProperty(overlayID, "position").value); + glm::quat rotation = quatFromVariant(qApp->getOverlays().getProperty(overlayID, "rotation").value); + glm::vec3 dimensions; + + float dpi = qApp->getOverlays().getProperty(overlayID, "dpi").value.toFloat(); + if (dpi > 0) { + // Calculate physical dimensions for web3d overlay from resolution and dpi; "dimensions" property is used as a scale. + glm::vec3 resolution = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "resolution").value), 1); + glm::vec3 scale = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "dimensions").value), 0.01f); + const float INCHES_TO_METERS = 1.0f / 39.3701f; + dimensions = (resolution * INCHES_TO_METERS / dpi) * scale; + } else { + dimensions = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "dimensions").value), 0.01); + } + + const glm::vec3 DEFAULT_REGISTRATION_POINT = glm::vec3(0.5f); + return projectOntoXYPlane(worldPos, position, rotation, dimensions, DEFAULT_REGISTRATION_POINT); +} + +glm::vec2 LaserPointer::projectOntoEntityXYPlane(const QUuid& entity, const glm::vec3& worldPos) const { + auto props = DependencyManager::get()->getEntityProperties(entity); + return projectOntoXYPlane(worldPos, props.getPosition(), props.getRotation(), props.getDimensions(), props.getRegistrationPoint()); } \ No newline at end of file diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index dd1ee6de57..fbe293ea75 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -49,16 +49,15 @@ private: }; class LaserPointer : public Pointer { - + using Parent = Pointer; public: typedef std::unordered_map RenderStateMap; typedef std::unordered_map> DefaultRenderStateMap; - LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, + LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const PointerTriggers& triggers, const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled); ~LaserPointer(); - void enable() override; void disable() override; void setRenderState(const std::string& state) override; @@ -68,12 +67,18 @@ public: void setLength(const float length) override; void setLockEndUUID(QUuid objectID, const bool isOverlay) override; - void update() override; + void updateVisuals(const QVariantMap& prevRayPickResult) override; + + PickedObject getHoveredObject(const QVariantMap& pickResult) override; + Pointer::Buttons getPressedButtons() override; static RenderState buildRenderState(const QVariantMap& propMap); +protected: + PointerEvent buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const override; + private: - bool _renderingEnabled; + PointerTriggers _triggers; float _laserLength { 0.0f }; std::string _currentRenderState { "" }; RenderStateMap _renderStates; @@ -88,6 +93,10 @@ private: void updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState); void disableRenderState(const RenderState& renderState); + glm::vec2 projectOntoEntityXYPlane(const QUuid& entity, const glm::vec3& worldPos) const; + glm::vec2 projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos) const; + glm::vec2 projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const; + }; #endif // hifi_LaserPointer_h diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 99f7ac2515..40f898e65d 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -17,6 +17,9 @@ #include "JointRayPick.h" #include "MouseRayPick.h" +#include +#include + QUuid PickScriptingInterface::createPick(const PickQuery::PickType type, const QVariant& properties) { switch (type) { case PickQuery::PickType::Ray: @@ -105,3 +108,22 @@ void PickScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue void PickScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) { DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } + +QScriptValue pickTypesToScriptValue(QScriptEngine* engine, const PickQuery::PickType& pickType) { + return pickType; +} + +void pickTypesFromScriptValue(const QScriptValue& object, PickQuery::PickType& pickType) { + pickType = static_cast(object.toUInt16()); +} + +void PickScriptingInterface::registerMetaTypes(QScriptEngine* engine) { + QScriptValue pickTypes = engine->newObject(); + auto metaEnum = QMetaEnum::fromType(); + for (int i = 0; i < PickQuery::PickType::NUM_PICK_TYPES; ++i) { + pickTypes.setProperty(metaEnum.key(i), metaEnum.value(i)); + } + engine->globalObject().setProperty("PickType", pickTypes); + + qScriptRegisterMetaType(engine, pickTypesToScriptValue, pickTypesFromScriptValue); +} \ No newline at end of file diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 462b64dbd1..7c2eeb1ffc 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -35,6 +35,8 @@ class PickScriptingInterface : public QObject, public Dependency { public: QUuid createRayPick(const QVariant& properties); + void registerMetaTypes(QScriptEngine* engine); + public slots: Q_INVOKABLE QUuid createPick(const PickQuery::PickType type, const QVariant& properties); Q_INVOKABLE void enablePick(const QUuid& uid); diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index 8a87721ad9..5ac209d295 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -21,7 +21,7 @@ void PointerScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptV DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } -QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType type, const QVariant& properties) const { +QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) const { switch (type) { case PickQuery::PickType::Ray: return createLaserPointer(properties); @@ -61,7 +61,7 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) LaserPointer::RenderStateMap renderStates; if (propertyMap["renderStates"].isValid()) { QList renderStateVariants = propertyMap["renderStates"].toList(); - for (QVariant& renderStateVariant : renderStateVariants) { + for (const QVariant& renderStateVariant : renderStateVariants) { if (renderStateVariant.isValid()) { QVariantMap renderStateMap = renderStateVariant.toMap(); if (renderStateMap["name"].isValid()) { @@ -75,7 +75,7 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) LaserPointer::DefaultRenderStateMap defaultRenderStates; if (propertyMap["defaultRenderStates"].isValid()) { QList renderStateVariants = propertyMap["defaultRenderStates"].toList(); - for (QVariant& renderStateVariant : renderStateVariants) { + for (const QVariant& renderStateVariant : renderStateVariants) { if (renderStateVariant.isValid()) { QVariantMap renderStateMap = renderStateVariant.toMap(); if (renderStateMap["name"].isValid() && renderStateMap["distance"].isValid()) { @@ -87,7 +87,26 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) } } - return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled)); + PointerTriggers triggers; + auto userInputMapper = DependencyManager::get(); + if (propertyMap["triggers"].isValid()) { + QList triggerVariants = propertyMap["triggers"].toList(); + for (const QVariant& triggerVariant : triggerVariants) { + if (triggerVariant.isValid()) { + QVariantMap triggerMap = triggerVariant.toMap(); + if (triggerMap["action"].isValid() && triggerMap["button"].isValid()) { + controller::Endpoint::Pointer endpoint = userInputMapper->endpointFor(controller::Input(triggerMap["action"].toUInt())); + if (endpoint) { + std::string button = triggerMap["button"].toString().toStdString(); + triggers.emplace_back(endpoint, button); + } + } + } + } + } + + return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, triggers, + faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled)); } void PointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const { diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h index de45826d48..cc2ffbc3cc 100644 --- a/interface/src/raypick/PointerScriptingInterface.h +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -22,13 +22,13 @@ public: QUuid createLaserPointer(const QVariant& properties) const; public slots: - Q_INVOKABLE QUuid createPointer(const PickQuery::PickType type, const QVariant& properties) const; + Q_INVOKABLE QUuid createPointer(const PickQuery::PickType& type, const QVariant& properties) const; Q_INVOKABLE void enablePointer(const QUuid& uid) const { DependencyManager::get()->enablePointer(uid); } Q_INVOKABLE void disablePointer(const QUuid& uid) const { DependencyManager::get()->disablePointer(uid); } Q_INVOKABLE void removePointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE QVariantMap getPrevPickResult(QUuid uid) const { return DependencyManager::get()->getPrevPickResult(uid); } + Q_INVOKABLE QVariantMap getPrevPickResult(const QUuid& uid) const { return DependencyManager::get()->getPrevPickResult(uid); } Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } @@ -37,6 +37,14 @@ public slots: Q_INVOKABLE void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } +signals: + void triggerBegin(const QUuid& id, const PointerEvent& pointerEvent); + void triggerContinue(const QUuid& id, const PointerEvent& pointerEvent); + void triggerEnd(const QUuid& id, const PointerEvent& pointerEvent); + void hoverBegin(const QUuid& id, const PointerEvent& pointerEvent); + void hoverContinue(const QUuid& id, const PointerEvent& pointerEvent); + void hoverEnd(const QUuid& id, const PointerEvent& pointerEvent); + }; #endif // hifi_PointerScriptingInterface_h diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index 5e5b9367a6..2645d3b061 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -37,10 +37,22 @@ #include "Web3DOverlay.h" #include +#include + Q_LOGGING_CATEGORY(trace_render_overlays, "trace.render.overlays") extern void initOverlay3DPipelines(render::ShapePlumber& plumber, bool depthTest = false); +Overlays::Overlays() { + auto pointerManager = DependencyManager::get(); + connect(pointerManager.data(), &PointerManager::hoverBeginOverlay, this, &Overlays::hoverEnterOverlay); + connect(pointerManager.data(), &PointerManager::hoverContinueOverlay, this, &Overlays::hoverOverOverlay); + connect(pointerManager.data(), &PointerManager::hoverEndOverlay, this, &Overlays::hoverLeaveOverlay); + connect(pointerManager.data(), &PointerManager::triggerBeginOverlay, this, &Overlays::mousePressOnOverlay); + connect(pointerManager.data(), &PointerManager::triggerContinueOverlay, this, &Overlays::mouseMoveOnOverlay); + connect(pointerManager.data(), &PointerManager::triggerEndOverlay, this, &Overlays::mouseReleaseOnOverlay); +} + void Overlays::cleanupAllOverlays() { QMap overlaysHUD; QMap overlaysWorld; diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index 732a437eae..67d2537640 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -85,7 +85,7 @@ class Overlays : public QObject { Q_PROPERTY(OverlayID keyboardFocusOverlay READ getKeyboardFocusOverlay WRITE setKeyboardFocusOverlay) public: - Overlays() {}; + Overlays(); void init(); void update(float deltatime); diff --git a/libraries/controllers/src/controllers/UserInputMapper.h b/libraries/controllers/src/controllers/UserInputMapper.h index 0c8bb51008..5fd21e6299 100644 --- a/libraries/controllers/src/controllers/UserInputMapper.h +++ b/libraries/controllers/src/controllers/UserInputMapper.h @@ -129,6 +129,8 @@ namespace controller { template void withLock(F&& f) { Locker locker(_lock); f(); } + EndpointPointer endpointFor(const Input& endpoint) const; + signals: void actionEvent(int action, float state); void inputEvent(int input, float state); @@ -161,7 +163,6 @@ namespace controller { void disableMapping(const MappingPointer& mapping); EndpointPointer endpointFor(const QJSValue& endpoint); EndpointPointer endpointFor(const QScriptValue& endpoint); - EndpointPointer endpointFor(const Input& endpoint) const; EndpointPointer compositeEndpointFor(EndpointPointer first, EndpointPointer second); ConditionalPointer conditionalFor(const QJSValue& endpoint); ConditionalPointer conditionalFor(const QScriptValue& endpoint); diff --git a/libraries/entities-renderer/CMakeLists.txt b/libraries/entities-renderer/CMakeLists.txt index 40111e257b..35301e93d6 100644 --- a/libraries/entities-renderer/CMakeLists.txt +++ b/libraries/entities-renderer/CMakeLists.txt @@ -12,6 +12,8 @@ include_hifi_library_headers(animation) include_hifi_library_headers(fbx) include_hifi_library_headers(entities) include_hifi_library_headers(avatars) +include_hifi_library_headers(pointers) +include_hifi_library_headers(controllers) target_bullet() diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 4238eb4050..c63079b020 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -35,6 +35,8 @@ #include "EntitiesRendererLogging.h" #include "RenderableEntityItem.h" +#include + size_t std::hash::operator()(const EntityItemID& id) const { return qHash(id); } std::function EntityTreeRenderer::_entitiesShouldFadeFunction; @@ -55,6 +57,14 @@ EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterf EntityRenderer::initEntityRenderers(); _currentHoverOverEntityID = UNKNOWN_ENTITY_ID; _currentClickingOnEntityID = UNKNOWN_ENTITY_ID; + + auto pointerManager = DependencyManager::get(); + connect(pointerManager.data(), &PointerManager::hoverBeginEntity, this, &EntityTreeRenderer::hoverEnterEntity); + connect(pointerManager.data(), &PointerManager::hoverContinueEntity, this, &EntityTreeRenderer::hoverOverEntity); + connect(pointerManager.data(), &PointerManager::hoverEndEntity, this, &EntityTreeRenderer::hoverLeaveEntity); + connect(pointerManager.data(), &PointerManager::triggerBeginEntity, this, &EntityTreeRenderer::mousePressOnEntity); + connect(pointerManager.data(), &PointerManager::triggerContinueEntity, this, &EntityTreeRenderer::mouseMoveOnEntity); + connect(pointerManager.data(), &PointerManager::triggerEndEntity, this, &EntityTreeRenderer::mouseReleaseOnEntity); } EntityTreeRenderer::~EntityTreeRenderer() { diff --git a/libraries/pointers/CMakeLists.txt b/libraries/pointers/CMakeLists.txt index 504484574c..e33c76e249 100644 --- a/libraries/pointers/CMakeLists.txt +++ b/libraries/pointers/CMakeLists.txt @@ -1,5 +1,5 @@ set(TARGET_NAME pointers) setup_hifi_library() GroupSources(src) -link_hifi_libraries(shared) +link_hifi_libraries(shared controllers) diff --git a/libraries/pointers/src/pointers/Pick.cpp b/libraries/pointers/src/pointers/Pick.cpp index 4e48bc906b..4315409bdb 100644 --- a/libraries/pointers/src/pointers/Pick.cpp +++ b/libraries/pointers/src/pointers/Pick.cpp @@ -9,6 +9,8 @@ const PickFilter PickFilter::NOTHING; +int pickTypeMetaTypeId = qRegisterMetaType("PickType"); + PickQuery::PickQuery(const PickFilter& filter, const float maxDistance, const bool enabled) : _filter(filter), _maxDistance(maxDistance), diff --git a/libraries/pointers/src/pointers/Pick.h b/libraries/pointers/src/pointers/Pick.h index 5dcaba2bb8..9ab17f87d8 100644 --- a/libraries/pointers/src/pointers/Pick.h +++ b/libraries/pointers/src/pointers/Pick.h @@ -136,7 +136,9 @@ public: enum PickType { Ray = 0, - Stylus + Stylus, + + NUM_PICK_TYPES }; Q_ENUM(PickType) @@ -189,6 +191,7 @@ private: QVector _ignoreItems; QVector _includeItems; }; +Q_DECLARE_METATYPE(PickQuery::PickType) template class Pick : public PickQuery { diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 6ba8c6072c..1ee725645f 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -9,6 +9,7 @@ #include #include "PickManager.h" +#include "PointerManager.h" Pointer::~Pointer() { DependencyManager::get()->removePick(_pickUID); @@ -16,10 +17,16 @@ Pointer::~Pointer() { void Pointer::enable() { DependencyManager::get()->enablePick(_pickUID); + withWriteLock([&] { + _enabled = true; + }); } void Pointer::disable() { DependencyManager::get()->disablePick(_pickUID); + withWriteLock([&] { + _enabled = false; + }); } const QVariantMap Pointer::getPrevPickResult() { @@ -36,4 +43,118 @@ void Pointer::setIgnoreItems(const QVector& ignoreItems) const { void Pointer::setIncludeItems(const QVector& includeItems) const { DependencyManager::get()->setIncludeItems(_pickUID, includeItems); +} + +void Pointer::update() { + // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts + withReadLock([&] { + QVariantMap pickResult = getPrevPickResult(); + updateVisuals(pickResult); + generatePointerEvents(pickResult); + }); +} + +void Pointer::generatePointerEvents(const QVariantMap& pickResult) { + // TODO: avatars/HUD? + auto pointerManager = DependencyManager::get(); + + // Hover events + Pointer::PickedObject hoveredObject = getHoveredObject(pickResult); + PointerEvent hoveredEvent = buildPointerEvent(hoveredObject.objectID, pickResult); + hoveredEvent.setType(PointerEvent::Move); + hoveredEvent.setButton(PointerEvent::NoButtons); + if (_enabled) { + if (hoveredObject.type == OVERLAY) { + if (_prevHoveredObject.type == OVERLAY) { + if (hoveredObject.objectID == _prevHoveredObject.objectID) { + emit pointerManager->hoverContinueOverlay(hoveredObject.objectID, hoveredEvent); + } else { + PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject.objectID, pickResult); + emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, prevHoveredEvent); + emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); + } + } else { + emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); + if (_prevHoveredObject.type == ENTITY) { + emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); + } + } + } + + // TODO: this is basically repeated code. is there a way to clean it up? + if (hoveredObject.type == ENTITY) { + if (_prevHoveredObject.type == ENTITY) { + if (hoveredObject.objectID == _prevHoveredObject.objectID) { + emit pointerManager->hoverContinueEntity(hoveredObject.objectID, hoveredEvent); + } else { + PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject.objectID, pickResult); + emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, prevHoveredEvent); + emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); + } + } else { + emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); + if (_prevHoveredObject.type == OVERLAY) { + emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); + } + } + } + } + + // Trigger events + Buttons buttons; + Buttons newButtons; + Buttons sameButtons; + // NOTE: After this loop: _prevButtons = buttons that were removed + // If !_enabled, release all buttons + if (_enabled) { + buttons = getPressedButtons(); + for (const std::string& button : buttons) { + if (_prevButtons.find(button) == _prevButtons.end()) { + newButtons.insert(button); + } else { + sameButtons.insert(button); + _prevButtons.erase(button); + } + } + } + + // Trigger begin + for (const std::string& button : newButtons) { + hoveredEvent.setType(PointerEvent::Press); + hoveredEvent.setButton(PointerEvent::PrimaryButton); + if (hoveredObject.type == ENTITY) { + emit pointerManager->triggerBeginEntity(hoveredObject.objectID, hoveredEvent); + } else if (hoveredObject.type == OVERLAY) { + emit pointerManager->triggerBeginOverlay(hoveredObject.objectID, hoveredEvent); + } + _triggeredObjects[button] = hoveredObject; + } + + // Trigger continue + for (const std::string& button : sameButtons) { + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button].objectID, pickResult); + triggeredEvent.setType(PointerEvent::Move); + triggeredEvent.setButton(PointerEvent::PrimaryButton); + if (_triggeredObjects[button].type == ENTITY) { + emit pointerManager->triggerContinueEntity(_triggeredObjects[button].objectID, triggeredEvent); + } else if (_triggeredObjects[button].type == OVERLAY) { + emit pointerManager->triggerContinueOverlay(_triggeredObjects[button].objectID, triggeredEvent); + } + } + + // Trigger end + for (const std::string& button : _prevButtons) { + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button].objectID, pickResult); + triggeredEvent.setType(PointerEvent::Release); + triggeredEvent.setButton(PointerEvent::PrimaryButton); + if (_triggeredObjects[button].type == ENTITY) { + emit pointerManager->triggerEndEntity(_triggeredObjects[button].objectID, triggeredEvent); + } else if (_triggeredObjects[button].type == OVERLAY) { + emit pointerManager->triggerEndOverlay(_triggeredObjects[button].objectID, triggeredEvent); + } + _triggeredObjects.erase(button); + } + + _prevHoveredObject = hoveredObject; + _prevButtons = buttons; } \ No newline at end of file diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index 4a105f8a92..4e965cd73c 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -8,15 +8,37 @@ #ifndef hifi_Pointer_h #define hifi_Pointer_h +#include +#include + #include #include #include #include +#include +#include "PointerEvent.h" + +#include "Pick.h" + +class PointerTrigger { +public: + PointerTrigger(controller::Endpoint::Pointer endpoint, const std::string& button) : _endpoint(endpoint), _button(button) {} + + controller::Endpoint::Pointer getEndpoint() const { return _endpoint; } + const std::string& getButton() const { return _button; } + +private: + controller::Endpoint::Pointer _endpoint; + std::string _button { "" }; +}; + +using PointerTriggers = std::vector; + class Pointer : protected ReadWriteLockable { public: - Pointer(const QUuid& uid) : _pickUID(uid) {} + Pointer(const QUuid& uid, bool enabled) : _pickUID(uid), _enabled(enabled) {} virtual ~Pointer(); @@ -35,12 +57,35 @@ public: virtual void setLength(const float length) {} virtual void setLockEndUUID(QUuid objectID, const bool isOverlay) {} - virtual void update() = 0; + void update(); + virtual void updateVisuals(const QVariantMap& pickResult) = 0; + void generatePointerEvents(const QVariantMap& pickResult); + + struct PickedObject { + PickedObject() {} + PickedObject(const QUuid& objectID, IntersectionType type) : objectID(objectID), type(type) {} + + QUuid objectID; + IntersectionType type; + } typedef PickedObject; + + using Buttons = std::unordered_set; + + virtual PickedObject getHoveredObject(const QVariantMap& pickResult) = 0; + virtual Buttons getPressedButtons() = 0; QUuid getRayUID() { return _pickUID; } protected: + bool _enabled; const QUuid _pickUID; + + virtual PointerEvent buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const = 0; + +private: + PickedObject _prevHoveredObject; + Buttons _prevButtons; + std::unordered_map _triggeredObjects; }; #endif // hifi_Pick_h diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 2ec5921e3c..6e13c09851 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -45,13 +45,19 @@ private: QHash> _pointers; signals: - void triggerBegin(const QUuid& id, const PointerEvent& pointerEvent); - void triggerContinue(const QUuid& id, const PointerEvent& pointerEvent); - void triggerEnd(const QUuid& id, const PointerEvent& pointerEvent); + void triggerBeginOverlay(const QUuid& id, const PointerEvent& pointerEvent); + void triggerContinueOverlay(const QUuid& id, const PointerEvent& pointerEvent); + void triggerEndOverlay(const QUuid& id, const PointerEvent& pointerEvent); + void hoverBeginOverlay(const QUuid& id, const PointerEvent& pointerEvent); + void hoverContinueOverlay(const QUuid& id, const PointerEvent& pointerEvent); + void hoverEndOverlay(const QUuid& id, const PointerEvent& pointerEvent); - void hoverEnter(const QUuid& id, const PointerEvent& pointerEvent); - void hoverOver(const QUuid& id, const PointerEvent& pointerEvent); - void hoverLeave(const QUuid& id, const PointerEvent& pointerEvent); + void triggerBeginEntity(const QUuid& id, const PointerEvent& pointerEvent); + void triggerContinueEntity(const QUuid& id, const PointerEvent& pointerEvent); + void triggerEndEntity(const QUuid& id, const PointerEvent& pointerEvent); + void hoverBeginEntity(const QUuid& id, const PointerEvent& pointerEvent); + void hoverContinueEntity(const QUuid& id, const PointerEvent& pointerEvent); + void hoverEndEntity(const QUuid& id, const PointerEvent& pointerEvent); }; #endif // hifi_pointers_PointerManager_h diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index ab77328fc1..63c063cd01 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -39,7 +39,7 @@ public: PointerEvent(EventType type, uint32_t id, const glm::vec2& pos2D, const glm::vec3& pos3D, const glm::vec3& normal, const glm::vec3& direction, - Button button, uint32_t buttons, Qt::KeyboardModifiers keyboardModifiers); + Button button, uint32_t buttons = NoButtons, Qt::KeyboardModifiers keyboardModifiers = Qt::KeyboardModifier::NoModifier); static QScriptValue toScriptValue(QScriptEngine* engine, const PointerEvent& event); static void fromScriptValue(const QScriptValue& object, PointerEvent& event); @@ -56,6 +56,9 @@ public: uint32_t getButtons() const { return _buttons; } Qt::KeyboardModifiers getKeyboardModifiers() const { return _keyboardModifiers; } + void setType(EventType type) { _type = type; } + void setButton(Button button) { _button = button; } + private: EventType _type; uint32_t _id; // used to identify the pointer. (left vs right hand, for example) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 61e520af21..1243ed28e2 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -32,7 +32,7 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/tablet-ui/tabletUI.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ - "system/controllers/controllerScripts.js" + //"system/controllers/controllerScripts.js" // "system/chat.js" ]; From 320ab2e68211fc5753de3e1e3b9b4d74cc502db4 Mon Sep 17 00:00:00 2001 From: vladest Date: Thu, 26 Oct 2017 21:14:44 +0200 Subject: [PATCH 029/187] Rework using StackView. Now backward takes in account popups as well --- interface/resources/qml/hifi/WebBrowser.qml | 356 ++++++++++---------- 1 file changed, 174 insertions(+), 182 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index c96d05d6a7..79932dbcdd 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -13,6 +13,7 @@ import QtQuick 2.7 import QtQuick.Controls 2.2 as QQControls import QtQuick.Layouts 1.3 +import QtGraphicalEffects 1.0 import QtWebEngine 1.5 import QtWebChannel 1.0 @@ -46,13 +47,13 @@ Rectangle { onSuggestions: { if (suggestions.length > 0) { suggestionsList = [] - suggestionsList.push(addressBarInput.text) //do not overwrite edit text + suggestionsList.push(addressBarInput.text); //do not overwrite edit text for(var i = 0; i < suggestions.length; i++) { - suggestionsList.push(suggestions[i]) + suggestionsList.push(suggestions[i]); } addressBar.model = suggestionsList if (!addressBar.popup.visible) { - addressBar.popup.open() + addressBar.popup.open(); } } } @@ -64,7 +65,7 @@ Rectangle { repeat: false onTriggered: { if (addressBar.editText !== "") { - searchEngine.requestSuggestions(addressBarInput.text) + searchEngine.requestSuggestions(addressBarInput.text); } } } @@ -83,9 +84,9 @@ Rectangle { } addressBar.model = [] - webEngineView.url = url - suggestionRequestTimer.stop() - addressBar.popup.close() + webStack.currentItem.webEngineView.url = url + suggestionRequestTimer.stop(); + addressBar.popup.close(); } Column { @@ -98,22 +99,26 @@ Rectangle { height: 48 HifiControls.WebGlyphButton { - enabled: webEngineView.canGoBack + enabled: webStack.currentItem.webEngineView.canGoBack || webStack.depth > 1 glyph: hifi.glyphs.backward; anchors.verticalCenter: parent.verticalCenter; size: 38; onClicked: { - webEngineView.goBack() + if (webStack.currentItem.webEngineView.canGoBack) { + webStack.currentItem.webEngineView.goBack(); + } else if (webStack.depth > 1) { + webStack.pop(); + } } } HifiControls.WebGlyphButton { - enabled: webEngineView.canGoForward + enabled: webStack.currentItem.webEngineView.canGoForward glyph: hifi.glyphs.forward; anchors.verticalCenter: parent.verticalCenter; size: 38; onClicked: { - webEngineView.goForward() + webStack.currentItem.webEngineView.goForward(); } } @@ -128,21 +133,21 @@ Rectangle { indicator: Item {} background: Item {} onActivated: { - goTo(textAt(index)) + goTo(textAt(index)); } - popup.height: webEngineView.height + popup.height: webStack.height onFocusChanged: { if (focus) { - addressBarInput.selectAll() + addressBarInput.selectAll(); } } contentItem: QQControls.TextField { id: addressBarInput leftPadding: 26 - rightPadding: hifi.dimensions.controlLineHeight + rightPadding: hifi.dimensions.controlLineHeight + 5 text: addressBar.editText placeholderText: qsTr("Enter URL") font: addressBar.font @@ -151,7 +156,7 @@ Rectangle { verticalAlignment: Text.AlignVCenter onFocusChanged: { if (focus) { - selectAll() + selectAll(); } } @@ -161,7 +166,7 @@ Rectangle { Keys.onPressed: { if (event.key === Qt.Key_Return) { - goTo(addressBarInput.text) + goTo(addressBarInput.text); event.accepted = true; } } @@ -173,58 +178,57 @@ Rectangle { id: faviconImage width: 16; height: 16 sourceSize: Qt.size(width, height) - source: webEngineView.icon - onSourceChanged: console.log("web icon", source) + source: webStack.currentItem.webEngineView.icon } HifiControls.WebGlyphButton { - glyph: webEngineView.loading ? hifi.glyphs.closeSmall : hifi.glyphs.reloadSmall; + glyph: webStack.currentItem.webEngineView.loading ? hifi.glyphs.closeSmall : hifi.glyphs.reloadSmall; anchors.verticalCenter: parent.verticalCenter; width: hifi.dimensions.controlLineHeight z: 2 x: addressBarInput.width - implicitWidth onClicked: { - if (webEngineView.loading) { - webEngineView.stop() + if (webStack.currentItem.webEngineView.loading) { + webStack.currentItem.webEngineView.stop(); } else { - reloadTimer.start() + webStack.currentItem.webEngineView.reloadTimer.start(); } } } } - Component.onCompleted: ScriptDiscoveryService.scriptsModelFilter.filterRegExp = new RegExp("^.*$", "i") + Component.onCompleted: ScriptDiscoveryService.scriptsModelFilter.filterRegExp = new RegExp("^.*$", "i"); Keys.onPressed: { if (event.key === Qt.Key_Return) { - goTo(addressBarInput.text) + goTo(addressBarInput.text); event.accepted = true; } } onEditTextChanged: { - if (addressBar.editText !== "" && addressBar.editText !== webEngineView.url.toString()) { + if (addressBar.editText !== "" && addressBar.editText !== webStack.currentItem.webEngineView.url.toString()) { suggestionRequestTimer.restart(); } else { addressBar.model = [] - addressBar.popup.close() + addressBar.popup.close(); } } Layout.fillWidth: true - editText: webEngineView.url - onAccepted: goTo(addressBarInput.text) + editText: webStack.currentItem.webEngineView.url + onAccepted: goTo(addressBarInput.text); } HifiControls.WebGlyphButton { checkable: true - checked: webEngineView.audioMuted + checked: webStack.currentItem.webEngineView.audioMuted glyph: checked ? hifi.glyphs.unmuted : hifi.glyphs.muted anchors.verticalCenter: parent.verticalCenter; width: hifi.dimensions.controlLineHeight onClicked: { - webEngineView.triggerWebAction(WebEngineView.ToggleMediaMute) + webStack.currentItem.webEngineView.triggerWebAction(WebEngineView.ToggleMediaMute); } } } @@ -249,18 +253,88 @@ Rectangle { width: parent.width; from: 0 to: 100 - value: webEngineView.loadProgress + value: webStack.currentItem.webEngineView.loadProgress height: 2 } Component { - id: webDialogComponent + id: webViewComponent Rectangle { - property alias webDialogView: webDialogView - color: "white" + property alias webEngineView: webEngineView + property WebEngineNewViewRequest request: null + + property bool isDialog: QQControls.StackView.index > 0 + property real margins: isDialog ? 10 : 0 + + color: "#d1d1d1" + + QQControls.StackView.onActivated: { + addressBar.editText = Qt.binding( function() { return webStack.currentItem.webEngineView.url; }); + } + + onRequestChanged: { + if (isDialog && request !== null && request !== undefined) {//is Dialog ? + request.openIn(webEngineView); + } + } + HifiControls.BaseWebView { - id: webDialogView + id: webEngineView anchors.fill: parent + anchors.margins: parent.margins + + layer.enabled: parent.isDialog + layer.effect: DropShadow { + verticalOffset: 8 + horizontalOffset: 8 + color: "#330066ff" + samples: 10 + spread: 0.5 + } + + focus: true + objectName: "tabletWebEngineView" + + //profile: HFWebEngineProfile; + + property string userScriptUrl: "" + + onLoadingChanged: { + if (!loading) { + suggestionRequestTimer.stop(); + addressBar.popup.close(); + } + } + + onLinkHovered: { + //TODO: change cursor shape? + } + + // creates a global EventBridge object. + WebEngineScript { + id: createGlobalEventBridge + sourceCode: eventBridgeJavaScriptToInject + injectionPoint: WebEngineScript.DocumentCreation + worldId: WebEngineScript.MainWorld + } + + // detects when to raise and lower virtual keyboard + WebEngineScript { + id: raiseAndLowerKeyboard + injectionPoint: WebEngineScript.Deferred + sourceUrl: resourceDirectoryUrl + "/html/raiseAndLowerKeyboard.js" + worldId: WebEngineScript.MainWorld + } + + // User script. + WebEngineScript { + id: userScript + sourceUrl: webEngineView.userScriptUrl + injectionPoint: WebEngineScript.DocumentReady // DOM ready but page load may not be finished. + worldId: WebEngineScript.MainWorld + } + + userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] settings.autoLoadImages: true settings.javascriptEnabled: true @@ -270,162 +344,80 @@ Rectangle { settings.autoLoadIconsForPage: true settings.touchIconsEnabled: true + onCertificateError: { + error.defer(); + } + + Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); + //webEngineView.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; + } + + onFeaturePermissionRequested: { + grantFeaturePermission(securityOrigin, feature, true); + } + + onNewViewRequested: { + if (request.destination == WebEngineView.NewViewInDialog) { + webStack.push(webViewComponent, {"request": request}); + } else { + request.openIn(webEngineView); + } + } + + onRenderProcessTerminated: { + var status = ""; + switch (terminationStatus) { + case WebEngineView.NormalTerminationStatus: + status = "(normal exit)"; + break; + case WebEngineView.AbnormalTerminationStatus: + status = "(abnormal exit)"; + break; + case WebEngineView.CrashedTerminationStatus: + status = "(crashed)"; + break; + case WebEngineView.KilledTerminationStatus: + status = "(killed)"; + break; + } + + console.error("Render process exited with code " + exitCode + " " + status); + reloadTimer.running = true; + } + + onFullScreenRequested: { + if (request.toggleOn) { + webEngineView.state = "FullScreen"; + } else { + webEngineView.state = ""; + } + request.accept(); + } + onWindowCloseRequested: { - webDialog.active = false - webDialog.request = null + webStack.pop(); + } + + Timer { + id: reloadTimer + interval: 0 + running: false + repeat: false + onTriggered: webEngineView.reload() } } } } - Item { + QQControls.StackView { + id: webStack width: parent.width; property real webViewHeight: root.height - loadProgressBar.height - 48 - 4 height: keyboardEnabled && keyboardRaised ? webViewHeight - keyboard.height : webViewHeight - HifiControls.BaseWebView { - id: webEngineView - anchors.fill: parent - - focus: true - objectName: "tabletWebEngineView" - - url: "https://www.highfidelity.com" - - //profile: HFWebEngineProfile; - - property string userScriptUrl: "" - - onLoadingChanged: { - if (!loading) { - suggestionRequestTimer.stop() - addressBar.popup.close() - } - } - - onLinkHovered: { - //TODO: change cursor shape? - console.error("hoveredUrl:", hoveredUrl) - } - - // creates a global EventBridge object. - WebEngineScript { - id: createGlobalEventBridge - sourceCode: eventBridgeJavaScriptToInject - injectionPoint: WebEngineScript.DocumentCreation - worldId: WebEngineScript.MainWorld - } - - // detects when to raise and lower virtual keyboard - WebEngineScript { - id: raiseAndLowerKeyboard - injectionPoint: WebEngineScript.Deferred - sourceUrl: resourceDirectoryUrl + "/html/raiseAndLowerKeyboard.js" - worldId: WebEngineScript.MainWorld - } - - // User script. - WebEngineScript { - id: userScript - sourceUrl: webEngineView.userScriptUrl - injectionPoint: WebEngineScript.DocumentReady // DOM ready but page load may not be finished. - worldId: WebEngineScript.MainWorld - } - - userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] - - settings.autoLoadImages: true - settings.javascriptEnabled: true - settings.errorPageEnabled: true - settings.pluginsEnabled: true - settings.fullScreenSupportEnabled: true - settings.autoLoadIconsForPage: true - settings.touchIconsEnabled: true - - onCertificateError: { - error.defer(); - } - - Component.onCompleted: { - webChannel.registerObject("eventBridge", eventBridge); - webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); - //webEngineView.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; - } - - onFeaturePermissionRequested: { - grantFeaturePermission(securityOrigin, feature, true); - } - - onNewViewRequested: { - console.error("new view requested:", request.destination) - if (request.destination == WebEngineView.NewViewInDialog) { - webDialog.request = request - webDialog.active = true - } else { - request.openIn(webEngineView); - } - } - - onRenderProcessTerminated: { - var status = ""; - switch (terminationStatus) { - case WebEngineView.NormalTerminationStatus: - status = "(normal exit)"; - break; - case WebEngineView.AbnormalTerminationStatus: - status = "(abnormal exit)"; - break; - case WebEngineView.CrashedTerminationStatus: - status = "(crashed)"; - break; - case WebEngineView.KilledTerminationStatus: - status = "(killed)"; - break; - } - - console.error("Render process exited with code " + exitCode + " " + status); - reloadTimer.running = true; - } - - onFullScreenRequested: { - console.error("FS requested:", request.destination) - if (request.toggleOn) { - webEngineView.state = "FullScreen"; - } else { - webEngineView.state = ""; - } - request.accept(); - } - - onWindowCloseRequested: { - console.error("window close requested:", request.destination) - } - - Timer { - id: reloadTimer - interval: 0 - running: false - repeat: false - onTriggered: webEngineView.reload() - } - } - - Loader { - id: webDialog - property WebEngineNewViewRequest request: null - anchors.fill: parent - anchors.margins: 10 - - active: false - sourceComponent: webDialogComponent - onStatusChanged: { - if (Loader.Ready === status) { - focus = true - item.webDialogView.profile = webEngineView.profile - request.openIn(item.webDialogView) - } - } - } + Component.onCompleted: webStack.push(webViewComponent, {"webEngineView.url": "https://www.highfidelity.com"}); } } From 7951826e4961896274e2aa12d045eea1898be864 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 26 Oct 2017 16:10:27 -0700 Subject: [PATCH 030/187] more advanced laser focusing --- interface/src/Application.cpp | 14 +++++---- interface/src/raypick/LaserPointer.cpp | 14 --------- interface/src/raypick/LaserPointer.h | 2 -- .../src/raypick/RayPickScriptingInterface.cpp | 1 - .../src/raypick/RayPickScriptingInterface.h | 31 +++++++++++++++++++ interface/src/ui/overlays/Overlays.cpp | 8 +++-- libraries/pointers/src/pointers/Pointer.cpp | 2 ++ libraries/pointers/src/pointers/Pointer.h | 2 +- libraries/shared/src/PointerEvent.h | 4 +++ 9 files changed, 51 insertions(+), 27 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 991d9eaecd..0db422953f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1472,13 +1472,15 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // If the user clicks an an entity, we will check that it's an unlocked web entity, and if so, set the focus to it auto entityScriptingInterface = DependencyManager::get(); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickDownOnEntity, + connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, [this](const EntityItemID& entityItemID, const PointerEvent& event) { - if (getEntities()->wantsKeyboardFocus(entityItemID)) { - setKeyboardFocusOverlay(UNKNOWN_OVERLAY_ID); - setKeyboardFocusEntity(entityItemID); - } else { - setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); + if (event.shouldFocus()) { + if (getEntities()->wantsKeyboardFocus(entityItemID)) { + setKeyboardFocusOverlay(UNKNOWN_OVERLAY_ID); + setKeyboardFocusEntity(entityItemID); + } else { + setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); + } } }); diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 988f3023be..b8122a2388 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -49,20 +49,6 @@ LaserPointer::~LaserPointer() { } } -void LaserPointer::disable() { - Parent::disable(); - withWriteLock([&] { - if (!_currentRenderState.empty()) { - if (_renderStates.find(_currentRenderState) != _renderStates.end()) { - disableRenderState(_renderStates[_currentRenderState]); - } - if (_defaultRenderStates.find(_currentRenderState) != _defaultRenderStates.end()) { - disableRenderState(_defaultRenderStates[_currentRenderState].second); - } - } - }); -} - void LaserPointer::setRenderState(const std::string& state) { withWriteLock([&] { if (!_currentRenderState.empty() && state != _currentRenderState) { diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index fbe293ea75..167de88385 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -58,8 +58,6 @@ public: const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled); ~LaserPointer(); - void disable() override; - void setRenderState(const std::string& state) override; // You cannot use editRenderState to change the overlay type of any part of the laser pointer. You can only edit the properties of the existing overlays. void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) override; diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index b89f89aab5..92bf3ec521 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -14,7 +14,6 @@ #include #include "GLMHelpers.h" -#include "PickScriptingInterface.h" #include #include "StaticRayPick.h" diff --git a/interface/src/raypick/RayPickScriptingInterface.h b/interface/src/raypick/RayPickScriptingInterface.h index e7c5dfd5dd..b0d36f482c 100644 --- a/interface/src/raypick/RayPickScriptingInterface.h +++ b/interface/src/raypick/RayPickScriptingInterface.h @@ -16,8 +16,24 @@ #include "RegisteredMetaTypes.h" #include +#include "PickScriptingInterface.h" + class RayPickScriptingInterface : public QObject, public Dependency { Q_OBJECT + Q_PROPERTY(unsigned int PICK_NOTHING READ PICK_NOTHING CONSTANT) + Q_PROPERTY(unsigned int PICK_ENTITIES READ PICK_ENTITIES CONSTANT) + Q_PROPERTY(unsigned int PICK_OVERLAYS READ PICK_OVERLAYS CONSTANT) + Q_PROPERTY(unsigned int PICK_AVATARS READ PICK_AVATARS CONSTANT) + Q_PROPERTY(unsigned int PICK_HUD READ PICK_HUD CONSTANT) + Q_PROPERTY(unsigned int PICK_COARSE READ PICK_COARSE CONSTANT) + Q_PROPERTY(unsigned int PICK_INCLUDE_INVISIBLE READ PICK_INCLUDE_INVISIBLE CONSTANT) + Q_PROPERTY(unsigned int PICK_INCLUDE_NONCOLLIDABLE READ PICK_INCLUDE_NONCOLLIDABLE CONSTANT) + Q_PROPERTY(unsigned int PICK_ALL_INTERSECTIONS READ PICK_ALL_INTERSECTIONS CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_NONE READ INTERSECTED_NONE CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_ENTITY READ INTERSECTED_ENTITY CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_OVERLAY READ INTERSECTED_OVERLAY CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_AVATAR READ INTERSECTED_AVATAR CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_HUD READ INTERSECTED_HUD CONSTANT) SINGLETON_DEPENDENCY public slots: @@ -30,6 +46,21 @@ public slots: Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, const bool precisionPicking); Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities); Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); + + static unsigned int PICK_NOTHING() { return PickScriptingInterface::PICK_NOTHING(); } + static unsigned int PICK_ENTITIES() { return PickScriptingInterface::PICK_ENTITIES(); } + static unsigned int PICK_OVERLAYS() { return PickScriptingInterface::PICK_OVERLAYS(); } + static unsigned int PICK_AVATARS() { return PickScriptingInterface::PICK_AVATARS(); } + static unsigned int PICK_HUD() { return PickScriptingInterface::PICK_HUD(); } + static unsigned int PICK_COARSE() { return PickScriptingInterface::PICK_COARSE(); } + static unsigned int PICK_INCLUDE_INVISIBLE() { return PickScriptingInterface::PICK_INCLUDE_INVISIBLE(); } + static unsigned int PICK_INCLUDE_NONCOLLIDABLE() { return PickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE(); } + static unsigned int PICK_ALL_INTERSECTIONS() { return PickScriptingInterface::PICK_ALL_INTERSECTIONS(); } + static unsigned int INTERSECTED_NONE() { return PickScriptingInterface::INTERSECTED_NONE(); } + static unsigned int INTERSECTED_ENTITY() { return PickScriptingInterface::INTERSECTED_ENTITY(); } + static unsigned int INTERSECTED_OVERLAY() { return PickScriptingInterface::INTERSECTED_OVERLAY(); } + static unsigned int INTERSECTED_AVATAR() { return PickScriptingInterface::INTERSECTED_AVATAR(); } + static unsigned int INTERSECTED_HUD() { return PickScriptingInterface::INTERSECTED_HUD(); } }; #endif // hifi_RayPickScriptingInterface_h diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index 05dcc1148a..b37a376de3 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -908,9 +908,11 @@ void Overlays::mousePressPointerEvent(const OverlayID& overlayID, const PointerE thisOverlay = std::static_pointer_cast(getOverlay(overlayID)); } if (thisOverlay) { - // Focus keyboard on web overlays - DependencyManager::get()->setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); - setKeyboardFocusOverlay(overlayID); + if (event.shouldFocus()) { + // Focus keyboard on web overlays + DependencyManager::get()->setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); + setKeyboardFocusOverlay(overlayID); + } // Send to web overlay QMetaObject::invokeMethod(thisOverlay.get(), "handlePointerEvent", Q_ARG(PointerEvent, event)); diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 1ee725645f..0075762f02 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -119,9 +119,11 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { } // Trigger begin + const std::string SHOULD_FOCUS_BUTTON = "Focus"; for (const std::string& button : newButtons) { hoveredEvent.setType(PointerEvent::Press); hoveredEvent.setButton(PointerEvent::PrimaryButton); + hoveredEvent.setShouldFocus(button == SHOULD_FOCUS_BUTTON); if (hoveredObject.type == ENTITY) { emit pointerManager->triggerBeginEntity(hoveredObject.objectID, hoveredEvent); } else if (hoveredObject.type == OVERLAY) { diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index 4e965cd73c..595daebc33 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -77,8 +77,8 @@ public: QUuid getRayUID() { return _pickUID; } protected: - bool _enabled; const QUuid _pickUID; + bool _enabled; virtual PointerEvent buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const = 0; diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index 63c063cd01..074e5ab79b 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -55,9 +55,11 @@ public: Button getButton() const { return _button; } uint32_t getButtons() const { return _buttons; } Qt::KeyboardModifiers getKeyboardModifiers() const { return _keyboardModifiers; } + bool shouldFocus() const { return _shouldFocus; } void setType(EventType type) { _type = type; } void setButton(Button button) { _button = button; } + void setShouldFocus(bool focus) { _shouldFocus = focus; } private: EventType _type; @@ -70,6 +72,8 @@ private: Button _button { NoButtons }; // button associated with this event, (if type is Press, this will be the button that is pressed) uint32_t _buttons { NoButtons }; // the current state of all the buttons. Qt::KeyboardModifiers _keyboardModifiers; // set of keys held when event was generated + + bool _shouldFocus { true }; }; QDebug& operator<<(QDebug& dbg, const PointerEvent& p); From e5becba4e959dbc789d5b83017ebd1c59cc3e754 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 26 Oct 2017 20:38:07 -0700 Subject: [PATCH 031/187] migrate away from updateXXX standardize on setXXX --- .../src/RenderablePolyVoxEntityItem.cpp | 4 +- .../src/RenderablePolyVoxEntityItem.h | 2 +- libraries/entities/src/EntityItem.cpp | 197 +++++------------- libraries/entities/src/EntityItem.h | 15 +- 4 files changed, 67 insertions(+), 151 deletions(-) diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index b11ab76c2f..e92bc636bd 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -641,10 +641,10 @@ ShapeType RenderablePolyVoxEntityItem::getShapeType() const { return SHAPE_TYPE_COMPOUND; } -void RenderablePolyVoxEntityItem::updateRegistrationPoint(const glm::vec3& value) { +void RenderablePolyVoxEntityItem::setRegistrationPoint(const glm::vec3& value) { if (value != _registrationPoint) { _meshDirty = true; - EntityItem::updateRegistrationPoint(value); + EntityItem::setRegistrationPoint(value); } } diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h index fc12a2b5ee..6ac518f79b 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h @@ -98,7 +98,7 @@ public: std::shared_ptr getYPNeighbor(); std::shared_ptr getZPNeighbor(); - virtual void updateRegistrationPoint(const glm::vec3& value) override; + virtual void setRegistrationPoint(const glm::vec3& value) override; void setVoxelsFromData(QByteArray uncompressedData, quint16 voxelXSize, quint16 voxelYSize, quint16 voxelZSize); void forEachVoxelValue(const ivec3& voxelSize, std::function thunk); diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 008ec9769f..41b5960667 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -737,7 +737,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef auto customUpdateRotationFromNetwork = [this, shouldUpdate, lastEdited](glm::quat value){ if (shouldUpdate(_lastUpdatedRotationTimestamp, value != _lastUpdatedRotationValue)) { - updateRotation(value); + setRotation(value); _lastUpdatedRotationTimestamp = lastEdited; _lastUpdatedRotationValue = value; } @@ -745,7 +745,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef auto customUpdateVelocityFromNetwork = [this, shouldUpdate, lastEdited](glm::vec3 value){ if (shouldUpdate(_lastUpdatedVelocityTimestamp, value != _lastUpdatedVelocityValue)) { - updateVelocity(value); + setVelocity(value); _lastUpdatedVelocityTimestamp = lastEdited; _lastUpdatedVelocityValue = value; } @@ -753,7 +753,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef auto customUpdateAngularVelocityFromNetwork = [this, shouldUpdate, lastEdited](glm::vec3 value){ if (shouldUpdate(_lastUpdatedAngularVelocityTimestamp, value != _lastUpdatedAngularVelocityValue)) { - updateAngularVelocity(value); + setAngularVelocity(value); _lastUpdatedAngularVelocityTimestamp = lastEdited; _lastUpdatedAngularVelocityValue = value; } @@ -775,13 +775,13 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef } READ_ENTITY_PROPERTY(PROP_DIMENSIONS, glm::vec3, updateDimensions); - READ_ENTITY_PROPERTY(PROP_DENSITY, float, updateDensity); - READ_ENTITY_PROPERTY(PROP_GRAVITY, glm::vec3, updateGravity); + READ_ENTITY_PROPERTY(PROP_DENSITY, float, setDensity); + READ_ENTITY_PROPERTY(PROP_GRAVITY, glm::vec3, setGravity); - READ_ENTITY_PROPERTY(PROP_DAMPING, float, updateDamping); - READ_ENTITY_PROPERTY(PROP_RESTITUTION, float, updateRestitution); - READ_ENTITY_PROPERTY(PROP_FRICTION, float, updateFriction); - READ_ENTITY_PROPERTY(PROP_LIFETIME, float, updateLifetime); + READ_ENTITY_PROPERTY(PROP_DAMPING, float, setDamping); + READ_ENTITY_PROPERTY(PROP_RESTITUTION, float, setRestitution); + READ_ENTITY_PROPERTY(PROP_FRICTION, float, setFriction); + READ_ENTITY_PROPERTY(PROP_LIFETIME, float, setLifetime); READ_ENTITY_PROPERTY(PROP_SCRIPT, QString, setScript); READ_ENTITY_PROPERTY(PROP_SCRIPT_TIMESTAMP, quint64, setScriptTimestamp); @@ -797,13 +797,13 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef READ_ENTITY_PROPERTY(PROP_SERVER_SCRIPTS, QString, setServerScripts); } - READ_ENTITY_PROPERTY(PROP_REGISTRATION_POINT, glm::vec3, updateRegistrationPoint); + READ_ENTITY_PROPERTY(PROP_REGISTRATION_POINT, glm::vec3, setRegistrationPoint); - READ_ENTITY_PROPERTY(PROP_ANGULAR_DAMPING, float, updateAngularDamping); + READ_ENTITY_PROPERTY(PROP_ANGULAR_DAMPING, float, setAngularDamping); READ_ENTITY_PROPERTY(PROP_VISIBLE, bool, setVisible); - READ_ENTITY_PROPERTY(PROP_COLLISIONLESS, bool, updateCollisionless); - READ_ENTITY_PROPERTY(PROP_COLLISION_MASK, uint8_t, updateCollisionMask); - READ_ENTITY_PROPERTY(PROP_DYNAMIC, bool, updateDynamic); + READ_ENTITY_PROPERTY(PROP_COLLISIONLESS, bool, setCollisionless); + READ_ENTITY_PROPERTY(PROP_COLLISION_MASK, uint8_t, setCollisionMask); + READ_ENTITY_PROPERTY(PROP_DYNAMIC, bool, setDynamic); READ_ENTITY_PROPERTY(PROP_LOCKED, bool, updateLocked); READ_ENTITY_PROPERTY(PROP_USER_DATA, QString, setUserData); @@ -827,7 +827,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef { // parentID and parentJointIndex are also protected by simulation ownership bool oldOverwrite = overwriteLocalData; overwriteLocalData = overwriteLocalData && !weOwnSimulation; - READ_ENTITY_PROPERTY(PROP_PARENT_ID, QUuid, updateParentID); + READ_ENTITY_PROPERTY(PROP_PARENT_ID, QUuid, setParentID); READ_ENTITY_PROPERTY(PROP_PARENT_JOINT_INDEX, quint16, setParentJointIndex); overwriteLocalData = oldOverwrite; } @@ -922,12 +922,6 @@ float EntityItem::computeMass() const { } void EntityItem::setDensity(float density) { - withWriteLock([&] { - _density = glm::max(glm::min(density, ENTITY_ITEM_MAX_DENSITY), ENTITY_ITEM_MIN_DENSITY); - }); -} - -void EntityItem::updateDensity(float density) { float clampedDensity = glm::max(glm::min(density, ENTITY_ITEM_MAX_DENSITY), ENTITY_ITEM_MIN_DENSITY); withWriteLock([&] { if (_density != clampedDensity) { @@ -1317,27 +1311,27 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { // these affect TerseUpdate properties SET_ENTITY_PROPERTY_FROM_PROPERTIES(simulationOwner, updateSimulationOwner); SET_ENTITY_PROPERTY_FROM_PROPERTIES(position, updatePosition); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(rotation, updateRotation); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(velocity, updateVelocity); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(angularVelocity, updateAngularVelocity); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(rotation, setRotation); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(velocity, setVelocity); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(angularVelocity, setAngularVelocity); SET_ENTITY_PROPERTY_FROM_PROPERTIES(acceleration, setAcceleration); // these (along with "position" above) affect tree structure SET_ENTITY_PROPERTY_FROM_PROPERTIES(dimensions, updateDimensions); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(registrationPoint, updateRegistrationPoint); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(registrationPoint, setRegistrationPoint); // these (along with all properties above) affect the simulation - SET_ENTITY_PROPERTY_FROM_PROPERTIES(density, updateDensity); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(gravity, updateGravity); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(damping, updateDamping); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(angularDamping, updateAngularDamping); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(restitution, updateRestitution); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(friction, updateFriction); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionless, updateCollisionless); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionMask, updateCollisionMask); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(dynamic, updateDynamic); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(created, updateCreated); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(lifetime, updateLifetime); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(density, setDensity); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(gravity, setGravity); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(damping, setDamping); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(angularDamping, setAngularDamping); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(restitution, setRestitution); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(friction, setFriction); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionless, setCollisionless); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionMask, setCollisionMask); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(dynamic, setDynamic); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(created, setCreated); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(lifetime, setLifetime); SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, updateLocked); // non-simulation properties below @@ -1365,7 +1359,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(href, setHref); SET_ENTITY_PROPERTY_FROM_PROPERTIES(description, setDescription); SET_ENTITY_PROPERTY_FROM_PROPERTIES(actionData, setDynamicData); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(parentID, updateParentID); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(parentID, setParentID); SET_ENTITY_PROPERTY_FROM_PROPERTIES(parentJointIndex, setParentJointIndex); SET_ENTITY_PROPERTY_FROM_PROPERTIES(queryAACube, setQueryAACube); @@ -1702,9 +1696,12 @@ float EntityItem::getVolumeEstimate() const { return dimensions.x * dimensions.y * dimensions.z; } -void EntityItem::updateRegistrationPoint(const glm::vec3& value) { +void EntityItem::setRegistrationPoint(const glm::vec3& value) { if (value != _registrationPoint) { - setRegistrationPoint(value); + withWriteLock([&] { + _registrationPoint = glm::clamp(value, 0.0f, 1.0f); + }); + dimensionsChanged(); // Registration Point affects the bounding box markDirtyFlags(Simulation::DIRTY_SHAPE); } } @@ -1730,14 +1727,14 @@ void EntityItem::updatePosition(const glm::vec3& value) { } } -void EntityItem::updateParentID(const QUuid& value) { +void EntityItem::setParentID(const QUuid& value) { QUuid oldParentID = getParentID(); if (oldParentID != value) { EntityTreePointer tree = getTree(); if (!oldParentID.isNull()) { tree->removeFromChildrenOfAvatars(getThisPointer()); } - setParentID(value); + SpatiallyNestable::setParentID(value); // children are forced to be kinematic // may need to not collide with own avatar markDirtyFlags(Simulation::DIRTY_MOTION_TYPE | Simulation::DIRTY_COLLISION_GROUP); @@ -1758,7 +1755,7 @@ void EntityItem::updateDimensions(const glm::vec3& value) { } } -void EntityItem::updateRotation(const glm::quat& rotation) { +void EntityItem::setRotation(glm::quat rotation) { if (getLocalOrientation() != rotation) { setLocalOrientation(rotation); _dirtyFlags |= Simulation::DIRTY_ROTATION; @@ -1771,31 +1768,7 @@ void EntityItem::updateRotation(const glm::quat& rotation) { } } -void EntityItem::updateMass(float mass) { - // Setting the mass actually changes the _density (at fixed volume), however - // we must protect the density range to help maintain stability of physics simulation - // therefore this method might not accept the mass that is supplied. - - glm::vec3 dimensions = getDimensions(); - float volume = _volumeMultiplier * dimensions.x * dimensions.y * dimensions.z; - - // compute new density - float newDensity = _density; - const float MIN_VOLUME = 1.0e-6f; // 0.001mm^3 - if (volume < 1.0e-6f) { - // avoid divide by zero - newDensity = glm::min(mass / MIN_VOLUME, ENTITY_ITEM_MAX_DENSITY); - } else { - newDensity = glm::max(glm::min(mass / volume, ENTITY_ITEM_MAX_DENSITY), ENTITY_ITEM_MIN_DENSITY); - } - - if (_density != newDensity) { - _density = newDensity; - _dirtyFlags |= Simulation::DIRTY_MASS; - } -} - -void EntityItem::updateVelocity(const glm::vec3& value) { +void EntityItem::setVelocity(const glm::vec3& value) { glm::vec3 velocity = getLocalVelocity(); if (velocity != value) { if (getShapeType() == SHAPE_TYPE_STATIC_MESH) { @@ -1821,7 +1794,7 @@ void EntityItem::updateVelocity(const glm::vec3& value) { } } -void EntityItem::updateDamping(float value) { +void EntityItem::setDamping(float value) { auto clampedDamping = glm::clamp(value, 0.0f, 1.0f); if (_damping != clampedDamping) { _damping = clampedDamping; @@ -1829,7 +1802,7 @@ void EntityItem::updateDamping(float value) { } } -void EntityItem::updateGravity(const glm::vec3& value) { +void EntityItem::setGravity(const glm::vec3& value) { if (_gravity != value) { if (getShapeType() == SHAPE_TYPE_STATIC_MESH) { _gravity = Vectors::ZERO; @@ -1848,7 +1821,7 @@ void EntityItem::updateGravity(const glm::vec3& value) { } } -void EntityItem::updateAngularVelocity(const glm::vec3& value) { +void EntityItem::setAngularVelocity(const glm::vec3& value) { glm::vec3 angularVelocity = getLocalAngularVelocity(); if (angularVelocity != value) { if (getShapeType() == SHAPE_TYPE_STATIC_MESH) { @@ -1872,7 +1845,7 @@ void EntityItem::updateAngularVelocity(const glm::vec3& value) { } } -void EntityItem::updateAngularDamping(float value) { +void EntityItem::setAngularDamping(float value) { auto clampedDamping = glm::clamp(value, 0.0f, 1.0f); if (_angularDamping != clampedDamping) { _angularDamping = clampedDamping; @@ -1880,21 +1853,21 @@ void EntityItem::updateAngularDamping(float value) { } } -void EntityItem::updateCollisionless(bool value) { +void EntityItem::setCollisionless(bool value) { if (_collisionless != value) { _collisionless = value; _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; } } -void EntityItem::updateCollisionMask(uint8_t value) { +void EntityItem::setCollisionMask(uint8_t value) { if ((_collisionMask & ENTITY_COLLISION_MASK_DEFAULT) != (value & ENTITY_COLLISION_MASK_DEFAULT)) { _collisionMask = (value & ENTITY_COLLISION_MASK_DEFAULT); _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; } } -void EntityItem::updateDynamic(bool value) { +void EntityItem::setDynamic(bool value) { if (getDynamic() != value) { // dynamic and STATIC_MESH are incompatible so we check for that case if (value && getShapeType() == SHAPE_TYPE_STATIC_MESH) { @@ -1909,7 +1882,7 @@ void EntityItem::updateDynamic(bool value) { } } -void EntityItem::updateRestitution(float value) { +void EntityItem::setRestitution(float value) { float clampedValue = glm::max(glm::min(ENTITY_ITEM_MAX_RESTITUTION, value), ENTITY_ITEM_MIN_RESTITUTION); if (_restitution != clampedValue) { _restitution = clampedValue; @@ -1917,7 +1890,7 @@ void EntityItem::updateRestitution(float value) { } } -void EntityItem::updateFriction(float value) { +void EntityItem::setFriction(float value) { float clampedValue = glm::max(glm::min(ENTITY_ITEM_MAX_FRICTION, value), ENTITY_ITEM_MIN_FRICTION); withWriteLock([&] { if (_friction != clampedValue) { @@ -1927,28 +1900,14 @@ void EntityItem::updateFriction(float value) { }); } -void EntityItem::setRestitution(float value) { - float clampedValue = glm::max(glm::min(ENTITY_ITEM_MAX_RESTITUTION, value), ENTITY_ITEM_MIN_RESTITUTION); - withWriteLock([&] { - _restitution = clampedValue; - }); -} - -void EntityItem::setFriction(float value) { - float clampedValue = glm::max(glm::min(ENTITY_ITEM_MAX_FRICTION, value), ENTITY_ITEM_MIN_FRICTION); - withWriteLock([&] { - _friction = clampedValue; - }); -} - -void EntityItem::updateLifetime(float value) { +void EntityItem::setLifetime(float value) { if (_lifetime != value) { _lifetime = value; _dirtyFlags |= Simulation::DIRTY_LIFETIME; } } -void EntityItem::updateCreated(uint64_t value) { +void EntityItem::setCreated(uint64_t value) { if (_created != value) { _created = value; _dirtyFlags |= Simulation::DIRTY_LIFETIME; @@ -2618,12 +2577,6 @@ glm::vec3 EntityItem::getGravity() const { return result; } -void EntityItem::setGravity(const glm::vec3& value) { - withWriteLock([&] { - _gravity = value; - }); -} - glm::vec3 EntityItem::getAcceleration() const { glm::vec3 result; withReadLock([&] { @@ -2645,11 +2598,6 @@ float EntityItem::getDamping() const { }); return result; } -void EntityItem::setDamping(float value) { - withWriteLock([&] { - _damping = value; - }); -} float EntityItem::getRestitution() const { float result; @@ -2676,12 +2624,6 @@ float EntityItem::getLifetime() const { return result; } -void EntityItem::setLifetime(float value) { - withWriteLock([&] { - _lifetime = value; - }); -} - quint64 EntityItem::getCreated() const { quint64 result; withReadLock([&] { @@ -2690,12 +2632,6 @@ quint64 EntityItem::getCreated() const { return result; } -void EntityItem::setCreated(quint64 value) { - withWriteLock([&] { - _created = value; - }); -} - QString EntityItem::getScript() const { QString result; withReadLock([&] { @@ -2755,13 +2691,6 @@ glm::vec3 EntityItem::getRegistrationPoint() const { return result; } -void EntityItem::setRegistrationPoint(const glm::vec3& value) { - withWriteLock([&] { - _registrationPoint = glm::clamp(value, 0.0f, 1.0f); - }); - dimensionsChanged(); // Registration Point affects the bounding box -} - float EntityItem::getAngularDamping() const { float result; withReadLock([&] { @@ -2770,12 +2699,6 @@ float EntityItem::getAngularDamping() const { return result; } -void EntityItem::setAngularDamping(float value) { - withWriteLock([&] { - _angularDamping = value; - }); -} - QString EntityItem::getName() const { QString result; withReadLock([&] { @@ -2825,12 +2748,6 @@ bool EntityItem::getCollisionless() const { return result; } -void EntityItem::setCollisionless(bool value) { - withWriteLock([&] { - _collisionless = value; - }); -} - uint8_t EntityItem::getCollisionMask() const { uint8_t result; withReadLock([&] { @@ -2839,12 +2756,6 @@ uint8_t EntityItem::getCollisionMask() const { return result; } -void EntityItem::setCollisionMask(uint8_t value) { - withWriteLock([&] { - _collisionMask = value; - }); -} - bool EntityItem::getDynamic() const { if (SHAPE_TYPE_STATIC_MESH == getShapeType()) { return false; @@ -2856,12 +2767,6 @@ bool EntityItem::getDynamic() const { return result; } -void EntityItem::setDynamic(bool value) { - withWriteLock([&] { - _dynamic = value; - }); -} - bool EntityItem::getLocked() const { bool result; withReadLock([&] { diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index ce4bf13896..a05b0d6137 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -262,6 +262,8 @@ public: bool hasAngularVelocity() const { return getAngularVelocity() != ENTITY_ITEM_ZERO_VEC3; } bool hasLocalAngularVelocity() const { return getLocalAngularVelocity() != ENTITY_ITEM_ZERO_VEC3; } + virtual void setAngularVelocity(const glm::vec3& angularVelocity); + float getAngularDamping() const; void setAngularDamping(float value); @@ -354,10 +356,17 @@ public: virtual void setCollisionShape(const btCollisionShape* shape) {} // updateFoo() methods to be used when changes need to be accumulated in the _dirtyFlags - virtual void updateRegistrationPoint(const glm::vec3& value); + //virtual void setRegistrationPoint(const glm::vec3& value); void updatePosition(const glm::vec3& value); - void updateParentID(const QUuid& value); + void updateDimensions(const glm::vec3& value); + + virtual void setParentID(const QUuid& parentID); + virtual void setRotation(glm::quat orientation); + virtual void setVelocity(const glm::vec3& velocity); + + /* + void updateParentID(const QUuid& value); void updateRotation(const glm::quat& rotation); void updateDensity(float value); void updateMass(float value); @@ -373,6 +382,8 @@ public: void updateDynamic(bool value); void updateLifetime(float value); void updateCreated(uint64_t value); + */ + virtual void setShapeType(ShapeType type) { /* do nothing */ } uint32_t getDirtyFlags() const; From 431ee585773fc3988e7b502ed8c99d3f33bd8a7d Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 26 Oct 2017 21:30:59 -0700 Subject: [PATCH 032/187] more cleanup --- libraries/entities/src/EntityItem.cpp | 59 +++++++-------------------- libraries/entities/src/EntityItem.h | 32 --------------- 2 files changed, 14 insertions(+), 77 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 41b5960667..e6549160b8 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -774,7 +774,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef READ_ENTITY_PROPERTY(PROP_ACCELERATION, glm::vec3, customSetAcceleration); } - READ_ENTITY_PROPERTY(PROP_DIMENSIONS, glm::vec3, updateDimensions); + READ_ENTITY_PROPERTY(PROP_DIMENSIONS, glm::vec3, setDimensions); READ_ENTITY_PROPERTY(PROP_DENSITY, float, setDensity); READ_ENTITY_PROPERTY(PROP_GRAVITY, glm::vec3, setGravity); @@ -804,7 +804,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef READ_ENTITY_PROPERTY(PROP_COLLISIONLESS, bool, setCollisionless); READ_ENTITY_PROPERTY(PROP_COLLISION_MASK, uint8_t, setCollisionMask); READ_ENTITY_PROPERTY(PROP_DYNAMIC, bool, setDynamic); - READ_ENTITY_PROPERTY(PROP_LOCKED, bool, updateLocked); + READ_ENTITY_PROPERTY(PROP_LOCKED, bool, setLocked); READ_ENTITY_PROPERTY(PROP_USER_DATA, QString, setUserData); READ_ENTITY_PROPERTY(PROP_MARKETPLACE_ID, QString, setMarketplaceID); @@ -1309,7 +1309,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { bool somethingChanged = false; // these affect TerseUpdate properties - SET_ENTITY_PROPERTY_FROM_PROPERTIES(simulationOwner, updateSimulationOwner); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(simulationOwner, setSimulationOwner); SET_ENTITY_PROPERTY_FROM_PROPERTIES(position, updatePosition); SET_ENTITY_PROPERTY_FROM_PROPERTIES(rotation, setRotation); SET_ENTITY_PROPERTY_FROM_PROPERTIES(velocity, setVelocity); @@ -1317,7 +1317,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(acceleration, setAcceleration); // these (along with "position" above) affect tree structure - SET_ENTITY_PROPERTY_FROM_PROPERTIES(dimensions, updateDimensions); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(dimensions, setDimensions); SET_ENTITY_PROPERTY_FROM_PROPERTIES(registrationPoint, setRegistrationPoint); // these (along with all properties above) affect the simulation @@ -1332,7 +1332,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(dynamic, setDynamic); SET_ENTITY_PROPERTY_FROM_PROPERTIES(created, setCreated); SET_ENTITY_PROPERTY_FROM_PROPERTIES(lifetime, setLifetime); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, updateLocked); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, setLocked); // non-simulation properties below SET_ENTITY_PROPERTY_FROM_PROPERTIES(script, setScript); @@ -1424,17 +1424,6 @@ const Transform EntityItem::getTransformToCenter(bool& success) const { return result; } -void EntityItem::setDimensions(const glm::vec3& value) { - if (value.x <= 0.0f || value.y <= 0.0f || value.z <= 0.0f) { - return; - } - if (_dimensions != value) { - _dimensions = value; - locationChanged(); - dimensionsChanged(); - } -} - /// The maximum bounding cube for the entity, independent of it's rotation. /// This accounts for the registration point (upon which rotation occurs around). /// @@ -1536,25 +1525,6 @@ bool EntityItem::shouldPuffQueryAACube() const { return hasActions() || isChildOfMyAvatar() || isMovingRelativeToParent(); } -// NOTE: This should only be used in cases of old bitstreams which only contain radius data -// 0,0,0 --> maxDimension,maxDimension,maxDimension -// ... has a corner to corner distance of glm::length(maxDimension,maxDimension,maxDimension) -// ... radius = cornerToCornerLength / 2.0f -// ... radius * 2.0f = cornerToCornerLength -// ... cornerToCornerLength = sqrt(3 x maxDimension ^ 2) -// ... cornerToCornerLength = sqrt(3 x maxDimension ^ 2) -// ... radius * 2.0f = sqrt(3 x maxDimension ^ 2) -// ... (radius * 2.0f) ^2 = 3 x maxDimension ^ 2 -// ... ((radius * 2.0f) ^2) / 3 = maxDimension ^ 2 -// ... sqrt(((radius * 2.0f) ^2) / 3) = maxDimension -// ... sqrt((diameter ^2) / 3) = maxDimension -// -void EntityItem::setRadius(float value) { - float diameter = value * 2.0f; - float maxDimension = sqrt((diameter * diameter) / 3.0f); - setDimensions(glm::vec3(maxDimension, maxDimension, maxDimension)); -} - // TODO: get rid of all users of this function... // ... radius = cornerToCornerLength / 2.0f // ... cornerToCornerLength = sqrt(3 x maxDimension ^ 2) @@ -1746,11 +1716,14 @@ void EntityItem::setParentID(const QUuid& value) { } } -void EntityItem::updateDimensions(const glm::vec3& value) { - if (getDimensions() != value) { - setDimensions(value); +void EntityItem::setDimensions(const glm::vec3& value) { + const float MIN_ENTITY_DIMENSION = 0.00001f; + glm::vec3 newDimensions = glm::max(value, glm::vec3(MIN_ENTITY_DIMENSION)); + if (getDimensions() != newDimensions) { + _dimensions = newDimensions; markDirtyFlags(Simulation::DIRTY_SHAPE | Simulation::DIRTY_MASS); _queryAACubeSet = false; + locationChanged(); dimensionsChanged(); } } @@ -1983,6 +1956,7 @@ void EntityItem::setSimulationOwner(const QUuid& id, quint8 priority) { _simulationOwner.set(id, priority); } +/* void EntityItem::setSimulationOwner(const SimulationOwner& owner) { if (wantTerseEditLogging() && _simulationOwner != owner) { qCDebug(entities) << "sim ownership for" << getDebugName() << "is now" << owner; @@ -1990,8 +1964,9 @@ void EntityItem::setSimulationOwner(const SimulationOwner& owner) { _simulationOwner.set(owner); } +*/ -void EntityItem::updateSimulationOwner(const SimulationOwner& owner) { +void EntityItem::setSimulationOwner(const SimulationOwner& owner) { // NOTE: this method only used by EntityServer. The Interface uses special code in readEntityDataFromBuffer(). if (wantTerseEditLogging() && _simulationOwner != owner) { qCDebug(entities) << "sim ownership for" << getDebugName() << "is now" << owner; @@ -2776,12 +2751,6 @@ bool EntityItem::getLocked() const { } void EntityItem::setLocked(bool value) { - withWriteLock([&] { - _locked = value; - }); -} - -void EntityItem::updateLocked(bool value) { bool changed { false }; withWriteLock([&] { if (_locked != value) { diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index a05b0d6137..3b31acafad 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -293,7 +293,6 @@ public: bool getLocked() const; void setLocked(bool value); - void updateLocked(bool value); QString getUserData() const; virtual void setUserData(const QString& value); @@ -306,7 +305,6 @@ public: quint8 getSimulationPriority() const { return _simulationOwner.getPriority(); } QUuid getSimulatorID() const { return _simulationOwner.getID(); } - void updateSimulationOwner(const SimulationOwner& owner); void clearSimulationOwnership(); void setPendingOwnershipPriority(quint8 priority, const quint64& timestamp); uint8_t getPendingOwnershipPriority() const { return _simulationOwner.getPendingPriority(); } @@ -356,34 +354,10 @@ public: virtual void setCollisionShape(const btCollisionShape* shape) {} // updateFoo() methods to be used when changes need to be accumulated in the _dirtyFlags - //virtual void setRegistrationPoint(const glm::vec3& value); void updatePosition(const glm::vec3& value); - - void updateDimensions(const glm::vec3& value); - virtual void setParentID(const QUuid& parentID); virtual void setRotation(glm::quat orientation); virtual void setVelocity(const glm::vec3& velocity); - - /* - void updateParentID(const QUuid& value); - void updateRotation(const glm::quat& rotation); - void updateDensity(float value); - void updateMass(float value); - void updateVelocity(const glm::vec3& value); - void updateDamping(float value); - void updateRestitution(float value); - void updateFriction(float value); - void updateGravity(const glm::vec3& value); - void updateAngularVelocity(const glm::vec3& value); - void updateAngularDamping(float value); - void updateCollisionless(bool value); - void updateCollisionMask(uint8_t value); - void updateDynamic(bool value); - void updateLifetime(float value); - void updateCreated(uint64_t value); - */ - virtual void setShapeType(ShapeType type) { /* do nothing */ } uint32_t getDirtyFlags() const; @@ -590,12 +564,6 @@ protected: // damping = 1 - exp(-1 / timescale) // - // NOTE: Radius support is obsolete, but these private helper functions are available for this class to - // parse old data streams - - /// set radius in domain scale units (0.0 - 1.0) this will also reset dimensions to be equal for each axis - void setRadius(float value); - // DirtyFlags are set whenever a property changes that the EntitySimulation needs to know about. uint32_t _dirtyFlags { 0 }; // things that have changed from EXTERNAL changes (via script or packet) but NOT from simulation From f32282afdd308859544924f0c8d9a05b61456af1 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 27 Oct 2017 11:03:02 -0700 Subject: [PATCH 033/187] Clean update bug 8027 --- .../resources/html/createGlobalEventBridge.js | 48 ++++++++++++ interface/resources/qml/Browser.qml | 12 ++- libraries/ui/CMakeLists.txt | 4 +- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 76 +++++++++++++++++++ libraries/ui/src/ui/OffscreenQmlSurface.h | 9 +++ plugins/hifiSixense/CMakeLists.txt | 3 + tests/controllers/CMakeLists.txt | 3 + tests/render-perf/CMakeLists.txt | 4 + 8 files changed, 153 insertions(+), 6 deletions(-) diff --git a/interface/resources/html/createGlobalEventBridge.js b/interface/resources/html/createGlobalEventBridge.js index 4a0de464c3..bccbdfaf7c 100644 --- a/interface/resources/html/createGlobalEventBridge.js +++ b/interface/resources/html/createGlobalEventBridge.js @@ -33,6 +33,54 @@ var EventBridge; // replace the TempEventBridge with the real one. var tempEventBridge = EventBridge; EventBridge = channel.objects.eventBridge; + EventBridge.audioOutputDeviceChanged.connect(function(deviceName) { + navigator.mediaDevices.getUserMedia({ audio: true, video: true }).then(function(mediaStream) { + navigator.mediaDevices.enumerateDevices().then(function(devices) { + devices.forEach(function(device) { + if (device.kind == "audiooutput") { + if (device.label == deviceName){ + console.log("Changing HTML audio output to device " + device.label); + var deviceId = device.deviceId; + var videos = document.getElementsByTagName("video"); + for (var i = 0; i < videos.length; i++){ + videos[i].setSinkId(deviceId); + } + var audios = document.getElementsByTagName("audio"); + for (var i = 0; i < audios.length; i++){ + audios[i].setSinkId(deviceId); + } + } + } + }); + + }).catch(function(err) { + console.log("Error getting media devices"+ err.name + ": " + err.message); + }); + }).catch(function(err) { + console.log("Error getting user media"+ err.name + ": " + err.message); + }); + }); + + // To be able to update the state of the output device selection for every element added to the DOM + // we need to listen to events that might precede the addition of this elements. + // A more robust hack will be to add a setInterval that look for DOM changes every 100-300 ms (low performance?) + + window.onload = function(){ + setTimeout(function() { + EventBridge.forceHtmlAudioOutputDeviceUpdate(); + }, 1200); + }; + document.onclick = function(){ + setTimeout(function() { + EventBridge.forceHtmlAudioOutputDeviceUpdate(); + }, 1200); + }; + document.onchange = function(){ + setTimeout(function() { + EventBridge.forceHtmlAudioOutputDeviceUpdate(); + }, 1200); + }; + tempEventBridge._callbacks.forEach(function (callback) { EventBridge.scriptEventReceived.connect(callback); }); diff --git a/interface/resources/qml/Browser.qml b/interface/resources/qml/Browser.qml index 55927fda24..8a6674bc14 100644 --- a/interface/resources/qml/Browser.qml +++ b/interface/resources/qml/Browser.qml @@ -212,7 +212,7 @@ ScrollingWindow { WebEngineScript { id: createGlobalEventBridge sourceCode: eventBridgeJavaScriptToInject - injectionPoint: WebEngineScript.DocumentCreation + injectionPoint: WebEngineScript.Deferred worldId: WebEngineScript.MainWorld } @@ -233,9 +233,13 @@ ScrollingWindow { anchors.right: parent.right onFeaturePermissionRequested: { - permissionsBar.securityOrigin = securityOrigin; - permissionsBar.feature = feature; - root.showPermissionsBar(); + if (feature == 2) { // QWebEnginePage::MediaAudioCapture + grantFeaturePermission(securityOrigin, feature, true); + } else { + permissionsBar.securityOrigin = securityOrigin; + permissionsBar.feature = feature; + root.showPermissionsBar(); + } } onLoadingChanged: { diff --git a/libraries/ui/CMakeLists.txt b/libraries/ui/CMakeLists.txt index f28157ff97..ae682a11ea 100644 --- a/libraries/ui/CMakeLists.txt +++ b/libraries/ui/CMakeLists.txt @@ -1,6 +1,6 @@ set(TARGET_NAME ui) -setup_hifi_library(OpenGL Network Qml Quick Script WebChannel WebEngine WebSockets XmlPatterns) -link_hifi_libraries(shared networking gl audio) +setup_hifi_library(OpenGL Multimedia Network Qml Quick Script WebChannel WebEngine WebSockets XmlPatterns) +link_hifi_libraries(shared networking gl audio audio-client plugins) # Required for some low level GL interaction in the OffscreenQMLSurface target_opengl() diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index ecd07a5874..6632b669e3 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -24,7 +24,11 @@ #include #include #include +#include +#include +#include +#include #include #include #include @@ -595,6 +599,14 @@ void OffscreenQmlSurface::create() { // Find a way to flag older scripts using this mechanism and wanr that this is deprecated _qmlContext->setContextProperty("eventBridgeWrapper", new EventBridgeWrapper(this, _qmlContext)); _renderControl->initialize(_canvas->getContext()); + + // Connect with the audio client and listen for audio device changes + auto audioIO = DependencyManager::get(); + connect(audioIO.data(), &AudioClient::deviceChanged, this, [&](QAudio::Mode mode, const QAudioDeviceInfo& device) { + if (mode == QAudio::Mode::AudioOutput) { + QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::DirectConnection, Q_ARG(QString, device.deviceName())); + } + }); // When Quick says there is a need to render, we will not render immediately. Instead, // a timer with a small interval is used to get better performance. @@ -605,6 +617,68 @@ void OffscreenQmlSurface::create() { _updateTimer.start(); } +void OffscreenQmlSurface::changeAudioOutputDevice(const QString& deviceName, bool isHtmlUpdate) { + if (_rootItem != nullptr && !isHtmlUpdate) { + QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::DirectConnection); + } + emit audioOutputDeviceChanged(deviceName); +} + +void OffscreenQmlSurface::forceHtmlAudioOutputDeviceUpdate() { + auto audioIO = DependencyManager::get(); + QString deviceName = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); + QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::DirectConnection, + Q_ARG(QString, deviceName), Q_ARG(bool, true)); +} + +void OffscreenQmlSurface::forceQmlAudioOutputDeviceUpdate() { + if (QThread::currentThread() != qApp->thread()) { + QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::QueuedConnection); + } + else { + int waitForAudioQmlMs = 500; + QTimer::singleShot(waitForAudioQmlMs, this, SLOT(updateQmlAudio())); + } +} + +void OffscreenQmlSurface::updateQmlAudio() { + auto audioIO = DependencyManager::get(); + QString deviceName = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); + for (auto player : _rootItem->findChildren()) { + auto mediaState = player->state(); + QMediaService *svc = player->service(); + if (nullptr == svc) { + return; + } + QAudioOutputSelectorControl *out = qobject_cast + (svc->requestControl(QAudioOutputSelectorControl_iid)); + if (nullptr == out) { + return; + } + QString deviceOuput; + auto outputs = out->availableOutputs(); + for (int i = 0; i < outputs.size(); i++) { + QString output = outputs[i]; + QString description = out->outputDescription(output); + if (description == deviceName) { + deviceOuput = output; + break; + } + } + out->setActiveOutput(deviceOuput); + svc->releaseControl(out); + // if multimedia was paused, it will start playing automatically after changing audio device + // this will reset it back to a paused state + if (mediaState == QMediaPlayer::State::PausedState) { + player->pause(); + } + else if (mediaState == QMediaPlayer::State::StoppedState) { + player->stop(); + } + } + qDebug() << "QML Audio changed to " << deviceName; +} + static uvec2 clampSize(const uvec2& size, uint32_t maxDimension) { return glm::clamp(size, glm::uvec2(1), glm::uvec2(maxDimension)); } @@ -798,6 +872,7 @@ void OffscreenQmlSurface::finishQmlLoad(QQmlComponent* qmlComponent, QQmlContext if (newItem) { newItem->setParentItem(_rootItem); } + QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::QueuedConnection); return; } @@ -817,6 +892,7 @@ void OffscreenQmlSurface::finishQmlLoad(QQmlComponent* qmlComponent, QQmlContext for (const auto& callback : callbacks) { callback(qmlContext, newObject); } + QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::QueuedConnection); } void OffscreenQmlSurface::updateQuick() { diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 12ee9e59a1..0d053b373d 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -103,6 +103,15 @@ public slots: void onAboutToQuit(); void focusDestroyed(QObject *obj); + // audio output device +public slots: + void changeAudioOutputDevice(const QString& deviceName, bool isHtmlUpdate = false); + void forceHtmlAudioOutputDeviceUpdate(); + void forceQmlAudioOutputDeviceUpdate(); + void updateQmlAudio(); +signals: + void audioOutputDeviceChanged(const QString& deviceName); + // event bridge public slots: void emitScriptEvent(const QVariant& scriptMessage); diff --git a/plugins/hifiSixense/CMakeLists.txt b/plugins/hifiSixense/CMakeLists.txt index 55880584a8..a503fc5710 100644 --- a/plugins/hifiSixense/CMakeLists.txt +++ b/plugins/hifiSixense/CMakeLists.txt @@ -15,4 +15,7 @@ if (NOT ANDROID) setup_hifi_plugin(Script Qml Widgets) link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins) target_sixense() + if (WIN32) + target_link_libraries(${TARGET_NAME} Winmm.lib) + endif() endif () diff --git a/tests/controllers/CMakeLists.txt b/tests/controllers/CMakeLists.txt index 3221070837..623ee7d20e 100644 --- a/tests/controllers/CMakeLists.txt +++ b/tests/controllers/CMakeLists.txt @@ -17,5 +17,8 @@ if (WIN32) target_include_directories(${TARGET_NAME} PRIVATE ${OPENVR_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${OPENVR_LIBRARIES}) endif() +if (WIN32) + target_link_libraries(${TARGET_NAME} Winmm.lib) +endif() package_libraries_for_deployment() diff --git a/tests/render-perf/CMakeLists.txt b/tests/render-perf/CMakeLists.txt index 5b83ff313b..b7f13c88c5 100644 --- a/tests/render-perf/CMakeLists.txt +++ b/tests/render-perf/CMakeLists.txt @@ -14,6 +14,10 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") # link in the shared libraries link_hifi_libraries(shared networking model fbx ktx image octree gl gpu gpu-gl render model-networking networking render-utils entities entities-renderer animation audio avatars script-engine physics procedural midi ui) +if (WIN32) + target_link_libraries(${TARGET_NAME} Winmm.lib) +endif() + package_libraries_for_deployment() From 70b37f2e8a4dede381fdb64696be6c29f526862c Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 27 Oct 2017 11:32:44 -0700 Subject: [PATCH 034/187] Cleaning some old tabs --- interface/resources/qml/Browser.qml | 14 +++++++------- plugins/hifiSixense/CMakeLists.txt | 6 +++--- tests/controllers/CMakeLists.txt | 2 +- tests/render-perf/CMakeLists.txt | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/interface/resources/qml/Browser.qml b/interface/resources/qml/Browser.qml index 8a6674bc14..1dfc6875bb 100644 --- a/interface/resources/qml/Browser.qml +++ b/interface/resources/qml/Browser.qml @@ -233,13 +233,13 @@ ScrollingWindow { anchors.right: parent.right onFeaturePermissionRequested: { - if (feature == 2) { // QWebEnginePage::MediaAudioCapture - grantFeaturePermission(securityOrigin, feature, true); - } else { - permissionsBar.securityOrigin = securityOrigin; - permissionsBar.feature = feature; - root.showPermissionsBar(); - } + if (feature == 2) { // QWebEnginePage::MediaAudioCapture + grantFeaturePermission(securityOrigin, feature, true); + } else { + permissionsBar.securityOrigin = securityOrigin; + permissionsBar.feature = feature; + root.showPermissionsBar(); + } } onLoadingChanged: { diff --git a/plugins/hifiSixense/CMakeLists.txt b/plugins/hifiSixense/CMakeLists.txt index a503fc5710..6e642fce29 100644 --- a/plugins/hifiSixense/CMakeLists.txt +++ b/plugins/hifiSixense/CMakeLists.txt @@ -15,7 +15,7 @@ if (NOT ANDROID) setup_hifi_plugin(Script Qml Widgets) link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins) target_sixense() - if (WIN32) - target_link_libraries(${TARGET_NAME} Winmm.lib) - endif() + if (WIN32) + target_link_libraries(${TARGET_NAME} Winmm.lib) + endif() endif () diff --git a/tests/controllers/CMakeLists.txt b/tests/controllers/CMakeLists.txt index 623ee7d20e..062d69ca03 100644 --- a/tests/controllers/CMakeLists.txt +++ b/tests/controllers/CMakeLists.txt @@ -18,7 +18,7 @@ if (WIN32) target_link_libraries(${TARGET_NAME} ${OPENVR_LIBRARIES}) endif() if (WIN32) - target_link_libraries(${TARGET_NAME} Winmm.lib) + target_link_libraries(${TARGET_NAME} Winmm.lib) endif() package_libraries_for_deployment() diff --git a/tests/render-perf/CMakeLists.txt b/tests/render-perf/CMakeLists.txt index b7f13c88c5..59e043cd64 100644 --- a/tests/render-perf/CMakeLists.txt +++ b/tests/render-perf/CMakeLists.txt @@ -15,7 +15,7 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") link_hifi_libraries(shared networking model fbx ktx image octree gl gpu gpu-gl render model-networking networking render-utils entities entities-renderer animation audio avatars script-engine physics procedural midi ui) if (WIN32) - target_link_libraries(${TARGET_NAME} Winmm.lib) + target_link_libraries(${TARGET_NAME} Winmm.lib) endif() package_libraries_for_deployment() From a466cf71242795deb2fb18d653c5e3e36d486034 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 27 Oct 2017 11:51:19 -0700 Subject: [PATCH 035/187] make wasapi compile first --- tests/recording/CMakeLists.txt | 4 ++++ tests/render-perf/CMakeLists.txt | 1 + 2 files changed, 5 insertions(+) diff --git a/tests/recording/CMakeLists.txt b/tests/recording/CMakeLists.txt index b5b1e6a54e..b1977c85b1 100644 --- a/tests/recording/CMakeLists.txt +++ b/tests/recording/CMakeLists.txt @@ -4,6 +4,10 @@ setup_hifi_project(Test) set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") setup_memory_debugger() link_hifi_libraries(shared recording) +if (WIN32) + target_link_libraries(${TARGET_NAME} Winmm.lib) + add_dependency_external_projects(wasapi) +endif() package_libraries_for_deployment() # FIXME convert to unit tests diff --git a/tests/render-perf/CMakeLists.txt b/tests/render-perf/CMakeLists.txt index 59e043cd64..09b2dc6a50 100644 --- a/tests/render-perf/CMakeLists.txt +++ b/tests/render-perf/CMakeLists.txt @@ -16,6 +16,7 @@ link_hifi_libraries(shared networking model fbx ktx image octree gl gpu gpu-gl r if (WIN32) target_link_libraries(${TARGET_NAME} Winmm.lib) + add_dependency_external_projects(wasapi) endif() package_libraries_for_deployment() From 76223aa06f56d4bf923b7c52c75e8be5cb453424 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 27 Oct 2017 13:07:16 -0700 Subject: [PATCH 036/187] Force wasapi to compile with domain-server (TEST) --- domain-server/CMakeLists.txt | 1 + tests/recording/CMakeLists.txt | 1 - tests/render-perf/CMakeLists.txt | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/domain-server/CMakeLists.txt b/domain-server/CMakeLists.txt index c1e275e4d3..4004bee598 100644 --- a/domain-server/CMakeLists.txt +++ b/domain-server/CMakeLists.txt @@ -44,6 +44,7 @@ if (UNIX) endif () if (WIN32) + add_dependency_external_projects(wasapi) package_libraries_for_deployment() endif () diff --git a/tests/recording/CMakeLists.txt b/tests/recording/CMakeLists.txt index b1977c85b1..7ed4f5b1b0 100644 --- a/tests/recording/CMakeLists.txt +++ b/tests/recording/CMakeLists.txt @@ -6,7 +6,6 @@ setup_memory_debugger() link_hifi_libraries(shared recording) if (WIN32) target_link_libraries(${TARGET_NAME} Winmm.lib) - add_dependency_external_projects(wasapi) endif() package_libraries_for_deployment() diff --git a/tests/render-perf/CMakeLists.txt b/tests/render-perf/CMakeLists.txt index 09b2dc6a50..59e043cd64 100644 --- a/tests/render-perf/CMakeLists.txt +++ b/tests/render-perf/CMakeLists.txt @@ -16,7 +16,6 @@ link_hifi_libraries(shared networking model fbx ktx image octree gl gpu gpu-gl r if (WIN32) target_link_libraries(${TARGET_NAME} Winmm.lib) - add_dependency_external_projects(wasapi) endif() package_libraries_for_deployment() From bda63e38a996c21f20f9ccb7a14c87cd7a1b4884 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 27 Oct 2017 13:38:13 -0700 Subject: [PATCH 037/187] Updating all wasapi dependencies --- domain-server/CMakeLists.txt | 1 - tests/controllers/CMakeLists.txt | 1 + tests/entities/CMakeLists.txt | 4 ++++ tests/gpu-test/CMakeLists.txt | 5 +++++ tests/qt59/CMakeLists.txt | 5 +++++ tests/recording/CMakeLists.txt | 3 ++- tests/render-perf/CMakeLists.txt | 1 + tests/render-texture-load/CMakeLists.txt | 3 ++- tests/render-utils/CMakeLists.txt | 4 ++++ tests/shaders/CMakeLists.txt | 4 ++++ 10 files changed, 28 insertions(+), 3 deletions(-) diff --git a/domain-server/CMakeLists.txt b/domain-server/CMakeLists.txt index 4004bee598..c1e275e4d3 100644 --- a/domain-server/CMakeLists.txt +++ b/domain-server/CMakeLists.txt @@ -44,7 +44,6 @@ if (UNIX) endif () if (WIN32) - add_dependency_external_projects(wasapi) package_libraries_for_deployment() endif () diff --git a/tests/controllers/CMakeLists.txt b/tests/controllers/CMakeLists.txt index 062d69ca03..c3d25cfe2e 100644 --- a/tests/controllers/CMakeLists.txt +++ b/tests/controllers/CMakeLists.txt @@ -19,6 +19,7 @@ if (WIN32) endif() if (WIN32) target_link_libraries(${TARGET_NAME} Winmm.lib) + add_dependency_external_projects(wasapi) endif() package_libraries_for_deployment() diff --git a/tests/entities/CMakeLists.txt b/tests/entities/CMakeLists.txt index 080ae7cdd9..0c33eb8555 100644 --- a/tests/entities/CMakeLists.txt +++ b/tests/entities/CMakeLists.txt @@ -9,4 +9,8 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") # link in the shared libraries link_hifi_libraries(entities avatars shared octree gpu model fbx networking animation audio gl) +if (WIN32) + add_dependency_external_projects(wasapi) +endif () + package_libraries_for_deployment() diff --git a/tests/gpu-test/CMakeLists.txt b/tests/gpu-test/CMakeLists.txt index d73d7a111d..8e49d523b8 100644 --- a/tests/gpu-test/CMakeLists.txt +++ b/tests/gpu-test/CMakeLists.txt @@ -5,6 +5,11 @@ setup_hifi_project(Quick Gui OpenGL Script Widgets) setup_memory_debugger() set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") link_hifi_libraries(networking gl gpu gpu-gl procedural shared fbx model model-networking animation script-engine render render-utils octree image ktx) + +if (WIN32) + add_dependency_external_projects(wasapi) +endif () + package_libraries_for_deployment() target_nsight() diff --git a/tests/qt59/CMakeLists.txt b/tests/qt59/CMakeLists.txt index e0e8138a1e..e3450ae069 100644 --- a/tests/qt59/CMakeLists.txt +++ b/tests/qt59/CMakeLists.txt @@ -11,7 +11,12 @@ setup_memory_debugger() setup_hifi_project(Gui) set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") + # link in the shared libraries link_hifi_libraries(shared networking) +if (WIN32) + add_dependency_external_projects(wasapi) +endif() + package_libraries_for_deployment() diff --git a/tests/recording/CMakeLists.txt b/tests/recording/CMakeLists.txt index 7ed4f5b1b0..dbb942a27a 100644 --- a/tests/recording/CMakeLists.txt +++ b/tests/recording/CMakeLists.txt @@ -6,6 +6,7 @@ setup_memory_debugger() link_hifi_libraries(shared recording) if (WIN32) target_link_libraries(${TARGET_NAME} Winmm.lib) + add_dependency_external_projects(wasapi) endif() package_libraries_for_deployment() @@ -17,4 +18,4 @@ package_libraries_for_deployment() # # package_libraries_for_deployment() #endmacro () -#setup_hifi_testcase() +#setup_hifi_testcase() \ No newline at end of file diff --git a/tests/render-perf/CMakeLists.txt b/tests/render-perf/CMakeLists.txt index 59e043cd64..09b2dc6a50 100644 --- a/tests/render-perf/CMakeLists.txt +++ b/tests/render-perf/CMakeLists.txt @@ -16,6 +16,7 @@ link_hifi_libraries(shared networking model fbx ktx image octree gl gpu gpu-gl r if (WIN32) target_link_libraries(${TARGET_NAME} Winmm.lib) + add_dependency_external_projects(wasapi) endif() package_libraries_for_deployment() diff --git a/tests/render-texture-load/CMakeLists.txt b/tests/render-texture-load/CMakeLists.txt index 30030914ab..432a1f00d6 100644 --- a/tests/render-texture-load/CMakeLists.txt +++ b/tests/render-texture-load/CMakeLists.txt @@ -26,7 +26,8 @@ target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${QUAZIP_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${QUAZIP_LIBRARIES}) if (WIN32) -add_paths_to_fixup_libs(${QUAZIP_DLL_PATH}) + add_paths_to_fixup_libs(${QUAZIP_DLL_PATH}) + add_dependency_external_projects(wasapi) endif () diff --git a/tests/render-utils/CMakeLists.txt b/tests/render-utils/CMakeLists.txt index 4944ad2cbc..4e67aef3be 100644 --- a/tests/render-utils/CMakeLists.txt +++ b/tests/render-utils/CMakeLists.txt @@ -11,4 +11,8 @@ setup_memory_debugger() link_hifi_libraries(render-utils gl gpu gpu-gl shared) target_link_libraries(${TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT}) +if (WIN32) + add_dependency_external_projects(wasapi) +endif () + package_libraries_for_deployment() diff --git a/tests/shaders/CMakeLists.txt b/tests/shaders/CMakeLists.txt index bab1e0dcdc..ba4ca88127 100644 --- a/tests/shaders/CMakeLists.txt +++ b/tests/shaders/CMakeLists.txt @@ -17,4 +17,8 @@ include_directories("${PROJECT_BINARY_DIR}/../../libraries/render-utils/") include_directories("${PROJECT_BINARY_DIR}/../../libraries/entities-renderer/") include_directories("${PROJECT_BINARY_DIR}/../../libraries/model/") +if (WIN32) + add_dependency_external_projects(wasapi) +endif () + package_libraries_for_deployment() From 1000318dff63622d5074dc2982b632a586edfbc4 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Fri, 27 Oct 2017 14:26:02 -0700 Subject: [PATCH 038/187] tweak min dimension to match current behavior --- libraries/entities/src/EntityItem.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index e6549160b8..71e6990aaf 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1717,8 +1717,7 @@ void EntityItem::setParentID(const QUuid& value) { } void EntityItem::setDimensions(const glm::vec3& value) { - const float MIN_ENTITY_DIMENSION = 0.00001f; - glm::vec3 newDimensions = glm::max(value, glm::vec3(MIN_ENTITY_DIMENSION)); + glm::vec3 newDimensions = glm::max(value, glm::vec3(0.0f)); // can never have negative dimensions if (getDimensions() != newDimensions) { _dimensions = newDimensions; markDirtyFlags(Simulation::DIRTY_SHAPE | Simulation::DIRTY_MASS); From a7a0f03ede8c3afbee422ec8bfbd9e448521a0cd Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Fri, 27 Oct 2017 18:39:17 -0700 Subject: [PATCH 039/187] rename SpatiallyNestable::getPosition() to SpatiallyNestable::getWorldPosition() --- assignment-client/src/Agent.cpp | 12 ++-- .../src/avatars/AvatarMixerClientData.h | 2 +- .../src/avatars/AvatarMixerSlave.cpp | 2 +- .../src/avatars/ScriptableAvatar.cpp | 2 +- interface/src/Application.cpp | 38 ++++++------- interface/src/avatar/AvatarActionHold.cpp | 2 +- interface/src/avatar/AvatarManager.cpp | 2 +- interface/src/avatar/AvatarManager.h | 2 +- interface/src/avatar/AvatarMotionState.cpp | 2 +- interface/src/avatar/MyAvatar.cpp | 56 +++++++++---------- interface/src/avatar/MyAvatar.h | 2 +- .../src/avatar/MyCharacterController.cpp | 2 +- interface/src/raypick/JointRayPick.cpp | 2 +- interface/src/ui/Stats.cpp | 2 +- interface/src/ui/overlays/Base3DOverlay.cpp | 4 +- interface/src/ui/overlays/Base3DOverlay.h | 2 +- interface/src/ui/overlays/Circle3DOverlay.cpp | 4 +- .../ui/overlays/ContextOverlayInterface.cpp | 2 +- interface/src/ui/overlays/Cube3DOverlay.cpp | 2 +- interface/src/ui/overlays/Grid3DOverlay.cpp | 2 +- interface/src/ui/overlays/Line3DOverlay.cpp | 4 +- interface/src/ui/overlays/ModelOverlay.cpp | 6 +- interface/src/ui/overlays/Overlays.cpp | 2 +- interface/src/ui/overlays/OverlaysPayload.cpp | 2 +- interface/src/ui/overlays/Planar3DOverlay.cpp | 2 +- .../src/ui/overlays/Rectangle3DOverlay.cpp | 2 +- interface/src/ui/overlays/Shape3DOverlay.cpp | 2 +- interface/src/ui/overlays/Volume3DOverlay.cpp | 2 +- interface/src/ui/overlays/Web3DOverlay.cpp | 6 +- .../src/avatars-renderer/Avatar.cpp | 42 +++++++------- libraries/avatars/src/AvatarData.cpp | 14 ++--- libraries/avatars/src/AvatarData.h | 2 +- libraries/avatars/src/AvatarHashMap.cpp | 4 +- libraries/avatars/src/HeadData.cpp | 4 +- libraries/avatars/src/ScriptAvatarData.cpp | 2 +- .../src/EntityTreeRenderer.cpp | 2 +- .../src/RenderableLightEntityItem.cpp | 2 +- .../src/RenderableModelEntityItem.cpp | 2 +- .../src/RenderablePolyLineEntityItem.cpp | 2 +- .../src/RenderablePolyVoxEntityItem.cpp | 6 +- .../src/RenderableShapeEntityItem.cpp | 2 +- .../src/RenderableWebEntityItem.cpp | 6 +- .../src/RenderableZoneEntityItem.cpp | 4 +- libraries/entities/src/EntityItem.cpp | 12 ++-- .../entities/src/EntityScriptingInterface.cpp | 4 +- libraries/entities/src/EntityTree.cpp | 4 +- libraries/entities/src/EntityTreeElement.cpp | 8 +-- libraries/entities/src/LineEntityItem.cpp | 2 +- libraries/entities/src/ModelEntityItem.cpp | 2 +- .../entities/src/ParticleEffectEntityItem.cpp | 2 +- libraries/entities/src/PolyLineEntityItem.cpp | 2 +- libraries/entities/src/PolyVoxEntityItem.cpp | 6 +- libraries/entities/src/ShapeEntityItem.cpp | 2 +- libraries/entities/src/TextEntityItem.cpp | 2 +- libraries/entities/src/WebEntityItem.cpp | 2 +- libraries/entities/src/ZoneEntityItem.cpp | 2 +- libraries/physics/src/EntityMotionState.cpp | 4 +- libraries/physics/src/EntityMotionState.h | 2 +- libraries/physics/src/ObjectActionTractor.cpp | 2 +- .../physics/src/PhysicalEntitySimulation.cpp | 2 +- libraries/shared/src/SpatiallyNestable.cpp | 24 ++++---- libraries/shared/src/SpatiallyNestable.h | 10 ++-- 62 files changed, 180 insertions(+), 180 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 4efc3343d1..f166a780ff 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -441,7 +441,7 @@ void Agent::executeScript() { Transform audioTransform; auto headOrientation = scriptedAvatar->getHeadOrientation(); - audioTransform.setTranslation(scriptedAvatar->getPosition()); + audioTransform.setTranslation(scriptedAvatar->getWorldPosition()); audioTransform.setRotation(headOrientation); QByteArray encodedBuffer; @@ -452,7 +452,7 @@ void Agent::executeScript() { } AbstractAudioInterface::emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), audioSequenceNumber, - audioTransform, scriptedAvatar->getPosition(), glm::vec3(0), + audioTransform, scriptedAvatar->getWorldPosition(), glm::vec3(0), packetType, _selectedCodecName); }); @@ -742,10 +742,10 @@ void Agent::processAgentAvatarAudio() { audioPacket->writePrimitive(numAvailableSamples); // use the orientation and position of this avatar for the source of this audio - audioPacket->writePrimitive(scriptedAvatar->getPosition()); + audioPacket->writePrimitive(scriptedAvatar->getWorldPosition()); glm::quat headOrientation = scriptedAvatar->getHeadOrientation(); audioPacket->writePrimitive(headOrientation); - audioPacket->writePrimitive(scriptedAvatar->getPosition()); + audioPacket->writePrimitive(scriptedAvatar->getWorldPosition()); audioPacket->writePrimitive(glm::vec3(0)); // no matter what, the loudness should be set to 0 @@ -759,10 +759,10 @@ void Agent::processAgentAvatarAudio() { audioPacket->writePrimitive((quint8)0); // use the orientation and position of this avatar for the source of this audio - audioPacket->writePrimitive(scriptedAvatar->getPosition()); + audioPacket->writePrimitive(scriptedAvatar->getWorldPosition()); glm::quat headOrientation = scriptedAvatar->getHeadOrientation(); audioPacket->writePrimitive(headOrientation); - audioPacket->writePrimitive(scriptedAvatar->getPosition()); + audioPacket->writePrimitive(scriptedAvatar->getWorldPosition()); // HUH? why do we write this twice?? audioPacket->writePrimitive(glm::vec3(0)); QByteArray encodedBuffer; diff --git a/assignment-client/src/avatars/AvatarMixerClientData.h b/assignment-client/src/avatars/AvatarMixerClientData.h index 12b0286088..d5c7784da7 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.h +++ b/assignment-client/src/avatars/AvatarMixerClientData.h @@ -91,7 +91,7 @@ public: void loadJSONStats(QJsonObject& jsonObject) const; - glm::vec3 getPosition() const { return _avatar ? _avatar->getPosition() : glm::vec3(0); } + glm::vec3 getPosition() const { return _avatar ? _avatar->getWorldPosition() : glm::vec3(0); } glm::vec3 getGlobalBoundingBoxCorner() const { return _avatar ? _avatar->getGlobalBoundingBoxCorner() : glm::vec3(0); } bool isRadiusIgnoring(const QUuid& other) const { return _radiusIgnoredOthers.find(other) != _radiusIgnoredOthers.end(); } void addToRadiusIgnoringSet(const QUuid& other) { _radiusIgnoredOthers.insert(other); } diff --git a/assignment-client/src/avatars/AvatarMixerSlave.cpp b/assignment-client/src/avatars/AvatarMixerSlave.cpp index 5d36a6d261..dd045c24ea 100644 --- a/assignment-client/src/avatars/AvatarMixerSlave.cpp +++ b/assignment-client/src/avatars/AvatarMixerSlave.cpp @@ -209,7 +209,7 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) assert(avatarNode); // we can't have gotten here without the avatarData being a valid key in the map return nodeData->getLastBroadcastTime(avatarNode->getUUID()); }, [&](AvatarSharedPointer avatar)->float{ - glm::vec3 nodeBoxHalfScale = (avatar->getPosition() - avatar->getGlobalBoundingBoxCorner() * avatar->getSensorToWorldScale()); + glm::vec3 nodeBoxHalfScale = (avatar->getWorldPosition() - avatar->getGlobalBoundingBoxCorner() * avatar->getSensorToWorldScale()); return glm::max(nodeBoxHalfScale.x, glm::max(nodeBoxHalfScale.y, nodeBoxHalfScale.z)); }, [&](AvatarSharedPointer avatar)->bool { if (avatar == thisAvatar) { diff --git a/assignment-client/src/avatars/ScriptableAvatar.cpp b/assignment-client/src/avatars/ScriptableAvatar.cpp index 5060891284..c9ded2d6fb 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.cpp +++ b/assignment-client/src/avatars/ScriptableAvatar.cpp @@ -20,7 +20,7 @@ QByteArray ScriptableAvatar::toByteArrayStateful(AvatarDataDetail dataDetail, bool dropFaceTracking) { - _globalPosition = getPosition(); + _globalPosition = getWorldPosition(); return AvatarData::toByteArrayStateful(dataDetail); } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index f2bb52ea47..b1f461f227 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -893,7 +893,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(audioIO.data(), &AudioClient::muteEnvironmentRequested, [](glm::vec3 position, float radius) { auto audioClient = DependencyManager::get(); auto audioScriptingInterface = DependencyManager::get(); - auto myAvatarPosition = DependencyManager::get()->getMyAvatar()->getPosition(); + auto myAvatarPosition = DependencyManager::get()->getMyAvatar()->getWorldPosition(); float distance = glm::distance(myAvatarPosition, position); bool shouldMute = !audioClient->isMuted() && (distance < radius); @@ -966,7 +966,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo auto addressManager = DependencyManager::get(); // use our MyAvatar position and quat for address manager path - addressManager->setPositionGetter([this]{ return getMyAvatar()->getPosition(); }); + addressManager->setPositionGetter([this]{ return getMyAvatar()->getWorldPosition(); }); addressManager->setOrientationGetter([this]{ return getMyAvatar()->getOrientation(); }); connect(addressManager.data(), &AddressManager::hostChanged, this, &Application::updateWindowTitle); @@ -1501,7 +1501,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo static const QString FAST_STATS_ARG = "--fast-heartbeat"; static int SEND_STATS_INTERVAL_MS = arguments().indexOf(FAST_STATS_ARG) != -1 ? 1000 : 10000; - static glm::vec3 lastAvatarPosition = myAvatar->getPosition(); + static glm::vec3 lastAvatarPosition = myAvatar->getWorldPosition(); static glm::mat4 lastHMDHeadPose = getHMDSensorPose(); static controller::Pose lastLeftHandPose = myAvatar->getLeftHandPose(); static controller::Pose lastRightHandPose = myAvatar->getRightHandPose(); @@ -1629,7 +1629,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["bytes_downloaded"] = bytesDownloaded; auto myAvatar = getMyAvatar(); - glm::vec3 avatarPosition = myAvatar->getPosition(); + glm::vec3 avatarPosition = myAvatar->getWorldPosition(); properties["avatar_has_moved"] = lastAvatarPosition != avatarPosition; lastAvatarPosition = avatarPosition; @@ -1711,7 +1711,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo checkNearbyAvatarsTimer->setInterval(CHECK_NEARBY_AVATARS_INTERVAL_MS); // 10 seconds, Qt::CoarseTimer ok connect(checkNearbyAvatarsTimer, &QTimer::timeout, this, [this]() { auto avatarManager = DependencyManager::get(); - int nearbyAvatars = avatarManager->numberOfAvatarsInRange(avatarManager->getMyAvatar()->getPosition(), + int nearbyAvatars = avatarManager->numberOfAvatarsInRange(avatarManager->getMyAvatar()->getWorldPosition(), NEARBY_AVATAR_RADIUS_METERS) - 1; if (nearbyAvatars != lastCountOfNearbyAvatars) { lastCountOfNearbyAvatars = nearbyAvatars; @@ -2455,11 +2455,11 @@ void Application::updateCamera(RenderArgs& renderArgs) { glm::quat hmdRotation = extractRotation(myAvatar->getHMDSensorMatrix()); _myCamera.setOrientation(cameraEntity->getRotation() * hmdRotation); glm::vec3 hmdOffset = extractTranslation(myAvatar->getHMDSensorMatrix()); - _myCamera.setPosition(cameraEntity->getPosition() + (hmdRotation * hmdOffset)); + _myCamera.setPosition(cameraEntity->getWorldPosition() + (hmdRotation * hmdOffset)); } else { _myCamera.setOrientation(cameraEntity->getRotation()); - _myCamera.setPosition(cameraEntity->getPosition()); + _myCamera.setPosition(cameraEntity->getWorldPosition()); } } } @@ -3871,7 +3871,7 @@ void Application::idle() { auto entity = getEntities()->getTree()->findEntityByID(_keyboardFocusedEntity.get()); if (entity && _keyboardFocusHighlight) { _keyboardFocusHighlight->setRotation(entity->getRotation()); - _keyboardFocusHighlight->setPosition(entity->getPosition()); + _keyboardFocusHighlight->setWorldPosition(entity->getWorldPosition()); } } else { // Only Web overlays can have focus. @@ -3879,7 +3879,7 @@ void Application::idle() { std::dynamic_pointer_cast(getOverlays().getOverlay(_keyboardFocusedOverlay.get())); if (overlay && _keyboardFocusHighlight) { _keyboardFocusHighlight->setRotation(overlay->getRotation()); - _keyboardFocusHighlight->setPosition(overlay->getPosition()); + _keyboardFocusHighlight->setWorldPosition(overlay->getWorldPosition()); } } } @@ -4013,7 +4013,7 @@ bool Application::exportEntities(const QString& filename, !entityIDs.contains(parentID) || !entityTree->findEntityByEntityItemID(parentID))) { // If parent wasn't selected, we want absolute position, which isn't in properties. - auto position = entityItem->getPosition(); + auto position = entityItem->getWorldPosition(); root.x = glm::min(root.x, position.x); root.y = glm::min(root.y, position.y); root.z = glm::min(root.z, position.z); @@ -4216,7 +4216,7 @@ void Application::init() { return 0.0f; } - auto distance = glm::distance(getMyAvatar()->getPosition(), item.getPosition()); + auto distance = glm::distance(getMyAvatar()->getWorldPosition(), item.getWorldPosition()); return atan2(maxSize, distance); }); @@ -4520,7 +4520,7 @@ void Application::setKeyboardFocusHighlight(const glm::vec3& position, const glm // Position focus _keyboardFocusHighlight->setRotation(rotation); - _keyboardFocusHighlight->setPosition(position); + _keyboardFocusHighlight->setWorldPosition(position); _keyboardFocusHighlight->setDimensions(dimensions); _keyboardFocusHighlight->setVisible(true); } @@ -4557,7 +4557,7 @@ void Application::setKeyboardFocusEntity(const EntityItemID& entityItemID) { } _lastAcceptedKeyPress = usecTimestampNow(); - setKeyboardFocusHighlight(entity->getPosition(), entity->getRotation(), + setKeyboardFocusHighlight(entity->getWorldPosition(), entity->getRotation(), entity->getDimensions() * FOCUS_HIGHLIGHT_EXPANSION_FACTOR); } } @@ -4594,7 +4594,7 @@ void Application::setKeyboardFocusOverlay(const OverlayID& overlayID) { if (overlay->getProperty("showKeyboardFocusHighlight").toBool()) { auto size = overlay->getSize() * FOCUS_HIGHLIGHT_EXPANSION_FACTOR; const float OVERLAY_DEPTH = 0.0105f; - setKeyboardFocusHighlight(overlay->getPosition(), overlay->getRotation(), glm::vec3(size.x, size.y, OVERLAY_DEPTH)); + setKeyboardFocusHighlight(overlay->getWorldPosition(), overlay->getRotation(), glm::vec3(size.x, size.y, OVERLAY_DEPTH)); } else if (_keyboardFocusHighlight) { _keyboardFocusHighlight->setVisible(false); } @@ -4686,7 +4686,7 @@ void Application::update(float deltaTime) { controller::InputCalibrationData calibrationData = { myAvatar->getSensorToWorldMatrix(), - createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getPosition()), + createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getWorldPosition()), myAvatar->getHMDSensorMatrix(), myAvatar->getCenterEyeCalibrationMat(), myAvatar->getHeadCalibrationMat(), @@ -4796,7 +4796,7 @@ void Application::update(float deltaTime) { }; // copy controller poses from userInputMapper to myAvatar. - glm::mat4 myAvatarMatrix = createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getPosition()); + glm::mat4 myAvatarMatrix = createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getWorldPosition()); glm::mat4 worldToSensorMatrix = glm::inverse(myAvatar->getSensorToWorldMatrix()); glm::mat4 avatarToSensorMatrix = worldToSensorMatrix * myAvatarMatrix; for (auto& action : avatarControllerActions) { @@ -5412,7 +5412,7 @@ std::shared_ptr Application::getMyAvatar() const { } glm::vec3 Application::getAvatarPosition() const { - return getMyAvatar()->getPosition(); + return getMyAvatar()->getWorldPosition(); } void Application::copyViewFrustum(ViewFrustum& viewOut) const { @@ -5624,7 +5624,7 @@ bool Application::nearbyEntitiesAreReadyForPhysics() { // whose bounding boxes cannot be computed (it is too loose for our purposes here). Instead we manufacture // custom filters and use the general-purpose EntityTree::findEntities(filter, ...) QVector entities; - AABox avatarBox(getMyAvatar()->getPosition() - glm::vec3(PHYSICS_READY_RANGE), glm::vec3(2 * PHYSICS_READY_RANGE)); + AABox avatarBox(getMyAvatar()->getWorldPosition() - glm::vec3(PHYSICS_READY_RANGE), glm::vec3(2 * PHYSICS_READY_RANGE)); // create two functions that use avatarBox (entityScan and elementScan), the second calls the first std::function entityScan = [=](EntityItemPointer& entity) { if (entity->shouldBePhysical()) { @@ -6438,7 +6438,7 @@ void Application::addAssetToWorldAddEntity(QString filePath, QString mapping) { properties.setCollisionless(true); // Temporarily set so that doesn't collide with avatar. properties.setVisible(false); // Temporarily set so that don't see at large unresized dimensions. glm::vec3 positionOffset = getMyAvatar()->getOrientation() * (getMyAvatar()->getSensorToWorldScale() * glm::vec3(0.0f, 0.0f, -2.0f)); - properties.setPosition(getMyAvatar()->getPosition() + positionOffset); + properties.setPosition(getMyAvatar()->getWorldPosition() + positionOffset); properties.setRotation(getMyAvatar()->getOrientation()); properties.setGravity(glm::vec3(0.0f, 0.0f, 0.0f)); auto entityID = DependencyManager::get()->addEntity(properties); diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index a47bbbad1b..668994883d 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -529,7 +529,7 @@ void AvatarActionHold::lateAvatarUpdate(const AnimPose& prePhysicsRoomPose, cons rigidBody->setWorldTransform(worldTrans); bool positionSuccess; - ownerEntity->setPosition(bulletToGLM(worldTrans.getOrigin()) + ObjectMotionState::getWorldOffset(), positionSuccess, false); + ownerEntity->setWorldPosition(bulletToGLM(worldTrans.getOrigin()) + ObjectMotionState::getWorldOffset(), positionSuccess, false); bool orientationSuccess; ownerEntity->setOrientation(bulletToGLM(worldTrans.getRotation()), orientationSuccess, false); } diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index e8b800db69..d9d56b76b1 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -435,7 +435,7 @@ void AvatarManager::handleCollisionEvents(const CollisionEvents& collisionEvents static const int MAX_INJECTOR_COUNT = 3; if (_collisionInjectors.size() < MAX_INJECTOR_COUNT) { auto injector = AudioInjector::playSound(collisionSound, energyFactorOfFull, AVATAR_STRETCH_FACTOR, - myAvatar->getPosition()); + myAvatar->getWorldPosition()); _collisionInjectors.emplace_back(injector); } myAvatar->collisionWithEntity(collision); diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index 39a4f7a4af..fc93bbbfe3 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -41,7 +41,7 @@ public: void init(); std::shared_ptr getMyAvatar() { return _myAvatar; } - glm::vec3 getMyAvatarPosition() const { return _myAvatar->getPosition(); } + glm::vec3 getMyAvatarPosition() const { return _myAvatar->getWorldPosition(); } // Null/Default-constructed QUuids will return MyAvatar Q_INVOKABLE virtual ScriptAvatarData* getAvatar(QUuid avatarID) override { return new ScriptAvatar(getAvatarBySessionID(avatarID)); } diff --git a/interface/src/avatar/AvatarMotionState.cpp b/interface/src/avatar/AvatarMotionState.cpp index 91c83afcbd..01cfb93333 100644 --- a/interface/src/avatar/AvatarMotionState.cpp +++ b/interface/src/avatar/AvatarMotionState.cpp @@ -106,7 +106,7 @@ float AvatarMotionState::getObjectAngularDamping() const { // virtual glm::vec3 AvatarMotionState::getObjectPosition() const { - return _avatar->getPosition(); + return _avatar->getWorldPosition(); } // virtual diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 3189ad3c77..9458789685 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -196,7 +196,7 @@ MyAvatar::MyAvatar(QThread* thread) : setDisplayName(dummyAvatar.getDisplayName()); } - setPosition(dummyAvatar.getPosition()); + setWorldPosition(dummyAvatar.getWorldPosition()); setOrientation(dummyAvatar.getOrientation()); if (!dummyAvatar.getAttachmentData().isEmpty()) { @@ -276,7 +276,7 @@ void MyAvatar::simulateAttachments(float deltaTime) { QByteArray MyAvatar::toByteArrayStateful(AvatarDataDetail dataDetail, bool dropFaceTracking) { CameraMode mode = qApp->getCamera().getMode(); - _globalPosition = getPosition(); + _globalPosition = getWorldPosition(); // This might not be right! Isn't the capsule local offset in avatar space, and don't we need to add the radius to the y as well? -HRS 5/26/17 _globalBoundingBoxDimensions.x = _characterController.getCapsuleRadius(); _globalBoundingBoxDimensions.y = _characterController.getCapsuleHalfHeight(); @@ -284,11 +284,11 @@ QByteArray MyAvatar::toByteArrayStateful(AvatarDataDetail dataDetail, bool dropF _globalBoundingBoxOffset = _characterController.getCapsuleLocalOffset(); if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_INDEPENDENT) { // fake the avatar position that is sent up to the AvatarMixer - glm::vec3 oldPosition = getPosition(); - setPosition(getSkeletonPosition()); + glm::vec3 oldPosition = getWorldPosition(); + setWorldPosition(getSkeletonPosition()); QByteArray array = AvatarData::toByteArrayStateful(dataDetail); // copy the correct position back - setPosition(oldPosition); + setWorldPosition(oldPosition); return array; } return AvatarData::toByteArrayStateful(dataDetail); @@ -321,14 +321,14 @@ void MyAvatar::centerBody() { if (_characterController.getState() == CharacterController::State::Ground) { // the avatar's physical aspect thinks it is standing on something // therefore need to be careful to not "center" the body below the floor - float downStep = glm::dot(worldBodyPos - getPosition(), _worldUpDirection); + float downStep = glm::dot(worldBodyPos - getWorldPosition(), _worldUpDirection); if (downStep < -0.5f * _characterController.getCapsuleHalfHeight() + _characterController.getCapsuleRadius()) { worldBodyPos -= downStep * _worldUpDirection; } } // this will become our new position. - setPosition(worldBodyPos); + setWorldPosition(worldBodyPos); setOrientation(worldBodyRot); // reset the body in sensor space @@ -372,7 +372,7 @@ void MyAvatar::reset(bool andRecenter, bool andReload, bool andHead) { auto worldBodyRot = glmExtractRotation(worldBodyMatrix); // this will become our new position. - setPosition(worldBodyPos); + setWorldPosition(worldBodyPos); setOrientation(worldBodyRot); // now sample the new hmd orientation AFTER sensor reset, which should be identity. @@ -410,7 +410,7 @@ void MyAvatar::update(float deltaTime) { #endif if (_goToPending) { - setPosition(_goToPosition); + setWorldPosition(_goToPosition); setOrientation(_goToOrientation); _headControllerFacingMovingAverage = _headControllerFacing; // reset moving average _goToPending = false; @@ -444,7 +444,7 @@ void MyAvatar::update(float deltaTime) { // This might not be right! Isn't the capsule local offset in avatar space? -HRS 5/26/17 halfBoundingBoxDimensions += _characterController.getCapsuleLocalOffset(); QMetaObject::invokeMethod(audio.data(), "setAvatarBoundingBoxParameters", - Q_ARG(glm::vec3, (getPosition() - halfBoundingBoxDimensions)), + Q_ARG(glm::vec3, (getWorldPosition() - halfBoundingBoxDimensions)), Q_ARG(glm::vec3, (halfBoundingBoxDimensions*2.0f))); if (getIdentityDataChanged()) { @@ -537,7 +537,7 @@ void MyAvatar::simulate(float deltaTime) { if (!_skeletonModel->hasSkeleton()) { // All the simulation that can be done has been done - getHead()->setPosition(getPosition()); // so audio-position isn't 0,0,0 + getHead()->setPosition(getWorldPosition()); // so audio-position isn't 0,0,0 return; } @@ -555,7 +555,7 @@ void MyAvatar::simulate(float deltaTime) { Head* head = getHead(); glm::vec3 headPosition; if (!_skeletonModel->getHeadPosition(headPosition)) { - headPosition = getPosition(); + headPosition = getWorldPosition(); } head->setPosition(headPosition); head->setScale(getModelScale()); @@ -666,7 +666,7 @@ void MyAvatar::updateSensorToWorldMatrix() { // update the sensor mat so that the body position will end up in the desired // position when driven from the head. float sensorToWorldScale = getEyeHeight() / getUserEyeHeight(); - glm::mat4 desiredMat = createMatFromScaleQuatAndPos(glm::vec3(sensorToWorldScale), getOrientation(), getPosition()); + glm::mat4 desiredMat = createMatFromScaleQuatAndPos(glm::vec3(sensorToWorldScale), getOrientation(), getWorldPosition()); _sensorToWorldMatrix = desiredMat * glm::inverse(_bodySensorMatrix); lateUpdatePalms(); @@ -783,7 +783,7 @@ controller::Pose MyAvatar::getRightHandTipPose() const { } glm::vec3 MyAvatar::worldToJointPoint(const glm::vec3& position, const int jointIndex) const { - glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified + glm::vec3 jointPos = getWorldPosition();//default value if no or invalid joint specified glm::quat jointRot = getRotation();//default value if no or invalid joint specified if (jointIndex != -1) { if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) { @@ -818,7 +818,7 @@ glm::quat MyAvatar::worldToJointRotation(const glm::quat& worldRot, const int jo } glm::vec3 MyAvatar::jointToWorldPoint(const glm::vec3& jointSpacePos, const int jointIndex) const { - glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified + glm::vec3 jointPos = getWorldPosition();//default value if no or invalid joint specified glm::quat jointRot = getRotation();//default value if no or invalid joint specified if (jointIndex != -1) { @@ -1230,7 +1230,7 @@ void MyAvatar::updateLookAtTargetAvatar() { float angleTo = coneSphereAngle(getHead()->getEyePosition(), lookForward, avatar->getHead()->getEyePosition(), radius); if (angleTo < (smallestAngleTo * (isCurrentTarget ? KEEP_LOOKING_AT_CURRENT_ANGLE_FACTOR : 1.0f))) { _lookAtTargetAvatar = avatarPointer; - _targetAvatarPosition = avatarPointer->getPosition(); + _targetAvatarPosition = avatarPointer->getWorldPosition(); } if (_lookAtSnappingEnabled && avatar->getLookAtSnappingEnabled() && isLookingAtMe(avatar)) { @@ -1301,7 +1301,7 @@ eyeContactTarget MyAvatar::getEyeContactTarget() { } glm::vec3 MyAvatar::getDefaultEyePosition() const { - return getPosition() + getOrientation() * Quaternions::Y_180 * _skeletonModel->getDefaultEyeModelPosition(); + return getWorldPosition() + getOrientation() * Quaternions::Y_180 * _skeletonModel->getDefaultEyeModelPosition(); } const float SCRIPT_PRIORITY = 1.0f + 1.0f; @@ -1460,9 +1460,9 @@ glm::vec3 MyAvatar::getSkeletonPosition() const { // The avatar is rotated PI about the yAxis, so we have to correct for it // to get the skeleton offset contribution in the world-frame. const glm::quat FLIP = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); - return getPosition() + getOrientation() * FLIP * _skeletonOffset; + return getWorldPosition() + getOrientation() * FLIP * _skeletonOffset; } - return Avatar::getPosition(); + return Avatar::getWorldPosition(); } void MyAvatar::rebuildCollisionShape() { @@ -1508,7 +1508,7 @@ controller::Pose MyAvatar::getControllerPoseInWorldFrame(controller::Action acti controller::Pose MyAvatar::getControllerPoseInAvatarFrame(controller::Action action) const { auto pose = getControllerPoseInWorldFrame(action); if (pose.valid) { - glm::mat4 invAvatarMatrix = glm::inverse(createMatFromQuatAndPos(getOrientation(), getPosition())); + glm::mat4 invAvatarMatrix = glm::inverse(createMatFromQuatAndPos(getOrientation(), getWorldPosition())); return pose.transform(invAvatarMatrix); } else { return controller::Pose(); // invalid pose @@ -1575,7 +1575,7 @@ void MyAvatar::prepareForPhysicsSimulation() { _characterController.setParentVelocity(parentVelocity); _characterController.setScaleFactor(getSensorToWorldScale()); - _characterController.setPositionAndOrientation(getPosition(), getOrientation()); + _characterController.setPositionAndOrientation(getWorldPosition(), getOrientation()); auto headPose = getControllerPoseInAvatarFrame(controller::Action::HEAD); if (headPose.isValid()) { _follow.prePhysicsUpdate(*this, deriveBodyFromHMDSensor(), _bodySensorMatrix, hasDriveInput()); @@ -1609,7 +1609,7 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { if (_characterController.isEnabledAndReady()) { _characterController.getPositionAndOrientation(position, orientation); } else { - position = getPosition(); + position = getWorldPosition(); orientation = getOrientation(); } nextAttitude(position, orientation); @@ -1619,7 +1619,7 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { setVelocity(_characterController.getLinearVelocity() + _characterController.getFollowVelocity()); if (_characterController.isStuck()) { _physicsSafetyPending = true; - _goToPosition = getPosition(); + _goToPosition = getWorldPosition(); } } else { setVelocity(getVelocity() + _characterController.getFollowVelocity()); @@ -1846,7 +1846,7 @@ void MyAvatar::postUpdate(float deltaTime, const render::ScenePointer& scene) { } } - DebugDraw::getInstance().updateMyAvatarPos(getPosition()); + DebugDraw::getInstance().updateMyAvatarPos(getWorldPosition()); DebugDraw::getInstance().updateMyAvatarRot(getOrientation()); AnimPose postUpdateRoomPose(_sensorToWorldMatrix); @@ -1854,7 +1854,7 @@ void MyAvatar::postUpdate(float deltaTime, const render::ScenePointer& scene) { updateHoldActions(_prePhysicsRoomPose, postUpdateRoomPose); if (_enableDebugDrawDetailedCollision) { - AnimPose rigToWorldPose(glm::vec3(1.0f), getRotation() * Quaternions::Y_180, getPosition()); + AnimPose rigToWorldPose(glm::vec3(1.0f), getRotation() * Quaternions::Y_180, getWorldPosition()); const int NUM_DEBUG_COLORS = 8; const glm::vec4 DEBUG_COLORS[NUM_DEBUG_COLORS] = { glm::vec4(1.0f, 1.0f, 1.0f, 1.0f), @@ -2105,7 +2105,7 @@ void MyAvatar::updatePosition(float deltaTime) { if (_moving) { // scan for walkability - glm::vec3 position = getPosition(); + glm::vec3 position = getWorldPosition(); MyCharacterController::RayShotgunResult result; glm::vec3 step = deltaTime * (getRotation() * _actionMotorVelocity); _characterController.testRayShotgun(position, step, result); @@ -2916,7 +2916,7 @@ float MyAvatar::getAudioEnergy() { } bool MyAvatar::didTeleport() { - glm::vec3 pos = getPosition(); + glm::vec3 pos = getWorldPosition(); glm::vec3 changeInPosition = pos - lastPosition; lastPosition = pos; return (changeInPosition.length() > MAX_AVATAR_MOVEMENT_PER_FRAME); @@ -2960,7 +2960,7 @@ glm::mat4 MyAvatar::computeCameraRelativeHandControllerMatrix(const glm::mat4& c glm::mat4 controllerWorldMatrix = getSensorToWorldMatrix() * delta * controllerSensorMatrix; // transform controller into avatar space - glm::mat4 avatarMatrix = createMatFromQuatAndPos(getOrientation(), getPosition()); + glm::mat4 avatarMatrix = createMatFromQuatAndPos(getOrientation(), getWorldPosition()); return glm::inverse(avatarMatrix) * controllerWorldMatrix; } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 16ed9ea5b4..263a2f34c4 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -114,7 +114,7 @@ class MyAvatar : public Avatar { // FIXME: `glm::vec3 position` is not accessible from QML, so this exposes position in a QML-native type Q_PROPERTY(QVector3D qmlPosition READ getQmlPosition) - QVector3D getQmlPosition() { auto p = getPosition(); return QVector3D(p.x, p.y, p.z); } + QVector3D getQmlPosition() { auto p = getWorldPosition(); return QVector3D(p.x, p.y, p.z); } Q_PROPERTY(bool shouldRenderLocally READ getShouldRenderLocally WRITE setShouldRenderLocally) Q_PROPERTY(glm::vec3 motorVelocity READ getScriptedMotorVelocity WRITE setScriptedMotorVelocity) diff --git a/interface/src/avatar/MyCharacterController.cpp b/interface/src/avatar/MyCharacterController.cpp index 761e2e5bff..57b5e96ee5 100755 --- a/interface/src/avatar/MyCharacterController.cpp +++ b/interface/src/avatar/MyCharacterController.cpp @@ -65,7 +65,7 @@ void MyCharacterController::updateShapeIfNecessary() { _rigidBody->setSleepingThresholds(0.0f, 0.0f); _rigidBody->setAngularFactor(0.0f); _rigidBody->setWorldTransform(btTransform(glmToBullet(_avatar->getOrientation()), - glmToBullet(_avatar->getPosition()))); + glmToBullet(_avatar->getWorldPosition()))); _rigidBody->setDamping(0.0f, 0.0f); if (_state == State::Hover) { _rigidBody->setGravity(btVector3(0.0f, 0.0f, 0.0f)); diff --git a/interface/src/raypick/JointRayPick.cpp b/interface/src/raypick/JointRayPick.cpp index cf3f380ca0..fc0ecf94e5 100644 --- a/interface/src/raypick/JointRayPick.cpp +++ b/interface/src/raypick/JointRayPick.cpp @@ -28,7 +28,7 @@ const PickRay JointRayPick::getPickRay(bool& valid) const { if (jointIndex != INVALID_JOINT || useAvatarHead) { glm::vec3 jointPos = useAvatarHead ? myAvatar->getHeadPosition() : myAvatar->getAbsoluteJointTranslationInObjectFrame(jointIndex); glm::quat jointRot = useAvatarHead ? myAvatar->getHeadOrientation() : myAvatar->getAbsoluteJointRotationInObjectFrame(jointIndex); - glm::vec3 avatarPos = myAvatar->getPosition(); + glm::vec3 avatarPos = myAvatar->getWorldPosition(); glm::quat avatarRot = myAvatar->getOrientation(); glm::vec3 pos = useAvatarHead ? jointPos : avatarPos + (avatarRot * jointPos); diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index d4a300c337..4fa5e5726b 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -192,7 +192,7 @@ void Stats::updateStats(bool force) { // Third column, avatar stats auto myAvatar = avatarManager->getMyAvatar(); - glm::vec3 avatarPos = myAvatar->getPosition(); + glm::vec3 avatarPos = myAvatar->getWorldPosition(); STAT_UPDATE(position, QVector3D(avatarPos.x, avatarPos.y, avatarPos.z)); STAT_UPDATE_FLOAT(speed, glm::length(myAvatar->getVelocity()), 0.01f); STAT_UPDATE_FLOAT(yaw, myAvatar->getBodyYaw(), 0.1f); diff --git a/interface/src/ui/overlays/Base3DOverlay.cpp b/interface/src/ui/overlays/Base3DOverlay.cpp index 42425932df..457f06aaa2 100644 --- a/interface/src/ui/overlays/Base3DOverlay.cpp +++ b/interface/src/ui/overlays/Base3DOverlay.cpp @@ -114,7 +114,7 @@ void Base3DOverlay::setProperties(const QVariantMap& originalProperties) { properties["parentJointIndex"] = getParentJointIndex(); } if (!properties["position"].isValid() && !properties["localPosition"].isValid()) { - properties["position"] = vec3toVariant(getPosition()); + properties["position"] = vec3toVariant(getWorldPosition()); } if (!properties["orientation"].isValid() && !properties["localOrientation"].isValid()) { properties["orientation"] = quatToVariant(getOrientation()); @@ -214,7 +214,7 @@ QVariant Base3DOverlay::getProperty(const QString& property) { return _name; } if (property == "position" || property == "start" || property == "p1" || property == "point") { - return vec3toVariant(getPosition()); + return vec3toVariant(getWorldPosition()); } if (property == "localPosition") { return vec3toVariant(getLocalPosition()); diff --git a/interface/src/ui/overlays/Base3DOverlay.h b/interface/src/ui/overlays/Base3DOverlay.h index 436cfbf97b..817e9b2acf 100644 --- a/interface/src/ui/overlays/Base3DOverlay.h +++ b/interface/src/ui/overlays/Base3DOverlay.h @@ -33,7 +33,7 @@ public: virtual bool is3D() const override { return true; } // TODO: consider implementing registration points in this class - glm::vec3 getCenter() const { return getPosition(); } + glm::vec3 getCenter() const { return getWorldPosition(); } float getLineWidth() const { return _lineWidth; } bool getIsSolid() const { return _isSolid; } diff --git a/interface/src/ui/overlays/Circle3DOverlay.cpp b/interface/src/ui/overlays/Circle3DOverlay.cpp index 536b2c764f..88172950ee 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.cpp +++ b/interface/src/ui/overlays/Circle3DOverlay.cpp @@ -415,11 +415,11 @@ bool Circle3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve // Scale the dimensions by the diameter glm::vec2 dimensions = getOuterRadius() * 2.0f * getDimensions(); - bool intersects = findRayRectangleIntersection(origin, direction, getRotation(), getPosition(), dimensions, distance); + bool intersects = findRayRectangleIntersection(origin, direction, getRotation(), getWorldPosition(), dimensions, distance); if (intersects) { glm::vec3 hitPosition = origin + (distance * direction); - glm::vec3 localHitPosition = glm::inverse(getRotation()) * (hitPosition - getPosition()); + glm::vec3 localHitPosition = glm::inverse(getRotation()) * (hitPosition - getWorldPosition()); localHitPosition.x /= getDimensions().x; localHitPosition.y /= getDimensions().y; float distanceToHit = glm::length(localHitPosition); diff --git a/interface/src/ui/overlays/ContextOverlayInterface.cpp b/interface/src/ui/overlays/ContextOverlayInterface.cpp index 70b75a0b17..ccbf9fb1b2 100644 --- a/interface/src/ui/overlays/ContextOverlayInterface.cpp +++ b/interface/src/ui/overlays/ContextOverlayInterface.cpp @@ -161,7 +161,7 @@ bool ContextOverlayInterface::createOrDestroyContextOverlay(const EntityItemID& _contextOverlay->setIsFacingAvatar(true); _contextOverlayID = qApp->getOverlays().addOverlay(_contextOverlay); } - _contextOverlay->setPosition(contextOverlayPosition); + _contextOverlay->setWorldPosition(contextOverlayPosition); _contextOverlay->setDimensions(contextOverlayDimensions); _contextOverlay->setRotation(entityProperties.getRotation()); _contextOverlay->setVisible(true); diff --git a/interface/src/ui/overlays/Cube3DOverlay.cpp b/interface/src/ui/overlays/Cube3DOverlay.cpp index b6df1dbc31..d95b8c7761 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.cpp +++ b/interface/src/ui/overlays/Cube3DOverlay.cpp @@ -144,7 +144,7 @@ QVariant Cube3DOverlay::getProperty(const QString& property) { Transform Cube3DOverlay::evalRenderTransform() { // TODO: handle registration point?? - glm::vec3 position = getPosition(); + glm::vec3 position = getWorldPosition(); glm::vec3 dimensions = getDimensions(); glm::quat rotation = getRotation(); diff --git a/interface/src/ui/overlays/Grid3DOverlay.cpp b/interface/src/ui/overlays/Grid3DOverlay.cpp index ca275368cb..afce710d08 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.cpp +++ b/interface/src/ui/overlays/Grid3DOverlay.cpp @@ -69,7 +69,7 @@ void Grid3DOverlay::render(RenderArgs* args) { auto minCorner = glm::vec2(-0.5f, -0.5f); auto maxCorner = glm::vec2(0.5f, 0.5f); - auto position = getPosition(); + auto position = getWorldPosition(); if (_followCamera) { // Get the camera position rounded to the nearest major grid line // This grid is for UI and should lie on worldlines diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index bdb35d4f49..8869817829 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -45,7 +45,7 @@ Line3DOverlay::~Line3DOverlay() { } glm::vec3 Line3DOverlay::getStart() const { - return getPosition(); + return getWorldPosition(); } glm::vec3 Line3DOverlay::getEnd() const { @@ -69,7 +69,7 @@ glm::vec3 Line3DOverlay::getEnd() const { } void Line3DOverlay::setStart(const glm::vec3& start) { - setPosition(start); + setWorldPosition(start); } void Line3DOverlay::setEnd(const glm::vec3& end) { diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 2a13249958..eedacd2d67 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -121,7 +121,7 @@ void ModelOverlay::setDrawHUDLayer(bool drawHUDLayer) { } void ModelOverlay::setProperties(const QVariantMap& properties) { - auto origPosition = getPosition(); + auto origPosition = getWorldPosition(); auto origRotation = getRotation(); auto origDimensions = getDimensions(); auto origScale = getSNScale(); @@ -143,7 +143,7 @@ void ModelOverlay::setProperties(const QVariantMap& properties) { _scaleToFit = false; } - if (origPosition != getPosition() || origRotation != getRotation() || origDimensions != getDimensions() || origScale != getSNScale()) { + if (origPosition != getWorldPosition() || origRotation != getRotation() || origDimensions != getDimensions() || origScale != getSNScale()) { _updateModel = true; } @@ -384,7 +384,7 @@ void ModelOverlay::locationChanged(bool tellPhysics) { // FIXME Start using the _renderTransform instead of calling for Transform and Dimensions from here, do the custom things needed in evalRenderTransform() if (_model && _model->isActive()) { _model->setRotation(getRotation()); - _model->setTranslation(getPosition()); + _model->setTranslation(getWorldPosition()); } } diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index fd5aae4027..ca79d0b663 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -827,7 +827,7 @@ PointerEvent Overlays::calculateOverlayPointerEvent(OverlayID overlayID, PickRay if (!overlay) { return PointerEvent(); } - glm::vec3 position = overlay->getPosition(); + glm::vec3 position = overlay->getWorldPosition(); glm::quat rotation = overlay->getRotation(); glm::vec2 dimensions = overlay->getSize(); diff --git a/interface/src/ui/overlays/OverlaysPayload.cpp b/interface/src/ui/overlays/OverlaysPayload.cpp index 194c530df0..40d70d5348 100644 --- a/interface/src/ui/overlays/OverlaysPayload.cpp +++ b/interface/src/ui/overlays/OverlaysPayload.cpp @@ -69,7 +69,7 @@ namespace render { auto batch = args->_batch; auto avatar = DependencyManager::get()->getMyAvatar(); glm::quat myAvatarRotation = avatar->getOrientation(); - glm::vec3 myAvatarPosition = avatar->getPosition(); + glm::vec3 myAvatarPosition = avatar->getWorldPosition(); float angle = glm::degrees(glm::angle(myAvatarRotation)); glm::vec3 axis = glm::axis(myAvatarRotation); float myAvatarScale = avatar->getModelScale(); diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index ac3fe66ddc..ae5e0f32d0 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -69,7 +69,7 @@ QVariant Planar3DOverlay::getProperty(const QString& property) { bool Planar3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face, glm::vec3& surfaceNormal) { // FIXME - face and surfaceNormal not being returned - return findRayRectangleIntersection(origin, direction, getRotation(), getPosition(), getDimensions(), distance); + return findRayRectangleIntersection(origin, direction, getRotation(), getWorldPosition(), getDimensions(), distance); } Transform Planar3DOverlay::evalRenderTransform() { diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.cpp b/interface/src/ui/overlays/Rectangle3DOverlay.cpp index 47d47b76a5..2010b00d4d 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.cpp +++ b/interface/src/ui/overlays/Rectangle3DOverlay.cpp @@ -58,7 +58,7 @@ void Rectangle3DOverlay::render(RenderArgs* args) { const float MAX_COLOR = 255.0f; glm::vec4 rectangleColor(color.red / MAX_COLOR, color.green / MAX_COLOR, color.blue / MAX_COLOR, alpha); - glm::vec3 position = getPosition(); + glm::vec3 position = getWorldPosition(); glm::vec2 dimensions = getDimensions(); glm::vec2 halfDimensions = dimensions * 0.5f; glm::quat rotation = getRotation(); diff --git a/interface/src/ui/overlays/Shape3DOverlay.cpp b/interface/src/ui/overlays/Shape3DOverlay.cpp index a3b51d40bf..7e9f44ef1d 100644 --- a/interface/src/ui/overlays/Shape3DOverlay.cpp +++ b/interface/src/ui/overlays/Shape3DOverlay.cpp @@ -121,7 +121,7 @@ QVariant Shape3DOverlay::getProperty(const QString& property) { Transform Shape3DOverlay::evalRenderTransform() { // TODO: handle registration point?? - glm::vec3 position = getPosition(); + glm::vec3 position = getWorldPosition(); glm::vec3 dimensions = getDimensions(); glm::quat rotation = getRotation(); diff --git a/interface/src/ui/overlays/Volume3DOverlay.cpp b/interface/src/ui/overlays/Volume3DOverlay.cpp index 8aa8490937..4e685bed0e 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.cpp +++ b/interface/src/ui/overlays/Volume3DOverlay.cpp @@ -21,7 +21,7 @@ Volume3DOverlay::Volume3DOverlay(const Volume3DOverlay* volume3DOverlay) : AABox Volume3DOverlay::getBounds() const { auto extents = Extents{_localBoundingBox}; extents.rotate(getRotation()); - extents.shiftBy(getPosition()); + extents.shiftBy(getWorldPosition()); return AABox(extents); } diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 0c75803d35..5d8e433615 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -151,7 +151,7 @@ void Web3DOverlay::buildWebSurface() { _webSurface = DependencyManager::get()->acquire(_url); setupQmlSurface(); } - _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); + _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getWorldPosition())); _webSurface->resize(QSize(_resolution.x, _resolution.y)); _webSurface->resume(); }); @@ -171,7 +171,7 @@ void Web3DOverlay::hoverLeaveOverlay(const PointerEvent& event) { void Web3DOverlay::update(float deltatime) { if (_webSurface) { // update globalPosition - _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); + _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getWorldPosition())); } Parent::update(deltatime); } @@ -615,7 +615,7 @@ bool Web3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& // Don't call applyTransformTo() or setTransform() here because this code runs too frequently. // Produce the dimensions of the overlay based on the image's aspect ratio and the overlay's scale. - return findRayRectangleIntersection(origin, direction, getRotation(), getPosition(), getSize(), distance); + return findRayRectangleIntersection(origin, direction, getRotation(), getWorldPosition(), getSize(), distance); } Web3DOverlay* Web3DOverlay::createClone() const { diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index f674a2206e..67efeda90d 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -145,18 +145,18 @@ void Avatar::init() { glm::vec3 Avatar::getChestPosition() const { // for now, let's just assume that the "chest" is halfway between the root and the neck glm::vec3 neckPosition; - return _skeletonModel->getNeckPosition(neckPosition) ? (getPosition() + neckPosition) * 0.5f : getPosition(); + return _skeletonModel->getNeckPosition(neckPosition) ? (getWorldPosition() + neckPosition) * 0.5f : getWorldPosition(); } glm::vec3 Avatar::getNeckPosition() const { glm::vec3 neckPosition; - return _skeletonModel->getNeckPosition(neckPosition) ? neckPosition : getPosition(); + return _skeletonModel->getNeckPosition(neckPosition) ? neckPosition : getWorldPosition(); } AABox Avatar::getBounds() const { if (!_skeletonModel->isRenderable() || _skeletonModel->needsFixupInScene()) { // approximately 2m tall, scaled to user request. - return AABox(getPosition() - glm::vec3(getModelScale()), getModelScale() * 2.0f); + return AABox(getWorldPosition() - glm::vec3(getModelScale()), getModelScale() * 2.0f); } return _skeletonModel->getRenderableMeshBound(); } @@ -359,9 +359,9 @@ void Avatar::simulate(float deltaTime, bool inView) { locationChanged(); // joints changed, so if there are any children, update them. _hasNewJointData = false; - glm::vec3 headPosition = getPosition(); + glm::vec3 headPosition = getWorldPosition(); if (!_skeletonModel->getHeadPosition(headPosition)) { - headPosition = getPosition(); + headPosition = getWorldPosition(); } head->setPosition(headPosition); } @@ -427,7 +427,7 @@ bool Avatar::isLookingAtMe(AvatarSharedPointer avatar) const { } void Avatar::slamPosition(const glm::vec3& newPosition) { - setPosition(newPosition); + setWorldPosition(newPosition); _positionDeltaAccumulator = glm::vec3(0.0f); setVelocity(glm::vec3(0.0f)); _lastVelocity = glm::vec3(0.0f); @@ -439,7 +439,7 @@ void Avatar::updateAttitude(const glm::quat& orientation) { } void Avatar::applyPositionDelta(const glm::vec3& delta) { - setPosition(getPosition() + delta); + setWorldPosition(getWorldPosition() + delta); _positionDeltaAccumulator += delta; } @@ -588,7 +588,7 @@ void Avatar::render(RenderArgs* renderArgs) { glm::vec3 viewPos = renderArgs->getViewFrustum().getPosition(); const float MAX_DISTANCE_SQUARED_FOR_SHOWING_POINTING_LASERS = 100.0f; // 10^2 - if (glm::distance2(viewPos, getPosition()) < MAX_DISTANCE_SQUARED_FOR_SHOWING_POINTING_LASERS) { + if (glm::distance2(viewPos, getWorldPosition()) < MAX_DISTANCE_SQUARED_FOR_SHOWING_POINTING_LASERS) { auto geometryCache = DependencyManager::get(); // render pointing lasers @@ -647,7 +647,7 @@ void Avatar::render(RenderArgs* renderArgs) { } ViewFrustum frustum = renderArgs->getViewFrustum(); - if (!frustum.sphereIntersectsFrustum(getPosition(), getBoundingRadius())) { + if (!frustum.sphereIntersectsFrustum(getWorldPosition(), getBoundingRadius())) { return; } @@ -658,7 +658,7 @@ void Avatar::render(RenderArgs* renderArgs) { } if (showReceiveStats || showNamesAboveHeads) { - glm::vec3 toTarget = frustum.getPosition() - getPosition(); + glm::vec3 toTarget = frustum.getPosition() - getWorldPosition(); float distanceToTarget = glm::length(toTarget); const float DISPLAYNAME_DISTANCE = 20.0f; updateDisplayNameAlpha(distanceToTarget < DISPLAYNAME_DISTANCE); @@ -721,7 +721,7 @@ void Avatar::simulateAttachments(float deltaTime) { glm::quat jointRotation; if (attachment.isSoft) { // soft attachments do not have transform offsets - model->setTranslation(getPosition()); + model->setTranslation(getWorldPosition()); model->setRotation(getOrientation() * Quaternions::Y_180); model->simulate(deltaTime); } else { @@ -775,9 +775,9 @@ glm::vec3 Avatar::getDisplayNamePosition() const { const float HEAD_PROPORTION = 0.75f; float size = getBoundingRadius(); - DEBUG_VALUE("_position =", getPosition()); + DEBUG_VALUE("_position =", getWorldPosition()); DEBUG_VALUE("size =", size); - namePosition = getPosition() + bodyUpDirection * (size * HEAD_PROPORTION); + namePosition = getWorldPosition() + bodyUpDirection * (size * HEAD_PROPORTION); } if (glm::any(glm::isnan(namePosition)) || glm::any(glm::isinf(namePosition))) { @@ -902,7 +902,7 @@ glm::vec3 Avatar::getSkeletonPosition() const { // The avatar is rotated PI about the yAxis, so we have to correct for it // to get the skeleton offset contribution in the world-frame. const glm::quat FLIP = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); - return getPosition() + getOrientation() * FLIP * _skeletonOffset; + return getWorldPosition() + getOrientation() * FLIP * _skeletonOffset; } QVector Avatar::getJointRotations() const { @@ -1166,7 +1166,7 @@ glm::vec3 Avatar::getJointPosition(const QString& name) const { void Avatar::scaleVectorRelativeToPosition(glm::vec3 &positionToScale) const { //Scale a world space vector as if it was relative to the position - positionToScale = getPosition() + getModelScale() * (positionToScale - getPosition()); + positionToScale = getWorldPosition() + getModelScale() * (positionToScale - getWorldPosition()); } void Avatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { @@ -1254,12 +1254,12 @@ int Avatar::parseDataFromBuffer(const QByteArray& buffer) { } // change in position implies movement - glm::vec3 oldPosition = getPosition(); + glm::vec3 oldPosition = getWorldPosition(); int bytesRead = AvatarData::parseDataFromBuffer(buffer); const float MOVE_DISTANCE_THRESHOLD = 0.001f; - _moving = glm::distance(oldPosition, getPosition()) > MOVE_DISTANCE_THRESHOLD; + _moving = glm::distance(oldPosition, getWorldPosition()) > MOVE_DISTANCE_THRESHOLD; if (_moving) { addPhysicsFlags(Simulation::DIRTY_POSITION); } @@ -1333,7 +1333,7 @@ float Avatar::getHeadHeight() const { Extents extents = _skeletonModel->getMeshExtents(); glm::vec3 neckPosition; if (!extents.isEmpty() && extents.isValid() && _skeletonModel->getNeckPosition(neckPosition)) { - return extents.maximum.y / 2.0f - neckPosition.y + getPosition().y; + return extents.maximum.y / 2.0f - neckPosition.y + getWorldPosition().y; } const float DEFAULT_HEAD_HEIGHT = 0.25f; @@ -1378,8 +1378,8 @@ void Avatar::getCapsule(glm::vec3& start, glm::vec3& end, float& radius) { ShapeInfo shapeInfo; computeShapeInfo(shapeInfo); glm::vec3 halfExtents = shapeInfo.getHalfExtents(); // x = radius, y = halfHeight - start = getPosition() - glm::vec3(0, halfExtents.y, 0) + shapeInfo.getOffset(); - end = getPosition() + glm::vec3(0, halfExtents.y, 0) + shapeInfo.getOffset(); + start = getWorldPosition() - glm::vec3(0, halfExtents.y, 0) + shapeInfo.getOffset(); + end = getWorldPosition() + glm::vec3(0, halfExtents.y, 0) + shapeInfo.getOffset(); radius = halfExtents.x; } @@ -1472,7 +1472,7 @@ glm::quat Avatar::getUncachedRightPalmRotation() const { } void Avatar::setPositionViaScript(const glm::vec3& position) { - setPosition(position); + setWorldPosition(position); updateAttitude(getOrientation()); } diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 877bcd9353..2fe62a4ca2 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -118,12 +118,12 @@ void AvatarData::setTargetScale(float targetScale) { } glm::vec3 AvatarData::getHandPosition() const { - return getOrientation() * _handPosition + getPosition(); + return getOrientation() * _handPosition + getWorldPosition(); } void AvatarData::setHandPosition(const glm::vec3& handPosition) { // store relative to position/orientation - _handPosition = glm::inverse(getOrientation()) * (handPosition - getPosition()); + _handPosition = glm::inverse(getOrientation()) * (handPosition - getWorldPosition()); } void AvatarData::lazyInitHeadData() const { @@ -1901,7 +1901,7 @@ void AvatarData::setRecordingBasis(std::shared_ptr recordingBasis) { if (!recordingBasis) { recordingBasis = std::make_shared(); recordingBasis->setRotation(getOrientation()); - recordingBasis->setTranslation(getPosition()); + recordingBasis->setTranslation(getWorldPosition()); // TODO: find a different way to record/playback the Scale of the avatar //recordingBasis->setScale(getTargetScale()); } @@ -2059,11 +2059,11 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) { auto relativeTransform = Transform::fromJson(json[JSON_AVATAR_RELATIVE]); auto worldTransform = currentBasis->worldTransform(relativeTransform); - setPosition(worldTransform.getTranslation()); + setWorldPosition(worldTransform.getTranslation()); orientation = worldTransform.getRotation(); } else { // We still set the position in the case that there is no movement. - setPosition(currentBasis->getTranslation()); + setWorldPosition(currentBasis->getTranslation()); orientation = currentBasis->getRotation(); } setOrientation(orientation); @@ -2186,7 +2186,7 @@ void AvatarData::setBodyRoll(float bodyRoll) { } void AvatarData::setPositionViaScript(const glm::vec3& position) { - SpatiallyNestable::setPosition(position); + SpatiallyNestable::setWorldPosition(position); } void AvatarData::setOrientationViaScript(const glm::quat& orientation) { @@ -2413,7 +2413,7 @@ void AvatarData::sortAvatars( // (a) apparentSize // (b) proximity to center of view // (c) time since last update - glm::vec3 avatarPosition = avatar->getPosition(); + glm::vec3 avatarPosition = avatar->getWorldPosition(); glm::vec3 offset = avatarPosition - frustumCenter; float distance = glm::length(offset) + 0.001f; // add 1mm to avoid divide by zero diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 89fe270af1..5ce4395baa 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -351,7 +351,7 @@ public: class AvatarData : public QObject, public SpatiallyNestable { Q_OBJECT - Q_PROPERTY(glm::vec3 position READ getPosition WRITE setPositionViaScript) + Q_PROPERTY(glm::vec3 position READ getWorldPosition WRITE setPositionViaScript) Q_PROPERTY(float scale READ getTargetScale WRITE setTargetScale) Q_PROPERTY(float density READ getDensity) Q_PROPERTY(glm::vec3 handPosition READ getHandPosition WRITE setHandPosition) diff --git a/libraries/avatars/src/AvatarHashMap.cpp b/libraries/avatars/src/AvatarHashMap.cpp index 3712080cdb..61b13d7749 100644 --- a/libraries/avatars/src/AvatarHashMap.cpp +++ b/libraries/avatars/src/AvatarHashMap.cpp @@ -33,7 +33,7 @@ QVector AvatarHashMap::getAvatarIdentifiers() { bool AvatarHashMap::isAvatarInRange(const glm::vec3& position, const float range) { auto hashCopy = getHashCopy(); foreach(const AvatarSharedPointer& sharedAvatar, hashCopy) { - glm::vec3 avatarPosition = sharedAvatar->getPosition(); + glm::vec3 avatarPosition = sharedAvatar->getWorldPosition(); float distance = glm::distance(avatarPosition, position); if (distance < range) { return true; @@ -47,7 +47,7 @@ int AvatarHashMap::numberOfAvatarsInRange(const glm::vec3& position, float range auto rangeMeters2 = rangeMeters * rangeMeters; int count = 0; for (const AvatarSharedPointer& sharedAvatar : hashCopy) { - glm::vec3 avatarPosition = sharedAvatar->getPosition(); + glm::vec3 avatarPosition = sharedAvatar->getWorldPosition(); auto distance2 = glm::distance2(avatarPosition, position); if (distance2 < rangeMeters2) { ++count; diff --git a/libraries/avatars/src/HeadData.cpp b/libraries/avatars/src/HeadData.cpp index 1fda984e78..6ff36331cf 100644 --- a/libraries/avatars/src/HeadData.cpp +++ b/libraries/avatars/src/HeadData.cpp @@ -155,7 +155,7 @@ QJsonObject HeadData::toJson() const { auto lookat = getLookAtPosition(); if (lookat != vec3()) { vec3 relativeLookAt = glm::inverse(_owningAvatar->getOrientation()) * - (getLookAtPosition() - _owningAvatar->getPosition()); + (getLookAtPosition() - _owningAvatar->getWorldPosition()); headJson[JSON_AVATAR_HEAD_LOOKAT] = toJsonValue(relativeLookAt); } return headJson; @@ -185,7 +185,7 @@ void HeadData::fromJson(const QJsonObject& json) { if (json.contains(JSON_AVATAR_HEAD_LOOKAT)) { auto relativeLookAt = vec3FromJsonValue(json[JSON_AVATAR_HEAD_LOOKAT]); if (glm::length2(relativeLookAt) > 0.01f) { - setLookAtPosition((_owningAvatar->getOrientation() * relativeLookAt) + _owningAvatar->getPosition()); + setLookAtPosition((_owningAvatar->getOrientation() * relativeLookAt) + _owningAvatar->getWorldPosition()); } } diff --git a/libraries/avatars/src/ScriptAvatarData.cpp b/libraries/avatars/src/ScriptAvatarData.cpp index d0643d28f8..cac3f600ca 100644 --- a/libraries/avatars/src/ScriptAvatarData.cpp +++ b/libraries/avatars/src/ScriptAvatarData.cpp @@ -24,7 +24,7 @@ ScriptAvatarData::ScriptAvatarData(AvatarSharedPointer avatarData) : // glm::vec3 ScriptAvatarData::getPosition() const { if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) { - return sharedAvatarData->getPosition(); + return sharedAvatarData->getWorldPosition(); } else { return glm::vec3(); } diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index bf17f34749..a9277ff19a 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -509,7 +509,7 @@ static glm::vec2 projectOntoEntityXYPlane(EntityItemPointer entity, const PickRa if (entity) { - glm::vec3 entityPosition = entity->getPosition(); + glm::vec3 entityPosition = entity->getWorldPosition(); glm::quat entityRotation = entity->getRotation(); glm::vec3 entityDimensions = entity->getDimensions(); glm::vec3 entityRegistrationPoint = entity->getRegistrationPoint(); diff --git a/libraries/entities-renderer/src/RenderableLightEntityItem.cpp b/libraries/entities-renderer/src/RenderableLightEntityItem.cpp index 738b1a253e..e00cd98e65 100644 --- a/libraries/entities-renderer/src/RenderableLightEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableLightEntityItem.cpp @@ -28,7 +28,7 @@ void LightEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPoint lightPayload.setVisible(_visible); auto light = lightPayload.editLight(); - light->setPosition(entity->getPosition()); + light->setPosition(entity->getWorldPosition()); light->setOrientation(entity->getRotation()); bool success; diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 7db19704b4..67b7b175b7 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -124,7 +124,7 @@ void RenderableModelEntityItem::doInitialModelSimulation() { model->setScaleToFit(true, getDimensions()); model->setSnapModelToRegistrationPoint(true, getRegistrationPoint()); model->setRotation(getRotation()); - model->setTranslation(getPosition()); + model->setTranslation(getWorldPosition()); if (_needsInitialSimulation) { model->simulate(0.0f); diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 3fd1d024c1..e4706fa15e 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -154,7 +154,7 @@ void PolyLineEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo entity->resetPolyLineChanged(); _polylineTransform = Transform(); - _polylineTransform.setTranslation(entity->getPosition()); + _polylineTransform.setTranslation(entity->getWorldPosition()); _polylineTransform.setRotation(entity->getRotation()); if (pointsChanged) { diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index e92bc636bd..fd7407287d 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -232,7 +232,7 @@ glm::mat4 RenderablePolyVoxEntityItem::voxelToLocalMatrix() const { glm::vec3 scale = dimensions / voxelVolumeSize; // meters / voxel-units bool success; // TODO -- Does this actually have to happen in world space? glm::vec3 center = getCenterPosition(success); // this handles registrationPoint changes - glm::vec3 position = getPosition(success); + glm::vec3 position = getWorldPosition(success); glm::vec3 positionToCenter = center - position; positionToCenter -= dimensions * Vectors::HALF - getSurfacePositionAdjustment(); @@ -248,7 +248,7 @@ glm::mat4 RenderablePolyVoxEntityItem::localToVoxelMatrix() const { glm::mat4 RenderablePolyVoxEntityItem::voxelToWorldMatrix() const { glm::mat4 rotation = glm::mat4_cast(getRotation()); - glm::mat4 translation = glm::translate(getPosition()); + glm::mat4 translation = glm::translate(getWorldPosition()); return translation * rotation * voxelToLocalMatrix(); } @@ -579,7 +579,7 @@ bool RenderablePolyVoxEntityItem::findDetailedRayIntersection(const glm::vec3& o // the PolyVox ray intersection code requires a near and far point. // set ray cast length to long enough to cover all of the voxel space - float distanceToEntity = glm::distance(origin, getPosition()); + float distanceToEntity = glm::distance(origin, getWorldPosition()); glm::vec3 dimensions = getDimensions(); float largestDimension = glm::compMax(dimensions) * 2.0f; glm::vec3 farPoint = origin + normDirection * (distanceToEntity + largestDimension); diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index 332d87f930..dffde3386b 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -81,7 +81,7 @@ void ShapeEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce _color = vec4(toGlm(entity->getXColor()), entity->getLocalRenderAlpha()); _shape = entity->getShape(); - _position = entity->getPosition(); + _position = entity->getWorldPosition(); _dimensions = entity->getDimensions(); _orientation = entity->getOrientation(); _renderTransform = getModelTransform(); diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index a2e574a829..231f9c35b6 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -69,7 +69,7 @@ void WebEntityRenderer::onRemoveFromSceneTyped(const TypedEntityPointer& entity) } bool WebEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const { - if (_contextPosition != entity->getPosition()) { + if (_contextPosition != entity->getWorldPosition()) { return true; } @@ -127,9 +127,9 @@ void WebEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scene buildWebSurface(entity); } - if (_contextPosition != entity->getPosition()) { + if (_contextPosition != entity->getWorldPosition()) { // update globalPosition - _contextPosition = entity->getPosition(); + _contextPosition = entity->getWorldPosition(); _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(_contextPosition)); } diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 0235f1b7a3..e56e692890 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -200,7 +200,7 @@ void ZoneEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scen bool hazeChanged = entity->hazePropertiesChanged(); entity->resetRenderingPropertiesChanged(); - _lastPosition = entity->getPosition(); + _lastPosition = entity->getWorldPosition(); _lastRotation = entity->getRotation(); _lastDimensions = entity->getDimensions(); @@ -271,7 +271,7 @@ bool ZoneEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPoint return true; } - if (entity->getPosition() != _lastPosition) { + if (entity->getWorldPosition() != _lastPosition) { return true; } if (entity->getDimensions() != _lastDimensions) { diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 71e6990aaf..e1ff932915 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -888,7 +888,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef } void EntityItem::debugDump() const { - auto position = getPosition(); + auto position = getWorldPosition(); qCDebug(entities) << "EntityItem id:" << getEntityItemID(); qCDebug(entities, " edited ago:%f", (double)getEditedAgo()); qCDebug(entities, " position:%f,%f,%f", (double)position.x, (double)position.y, (double)position.z); @@ -1168,7 +1168,7 @@ bool EntityItem::wantTerseEditLogging() const { } glm::mat4 EntityItem::getEntityToWorldMatrix() const { - glm::mat4 translation = glm::translate(getPosition()); + glm::mat4 translation = glm::translate(getWorldPosition()); glm::mat4 rotation = glm::mat4_cast(getRotation()); glm::mat4 scale = glm::scale(getDimensions()); glm::mat4 registration = glm::translate(ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint()); @@ -1429,7 +1429,7 @@ const Transform EntityItem::getTransformToCenter(bool& success) const { /// AACube EntityItem::getMaximumAACube(bool& success) const { if (_recalcMaxAACube) { - glm::vec3 centerOfRotation = getPosition(success); // also where _registration point is + glm::vec3 centerOfRotation = getWorldPosition(success); // also where _registration point is if (success) { _recalcMaxAACube = false; // we want to compute the furthestExtent that an entity can extend out from its "position" @@ -1457,7 +1457,7 @@ AACube EntityItem::getMaximumAACube(bool& success) const { AACube EntityItem::getMinimumAACube(bool& success) const { if (_recalcMinAACube) { // position represents the position of the registration point. - glm::vec3 position = getPosition(success); + glm::vec3 position = getWorldPosition(success); if (success) { _recalcMinAACube = false; glm::vec3 dimensions = getDimensions(); @@ -1487,7 +1487,7 @@ AACube EntityItem::getMinimumAACube(bool& success) const { AABox EntityItem::getAABox(bool& success) const { if (_recalcAABox) { // position represents the position of the registration point. - glm::vec3 position = getPosition(success); + glm::vec3 position = getWorldPosition(success); if (success) { _recalcAABox = false; glm::vec3 dimensions = getDimensions(); @@ -2381,7 +2381,7 @@ void EntityItem::dimensionsChanged() { void EntityItem::globalizeProperties(EntityItemProperties& properties, const QString& messageTemplate, const glm::vec3& offset) const { // TODO -- combine this with convertLocationToScriptSemantics bool success; - auto globalPosition = getPosition(success); + auto globalPosition = getWorldPosition(success); if (success) { properties.setPosition(globalPosition + offset); properties.setRotation(getRotation()); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index ed7a1469b3..329a616609 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -385,7 +385,7 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& properties.setParentJointIndex(entity->getParentJointIndex()); } if (!scriptSideProperties.localPositionChanged() && !scriptSideProperties.positionChanged()) { - properties.setPosition(entity->getPosition()); + properties.setPosition(entity->getWorldPosition()); } if (!scriptSideProperties.localRotationChanged() && !scriptSideProperties.rotationChanged()) { properties.setRotation(entity->getOrientation()); @@ -1797,7 +1797,7 @@ glm::mat4 EntityScriptingInterface::getEntityTransform(const QUuid& entityID) { _entityTree->withReadLock([&] { EntityItemPointer entity = _entityTree->findEntityByEntityItemID(EntityItemID(entityID)); if (entity) { - glm::mat4 translation = glm::translate(entity->getPosition()); + glm::mat4 translation = glm::translate(entity->getWorldPosition()); glm::mat4 rotation = glm::mat4_cast(entity->getRotation()); result = translation * rotation; } diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index bde82d96a1..64fbc6aefb 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -681,7 +681,7 @@ bool EntityTree::findNearPointOperation(const OctreeElementPointer& element, voi // we may have gotten NULL back, meaning no entity was available if (thisClosestEntity) { - glm::vec3 entityPosition = thisClosestEntity->getPosition(); + glm::vec3 entityPosition = thisClosestEntity->getWorldPosition(); float distanceFromPointToEntity = glm::distance(entityPosition, args->position); // If we're within our target radius @@ -1054,7 +1054,7 @@ bool EntityTree::filterProperties(EntityItemPointer& existingEntity, EntityItemP bool accepted = true; auto entityEditFilters = DependencyManager::get(); if (entityEditFilters) { - auto position = existingEntity ? existingEntity->getPosition() : propertiesIn.getPosition(); + auto position = existingEntity ? existingEntity->getWorldPosition() : propertiesIn.getPosition(); auto entityID = existingEntity ? existingEntity->getEntityItemID() : EntityItemID(); accepted = entityEditFilters->filter(position, propertiesIn, propertiesOut, wasChanged, filterType, entityID); } diff --git a/libraries/entities/src/EntityTreeElement.cpp b/libraries/entities/src/EntityTreeElement.cpp index 2696377028..4b588fc23c 100644 --- a/libraries/entities/src/EntityTreeElement.cpp +++ b/libraries/entities/src/EntityTreeElement.cpp @@ -663,7 +663,7 @@ bool EntityTreeElement::findDetailedRayIntersection(const glm::vec3& origin, con // extents is the entity relative, scaled, centered extents of the entity glm::mat4 rotation = glm::mat4_cast(entity->getRotation()); - glm::mat4 translation = glm::translate(entity->getPosition()); + glm::mat4 translation = glm::translate(entity->getWorldPosition()); glm::mat4 entityToWorldMatrix = translation * rotation; glm::mat4 worldToEntityMatrix = glm::inverse(entityToWorldMatrix); @@ -718,7 +718,7 @@ bool EntityTreeElement::findSpherePenetration(const glm::vec3& center, float rad bool result = false; withReadLock([&] { foreach(EntityItemPointer entity, _entityItems) { - glm::vec3 entityCenter = entity->getPosition(); + glm::vec3 entityCenter = entity->getWorldPosition(); float entityRadius = entity->getRadius(); // don't penetrate yourself @@ -743,7 +743,7 @@ EntityItemPointer EntityTreeElement::getClosestEntity(glm::vec3 position) const float closestEntityDistance = FLT_MAX; withReadLock([&] { foreach(EntityItemPointer entity, _entityItems) { - float distanceToEntity = glm::distance2(position, entity->getPosition()); + float distanceToEntity = glm::distance2(position, entity->getWorldPosition()); if (distanceToEntity < closestEntityDistance) { closestEntity = entity; } @@ -788,7 +788,7 @@ void EntityTreeElement::getEntities(const glm::vec3& searchPosition, float searc // determine the worldToEntityMatrix that doesn't include scale because // we're going to use the registration aware aa box in the entity frame glm::mat4 rotation = glm::mat4_cast(entity->getRotation()); - glm::mat4 translation = glm::translate(entity->getPosition()); + glm::mat4 translation = glm::translate(entity->getWorldPosition()); glm::mat4 entityToWorldMatrix = translation * rotation; glm::mat4 worldToEntityMatrix = glm::inverse(entityToWorldMatrix); diff --git a/libraries/entities/src/LineEntityItem.cpp b/libraries/entities/src/LineEntityItem.cpp index 119236e32d..02d16f2537 100644 --- a/libraries/entities/src/LineEntityItem.cpp +++ b/libraries/entities/src/LineEntityItem.cpp @@ -156,7 +156,7 @@ void LineEntityItem::debugDump() const { quint64 now = usecTimestampNow(); qCDebug(entities) << " LINE EntityItem id:" << getEntityItemID() << "---------------------------------------------"; qCDebug(entities) << " color:" << _color[0] << "," << _color[1] << "," << _color[2]; - qCDebug(entities) << " position:" << debugTreeVector(getPosition()); + qCDebug(entities) << " position:" << debugTreeVector(getWorldPosition()); qCDebug(entities) << " dimensions:" << debugTreeVector(getDimensions()); qCDebug(entities) << " getLastEdited:" << debugTime(getLastEdited(), now); } diff --git a/libraries/entities/src/ModelEntityItem.cpp b/libraries/entities/src/ModelEntityItem.cpp index 26f063f7cc..313721ff54 100644 --- a/libraries/entities/src/ModelEntityItem.cpp +++ b/libraries/entities/src/ModelEntityItem.cpp @@ -189,7 +189,7 @@ void ModelEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBit void ModelEntityItem::debugDump() const { qCDebug(entities) << "ModelEntityItem id:" << getEntityItemID(); qCDebug(entities) << " edited ago:" << getEditedAgo(); - qCDebug(entities) << " position:" << getPosition(); + qCDebug(entities) << " position:" << getWorldPosition(); qCDebug(entities) << " dimensions:" << getDimensions(); qCDebug(entities) << " model URL:" << getModelURL(); qCDebug(entities) << " compound shape URL:" << getCompoundShapeURL(); diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index b216144ded..05c0feca18 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -591,7 +591,7 @@ void ParticleEffectEntityItem::debugDump() const { _particleProperties.color.gradient.target.red << "," << _particleProperties.color.gradient.target.green << "," << _particleProperties.color.gradient.target.blue; - qCDebug(entities) << " position:" << debugTreeVector(getPosition()); + qCDebug(entities) << " position:" << debugTreeVector(getWorldPosition()); qCDebug(entities) << " dimensions:" << debugTreeVector(getDimensions()); qCDebug(entities) << " getLastEdited:" << debugTime(getLastEdited(), now); } diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index 7cd70fdb21..e69fb2e100 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -256,7 +256,7 @@ void PolyLineEntityItem::debugDump() const { quint64 now = usecTimestampNow(); qCDebug(entities) << " QUAD EntityItem id:" << getEntityItemID() << "---------------------------------------------"; qCDebug(entities) << " color:" << _color[0] << "," << _color[1] << "," << _color[2]; - qCDebug(entities) << " position:" << debugTreeVector(getPosition()); + qCDebug(entities) << " position:" << debugTreeVector(getWorldPosition()); qCDebug(entities) << " dimensions:" << debugTreeVector(getDimensions()); qCDebug(entities) << " getLastEdited:" << debugTime(getLastEdited(), now); } diff --git a/libraries/entities/src/PolyVoxEntityItem.cpp b/libraries/entities/src/PolyVoxEntityItem.cpp index e577a6c1a7..abcc075bcf 100644 --- a/libraries/entities/src/PolyVoxEntityItem.cpp +++ b/libraries/entities/src/PolyVoxEntityItem.cpp @@ -228,7 +228,7 @@ void PolyVoxEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeB void PolyVoxEntityItem::debugDump() const { quint64 now = usecTimestampNow(); qCDebug(entities) << " POLYVOX EntityItem id:" << getEntityItemID() << "---------------------------------------------"; - qCDebug(entities) << " position:" << debugTreeVector(getPosition()); + qCDebug(entities) << " position:" << debugTreeVector(getWorldPosition()); qCDebug(entities) << " dimensions:" << debugTreeVector(getDimensions()); qCDebug(entities) << " getLastEdited:" << debugTime(getLastEdited(), now); } @@ -396,7 +396,7 @@ glm::mat4 PolyVoxEntityItem::voxelToLocalMatrix() const { glm::vec3 scale = dimensions / voxelVolumeSize; // meters / voxel-units bool success; // TODO -- Does this actually have to happen in world space? glm::vec3 center = getCenterPosition(success); // this handles registrationPoint changes - glm::vec3 position = getPosition(success); + glm::vec3 position = getWorldPosition(success); glm::vec3 positionToCenter = center - position; positionToCenter -= dimensions * Vectors::HALF - getSurfacePositionAdjustment(); @@ -412,7 +412,7 @@ glm::mat4 PolyVoxEntityItem::localToVoxelMatrix() const { glm::mat4 PolyVoxEntityItem::voxelToWorldMatrix() const { glm::mat4 rotation = glm::mat4_cast(getRotation()); - glm::mat4 translation = glm::translate(getPosition()); + glm::mat4 translation = glm::translate(getWorldPosition()); return translation * rotation * voxelToLocalMatrix(); } diff --git a/libraries/entities/src/ShapeEntityItem.cpp b/libraries/entities/src/ShapeEntityItem.cpp index 9a1a500a54..654fecb156 100644 --- a/libraries/entities/src/ShapeEntityItem.cpp +++ b/libraries/entities/src/ShapeEntityItem.cpp @@ -235,7 +235,7 @@ void ShapeEntityItem::debugDump() const { qCDebug(entities) << " shape:" << stringFromShape(_shape) << " (EnumId: " << _shape << " )"; qCDebug(entities) << " collisionShapeType:" << ShapeInfo::getNameForShapeType(getShapeType()); qCDebug(entities) << " color:" << _color[0] << "," << _color[1] << "," << _color[2]; - qCDebug(entities) << " position:" << debugTreeVector(getPosition()); + qCDebug(entities) << " position:" << debugTreeVector(getWorldPosition()); qCDebug(entities) << " dimensions:" << debugTreeVector(getDimensions()); qCDebug(entities) << " getLastEdited:" << debugTime(getLastEdited(), now); qCDebug(entities) << "SHAPE EntityItem Ptr:" << this; diff --git a/libraries/entities/src/TextEntityItem.cpp b/libraries/entities/src/TextEntityItem.cpp index 074691e1d4..0f113248f7 100644 --- a/libraries/entities/src/TextEntityItem.cpp +++ b/libraries/entities/src/TextEntityItem.cpp @@ -135,7 +135,7 @@ bool TextEntityItem::findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3 dimensions = getDimensions(); glm::vec2 xyDimensions(dimensions.x, dimensions.y); glm::quat rotation = getRotation(); - glm::vec3 position = getPosition() + rotation * + glm::vec3 position = getWorldPosition() + rotation * (dimensions * (ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint())); // FIXME - should set face and surfaceNormal diff --git a/libraries/entities/src/WebEntityItem.cpp b/libraries/entities/src/WebEntityItem.cpp index dd4bf518e0..91137431fe 100644 --- a/libraries/entities/src/WebEntityItem.cpp +++ b/libraries/entities/src/WebEntityItem.cpp @@ -112,7 +112,7 @@ bool WebEntityItem::findDetailedRayIntersection(const glm::vec3& origin, const g glm::vec3 dimensions = getDimensions(); glm::vec2 xyDimensions(dimensions.x, dimensions.y); glm::quat rotation = getRotation(); - glm::vec3 position = getPosition() + rotation * (dimensions * (ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint())); + glm::vec3 position = getWorldPosition() + rotation * (dimensions * (ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint())); if (findRayRectangleIntersection(origin, direction, rotation, position, xyDimensions, distance)) { surfaceNormal = rotation * Vectors::UNIT_Z; diff --git a/libraries/entities/src/ZoneEntityItem.cpp b/libraries/entities/src/ZoneEntityItem.cpp index 588c1f9386..debe3eab61 100644 --- a/libraries/entities/src/ZoneEntityItem.cpp +++ b/libraries/entities/src/ZoneEntityItem.cpp @@ -241,7 +241,7 @@ void ZoneEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBits void ZoneEntityItem::debugDump() const { quint64 now = usecTimestampNow(); qCDebug(entities) << " ZoneEntityItem id:" << getEntityItemID() << "---------------------------------------------"; - qCDebug(entities) << " position:" << debugTreeVector(getPosition()); + qCDebug(entities) << " position:" << debugTreeVector(getWorldPosition()); qCDebug(entities) << " dimensions:" << debugTreeVector(getDimensions()); qCDebug(entities) << " getLastEdited:" << debugTime(getLastEdited(), now); qCDebug(entities) << " _backgroundMode:" << EntityItemProperties::getBackgroundModeString(_backgroundMode); diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index 6884482074..be56bffb18 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -108,7 +108,7 @@ void EntityMotionState::handleDeactivation() { _entity->setLocalTransformAndVelocities(localTransform, ENTITY_ITEM_ZERO_VEC3, ENTITY_ITEM_ZERO_VEC3); // and also to RigidBody btTransform worldTrans; - worldTrans.setOrigin(glmToBullet(_entity->getPosition())); + worldTrans.setOrigin(glmToBullet(_entity->getWorldPosition())); worldTrans.setRotation(glmToBullet(_entity->getRotation())); _body->setWorldTransform(worldTrans); // no need to update velocities... should already be zero @@ -256,7 +256,7 @@ void EntityMotionState::setWorldTransform(const btTransform& worldTrans) { assert(entityTreeIsLocked()); measureBodyAcceleration(); bool positionSuccess; - _entity->setPosition(bulletToGLM(worldTrans.getOrigin()) + ObjectMotionState::getWorldOffset(), positionSuccess, false); + _entity->setWorldPosition(bulletToGLM(worldTrans.getOrigin()) + ObjectMotionState::getWorldOffset(), positionSuccess, false); if (!positionSuccess) { static QString repeatedMessage = LogHandler::getInstance().addRepeatedMessageRegex("EntityMotionState::setWorldTransform " diff --git a/libraries/physics/src/EntityMotionState.h b/libraries/physics/src/EntityMotionState.h index 968f53700c..839309e60e 100644 --- a/libraries/physics/src/EntityMotionState.h +++ b/libraries/physics/src/EntityMotionState.h @@ -57,7 +57,7 @@ public: virtual float getObjectLinearDamping() const override { return _entity->getDamping(); } virtual float getObjectAngularDamping() const override { return _entity->getAngularDamping(); } - virtual glm::vec3 getObjectPosition() const override { return _entity->getPosition() - ObjectMotionState::getWorldOffset(); } + virtual glm::vec3 getObjectPosition() const override { return _entity->getWorldPosition() - ObjectMotionState::getWorldOffset(); } virtual glm::quat getObjectRotation() const override { return _entity->getRotation(); } virtual glm::vec3 getObjectLinearVelocity() const override { return _entity->getVelocity(); } virtual glm::vec3 getObjectAngularVelocity() const override { return _entity->getAngularVelocity(); } diff --git a/libraries/physics/src/ObjectActionTractor.cpp b/libraries/physics/src/ObjectActionTractor.cpp index 1a1790b0e0..6ab7daae7f 100644 --- a/libraries/physics/src/ObjectActionTractor.cpp +++ b/libraries/physics/src/ObjectActionTractor.cpp @@ -55,7 +55,7 @@ bool ObjectActionTractor::getTarget(float deltaTimeStep, glm::quat& rotation, gl if (!_otherID.isNull()) { if (other) { rotation = _desiredRotationalTarget * other->getRotation(); - position = other->getRotation() * _desiredPositionalTarget + other->getPosition(); + position = other->getRotation() * _desiredPositionalTarget + other->getWorldPosition(); } else { // we should have an "other" but can't find it, so disable the tractor. linearTimeScale = FLT_MAX; diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index b6f460cf39..3e87b9437d 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -223,7 +223,7 @@ void PhysicalEntitySimulation::getObjectsToAddToPhysics(VectorOfMotionStates& re if (numPoints > MAX_HULL_POINTS) { qWarning() << "convex hull with" << numPoints << "points for entity" << entity->getName() - << "at" << entity->getPosition() << " will be reduced"; + << "at" << entity->getWorldPosition() << " will be reduced"; } } btCollisionShape* shape = const_cast(ObjectMotionState::getShapeManager()->getShape(shapeInfo)); diff --git a/libraries/shared/src/SpatiallyNestable.cpp b/libraries/shared/src/SpatiallyNestable.cpp index 8dbd2dd5e0..9713ce8a17 100644 --- a/libraries/shared/src/SpatiallyNestable.cpp +++ b/libraries/shared/src/SpatiallyNestable.cpp @@ -367,26 +367,26 @@ glm::vec3 SpatiallyNestable::localToWorldAngularVelocity(const glm::vec3& angula return parentTransform.getRotation() * angularVelocity; } -glm::vec3 SpatiallyNestable::getPosition(bool& success) const { +glm::vec3 SpatiallyNestable::getWorldPosition(bool& success) const { return getTransform(success).getTranslation(); } -glm::vec3 SpatiallyNestable::getPosition() const { +glm::vec3 SpatiallyNestable::getWorldPosition() const { bool success; - auto result = getPosition(success); + auto result = getWorldPosition(success); #ifdef WANT_DEBUG if (!success) { - qCDebug(shared) << "Warning -- getPosition failed" << getID(); + qCDebug(shared) << "Warning -- getWorldPosition failed" << getID(); } #endif return result; } -glm::vec3 SpatiallyNestable::getPosition(int jointIndex, bool& success) const { +glm::vec3 SpatiallyNestable::getWorldPosition(int jointIndex, bool& success) const { return getTransform(jointIndex, success).getTranslation(); } -void SpatiallyNestable::setPosition(const glm::vec3& position, bool& success, bool tellPhysics) { +void SpatiallyNestable::setWorldPosition(const glm::vec3& position, bool& success, bool tellPhysics) { // guard against introducing NaN into the transform if (isNaN(position)) { success = false; @@ -410,12 +410,12 @@ void SpatiallyNestable::setPosition(const glm::vec3& position, bool& success, bo } } -void SpatiallyNestable::setPosition(const glm::vec3& position) { +void SpatiallyNestable::setWorldPosition(const glm::vec3& position) { bool success; - setPosition(position, success); + setWorldPosition(position, success); #ifdef WANT_DEBUG if (!success) { - qCDebug(shared) << "Warning -- setPosition failed" << getID(); + qCDebug(shared) << "Warning -- setWorldPosition failed" << getID(); } #endif } @@ -624,7 +624,7 @@ const Transform SpatiallyNestable::getTransform(int jointIndex, bool& success, i bool setPositionSuccess; AACube aaCube = getQueryAACube(setPositionSuccess); if (setPositionSuccess) { - _this->setPosition(aaCube.calcCenter()); + _this->setWorldPosition(aaCube.calcCenter()); } return jointInWorldFrame; } @@ -958,7 +958,7 @@ void SpatiallyNestable::locationChanged(bool tellPhysics) { } AACube SpatiallyNestable::getMaximumAACube(bool& success) const { - return AACube(getPosition(success) - glm::vec3(defaultAACubeSize / 2.0f), defaultAACubeSize); + return AACube(getWorldPosition(success) - glm::vec3(defaultAACubeSize / 2.0f), defaultAACubeSize); } const float PARENTED_EXPANSION_FACTOR = 3.0f; @@ -1044,7 +1044,7 @@ AACube SpatiallyNestable::getQueryAACube(bool& success) const { } success = false; bool getPositionSuccess; - return AACube(getPosition(getPositionSuccess) - glm::vec3(defaultAACubeSize / 2.0f), defaultAACubeSize); + return AACube(getWorldPosition(getPositionSuccess) - glm::vec3(defaultAACubeSize / 2.0f), defaultAACubeSize); } AACube SpatiallyNestable::getQueryAACube() const { diff --git a/libraries/shared/src/SpatiallyNestable.h b/libraries/shared/src/SpatiallyNestable.h index 37f6cfdfd9..6b082fed82 100644 --- a/libraries/shared/src/SpatiallyNestable.h +++ b/libraries/shared/src/SpatiallyNestable.h @@ -78,10 +78,10 @@ public: virtual Transform getParentTransform(bool& success, int depth = 0) const; - virtual glm::vec3 getPosition(bool& success) const; - virtual glm::vec3 getPosition() const; - virtual void setPosition(const glm::vec3& position, bool& success, bool tellPhysics = true); - virtual void setPosition(const glm::vec3& position); + virtual glm::vec3 getWorldPosition(bool& success) const; + virtual glm::vec3 getWorldPosition() const; + virtual void setWorldPosition(const glm::vec3& position, bool& success, bool tellPhysics = true); + virtual void setWorldPosition(const glm::vec3& position); virtual glm::quat getOrientation(bool& success) const; virtual glm::quat getOrientation() const; @@ -122,7 +122,7 @@ public: // get world-frame values for a specific joint virtual const Transform getTransform(int jointIndex, bool& success, int depth = 0) const; - virtual glm::vec3 getPosition(int jointIndex, bool& success) const; + virtual glm::vec3 getWorldPosition(int jointIndex, bool& success) const; virtual glm::vec3 getSNScale(int jointIndex, bool& success) const; // object's parent's frame From f63db42c0e0da7953563d3f24be10293147e646e Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Sat, 28 Oct 2017 10:14:25 -0700 Subject: [PATCH 040/187] migrate SpatiallyNestable::getOrientation to getWorldOrientation, remove redundant getRotation --- interface/src/Application.cpp | 36 +++++------ interface/src/avatar/AvatarActionHold.cpp | 2 +- interface/src/avatar/AvatarMotionState.cpp | 2 +- interface/src/avatar/MyAvatar.cpp | 60 +++++++++---------- .../src/avatar/MyCharacterController.cpp | 2 +- interface/src/avatar/MyHead.cpp | 2 +- interface/src/raypick/JointRayPick.cpp | 2 +- interface/src/raypick/LaserPointer.cpp | 2 +- interface/src/ui/overlays/Base3DOverlay.cpp | 4 +- interface/src/ui/overlays/Billboardable.cpp | 2 +- interface/src/ui/overlays/Circle3DOverlay.cpp | 4 +- .../ui/overlays/ContextOverlayInterface.cpp | 2 +- interface/src/ui/overlays/Cube3DOverlay.cpp | 2 +- interface/src/ui/overlays/Grid3DOverlay.cpp | 2 +- interface/src/ui/overlays/ModelOverlay.cpp | 6 +- interface/src/ui/overlays/Overlays.cpp | 2 +- interface/src/ui/overlays/OverlaysPayload.cpp | 2 +- interface/src/ui/overlays/Planar3DOverlay.cpp | 2 +- .../src/ui/overlays/Rectangle3DOverlay.cpp | 2 +- interface/src/ui/overlays/Shape3DOverlay.cpp | 2 +- interface/src/ui/overlays/Volume3DOverlay.cpp | 2 +- interface/src/ui/overlays/Web3DOverlay.cpp | 2 +- .../src/avatars-renderer/Avatar.cpp | 12 ++-- .../src/avatars-renderer/Avatar.h | 4 +- .../src/avatars-renderer/Head.cpp | 2 +- .../src/avatars-renderer/SkeletonModel.cpp | 2 +- libraries/avatars/src/AvatarData.cpp | 28 ++++----- libraries/avatars/src/AvatarData.h | 2 +- libraries/avatars/src/HeadData.cpp | 12 ++-- libraries/avatars/src/ScriptAvatarData.cpp | 2 +- .../src/EntityTreeRenderer.cpp | 2 +- .../src/RenderableLightEntityItem.cpp | 2 +- .../src/RenderableModelEntityItem.cpp | 2 +- .../src/RenderablePolyLineEntityItem.cpp | 2 +- .../src/RenderablePolyVoxEntityItem.cpp | 2 +- .../src/RenderableShapeEntityItem.cpp | 2 +- .../src/RenderableZoneEntityItem.cpp | 4 +- libraries/entities/src/EntityItem.cpp | 8 +-- .../entities/src/EntityScriptingInterface.cpp | 4 +- libraries/entities/src/EntityTreeElement.cpp | 4 +- libraries/entities/src/PolyVoxEntityItem.cpp | 2 +- libraries/entities/src/TextEntityItem.cpp | 2 +- libraries/entities/src/WebEntityItem.cpp | 2 +- libraries/physics/src/EntityMotionState.cpp | 6 +- libraries/physics/src/EntityMotionState.h | 2 +- libraries/physics/src/ObjectActionTractor.cpp | 4 +- libraries/shared/src/SpatiallyNestable.cpp | 14 ++--- libraries/shared/src/SpatiallyNestable.h | 14 ++--- 48 files changed, 141 insertions(+), 145 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b1f461f227..41560d56f1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -967,7 +967,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // use our MyAvatar position and quat for address manager path addressManager->setPositionGetter([this]{ return getMyAvatar()->getWorldPosition(); }); - addressManager->setOrientationGetter([this]{ return getMyAvatar()->getOrientation(); }); + addressManager->setOrientationGetter([this]{ return getMyAvatar()->getWorldOrientation(); }); connect(addressManager.data(), &AddressManager::hostChanged, this, &Application::updateWindowTitle); connect(this, &QCoreApplication::aboutToQuit, addressManager.data(), &AddressManager::storeCurrentAddress); @@ -2400,7 +2400,7 @@ void Application::updateCamera(RenderArgs& renderArgs) { auto hmdWorldMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); _myCamera.setOrientation(glm::normalize(glmExtractRotation(hmdWorldMat))); _myCamera.setPosition(extractTranslation(hmdWorldMat) + - myAvatar->getOrientation() * boomOffset); + myAvatar->getWorldOrientation() * boomOffset); } else { _myCamera.setOrientation(myAvatar->getHead()->getOrientation()); @@ -2410,13 +2410,13 @@ void Application::updateCamera(RenderArgs& renderArgs) { } else { _myCamera.setPosition(myAvatar->getDefaultEyePosition() - + myAvatar->getOrientation() * boomOffset); + + myAvatar->getWorldOrientation() * boomOffset); } } } else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { if (isHMDMode()) { - auto mirrorBodyOrientation = myAvatar->getOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)); + auto mirrorBodyOrientation = myAvatar->getWorldOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)); glm::quat hmdRotation = extractRotation(myAvatar->getHMDSensorMatrix()); // Mirror HMD yaw and roll @@ -2439,11 +2439,11 @@ void Application::updateCamera(RenderArgs& renderArgs) { + mirrorBodyOrientation * hmdOffset); } else { - _myCamera.setOrientation(myAvatar->getOrientation() + _myCamera.setOrientation(myAvatar->getWorldOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f))); _myCamera.setPosition(myAvatar->getDefaultEyePosition() + glm::vec3(0, _raiseMirror * myAvatar->getModelScale(), 0) - + (myAvatar->getOrientation() * glm::quat(glm::vec3(0.0f, _rotateMirror, 0.0f))) * + + (myAvatar->getWorldOrientation() * glm::quat(glm::vec3(0.0f, _rotateMirror, 0.0f))) * glm::vec3(0.0f, 0.0f, -1.0f) * MIRROR_FULLSCREEN_DISTANCE * _scaleMirror); } renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE; @@ -2453,12 +2453,12 @@ void Application::updateCamera(RenderArgs& renderArgs) { if (cameraEntity != nullptr) { if (isHMDMode()) { glm::quat hmdRotation = extractRotation(myAvatar->getHMDSensorMatrix()); - _myCamera.setOrientation(cameraEntity->getRotation() * hmdRotation); + _myCamera.setOrientation(cameraEntity->getWorldOrientation() * hmdRotation); glm::vec3 hmdOffset = extractTranslation(myAvatar->getHMDSensorMatrix()); _myCamera.setPosition(cameraEntity->getWorldPosition() + (hmdRotation * hmdOffset)); } else { - _myCamera.setOrientation(cameraEntity->getRotation()); + _myCamera.setOrientation(cameraEntity->getWorldOrientation()); _myCamera.setPosition(cameraEntity->getWorldPosition()); } } @@ -3870,7 +3870,7 @@ void Application::idle() { if (!_keyboardFocusedEntity.get().isInvalidID()) { auto entity = getEntities()->getTree()->findEntityByID(_keyboardFocusedEntity.get()); if (entity && _keyboardFocusHighlight) { - _keyboardFocusHighlight->setRotation(entity->getRotation()); + _keyboardFocusHighlight->setWorldOrientation(entity->getWorldOrientation()); _keyboardFocusHighlight->setWorldPosition(entity->getWorldPosition()); } } else { @@ -3878,7 +3878,7 @@ void Application::idle() { auto overlay = std::dynamic_pointer_cast(getOverlays().getOverlay(_keyboardFocusedOverlay.get())); if (overlay && _keyboardFocusHighlight) { - _keyboardFocusHighlight->setRotation(overlay->getRotation()); + _keyboardFocusHighlight->setWorldOrientation(overlay->getWorldOrientation()); _keyboardFocusHighlight->setWorldPosition(overlay->getWorldPosition()); } } @@ -4293,7 +4293,7 @@ void Application::updateMyAvatarLookAtPosition() { // TODO -- this code is probably wrong, getHeadPose() returns something in sensor frame, not avatar glm::mat4 headPose = getActiveDisplayPlugin()->getHeadPose(); glm::quat hmdRotation = glm::quat_cast(headPose); - lookAtSpot = _myCamera.getPosition() + myAvatar->getOrientation() * (hmdRotation * lookAtPosition); + lookAtSpot = _myCamera.getPosition() + myAvatar->getWorldOrientation() * (hmdRotation * lookAtPosition); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + (myAvatar->getHead()->getFinalOrientationInWorldFrame() * lookAtPosition); @@ -4519,7 +4519,7 @@ void Application::setKeyboardFocusHighlight(const glm::vec3& position, const glm } // Position focus - _keyboardFocusHighlight->setRotation(rotation); + _keyboardFocusHighlight->setWorldOrientation(rotation); _keyboardFocusHighlight->setWorldPosition(position); _keyboardFocusHighlight->setDimensions(dimensions); _keyboardFocusHighlight->setVisible(true); @@ -4557,7 +4557,7 @@ void Application::setKeyboardFocusEntity(const EntityItemID& entityItemID) { } _lastAcceptedKeyPress = usecTimestampNow(); - setKeyboardFocusHighlight(entity->getWorldPosition(), entity->getRotation(), + setKeyboardFocusHighlight(entity->getWorldPosition(), entity->getWorldOrientation(), entity->getDimensions() * FOCUS_HIGHLIGHT_EXPANSION_FACTOR); } } @@ -4594,7 +4594,7 @@ void Application::setKeyboardFocusOverlay(const OverlayID& overlayID) { if (overlay->getProperty("showKeyboardFocusHighlight").toBool()) { auto size = overlay->getSize() * FOCUS_HIGHLIGHT_EXPANSION_FACTOR; const float OVERLAY_DEPTH = 0.0105f; - setKeyboardFocusHighlight(overlay->getWorldPosition(), overlay->getRotation(), glm::vec3(size.x, size.y, OVERLAY_DEPTH)); + setKeyboardFocusHighlight(overlay->getWorldPosition(), overlay->getWorldOrientation(), glm::vec3(size.x, size.y, OVERLAY_DEPTH)); } else if (_keyboardFocusHighlight) { _keyboardFocusHighlight->setVisible(false); } @@ -4686,7 +4686,7 @@ void Application::update(float deltaTime) { controller::InputCalibrationData calibrationData = { myAvatar->getSensorToWorldMatrix(), - createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getWorldPosition()), + createMatFromQuatAndPos(myAvatar->getWorldOrientation(), myAvatar->getWorldPosition()), myAvatar->getHMDSensorMatrix(), myAvatar->getCenterEyeCalibrationMat(), myAvatar->getHeadCalibrationMat(), @@ -4796,7 +4796,7 @@ void Application::update(float deltaTime) { }; // copy controller poses from userInputMapper to myAvatar. - glm::mat4 myAvatarMatrix = createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getWorldPosition()); + glm::mat4 myAvatarMatrix = createMatFromQuatAndPos(myAvatar->getWorldOrientation(), myAvatar->getWorldPosition()); glm::mat4 worldToSensorMatrix = glm::inverse(myAvatar->getSensorToWorldMatrix()); glm::mat4 avatarToSensorMatrix = worldToSensorMatrix * myAvatarMatrix; for (auto& action : avatarControllerActions) { @@ -6437,9 +6437,9 @@ void Application::addAssetToWorldAddEntity(QString filePath, QString mapping) { properties.setShapeType(SHAPE_TYPE_SIMPLE_COMPOUND); properties.setCollisionless(true); // Temporarily set so that doesn't collide with avatar. properties.setVisible(false); // Temporarily set so that don't see at large unresized dimensions. - glm::vec3 positionOffset = getMyAvatar()->getOrientation() * (getMyAvatar()->getSensorToWorldScale() * glm::vec3(0.0f, 0.0f, -2.0f)); + glm::vec3 positionOffset = getMyAvatar()->getWorldOrientation() * (getMyAvatar()->getSensorToWorldScale() * glm::vec3(0.0f, 0.0f, -2.0f)); properties.setPosition(getMyAvatar()->getWorldPosition() + positionOffset); - properties.setRotation(getMyAvatar()->getOrientation()); + properties.setRotation(getMyAvatar()->getWorldOrientation()); properties.setGravity(glm::vec3(0.0f, 0.0f, 0.0f)); auto entityID = DependencyManager::get()->addEntity(properties); diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index 668994883d..66184513da 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -531,5 +531,5 @@ void AvatarActionHold::lateAvatarUpdate(const AnimPose& prePhysicsRoomPose, cons bool positionSuccess; ownerEntity->setWorldPosition(bulletToGLM(worldTrans.getOrigin()) + ObjectMotionState::getWorldOffset(), positionSuccess, false); bool orientationSuccess; - ownerEntity->setOrientation(bulletToGLM(worldTrans.getRotation()), orientationSuccess, false); + ownerEntity->setWorldOrientation(bulletToGLM(worldTrans.getRotation()), orientationSuccess, false); } diff --git a/interface/src/avatar/AvatarMotionState.cpp b/interface/src/avatar/AvatarMotionState.cpp index 01cfb93333..4f6f2b0b71 100644 --- a/interface/src/avatar/AvatarMotionState.cpp +++ b/interface/src/avatar/AvatarMotionState.cpp @@ -111,7 +111,7 @@ glm::vec3 AvatarMotionState::getObjectPosition() const { // virtual glm::quat AvatarMotionState::getObjectRotation() const { - return _avatar->getOrientation(); + return _avatar->getWorldOrientation(); } // virtual diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 9458789685..c7af0fa77e 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -197,7 +197,7 @@ MyAvatar::MyAvatar(QThread* thread) : } setWorldPosition(dummyAvatar.getWorldPosition()); - setOrientation(dummyAvatar.getOrientation()); + setWorldOrientation(dummyAvatar.getWorldOrientation()); if (!dummyAvatar.getAttachmentData().isEmpty()) { setAttachmentData(dummyAvatar.getAttachmentData()); @@ -250,11 +250,11 @@ void MyAvatar::registerMetaTypes(ScriptEnginePointer engine) { } void MyAvatar::setOrientationVar(const QVariant& newOrientationVar) { - Avatar::setOrientation(quatFromVariant(newOrientationVar)); + Avatar::setWorldOrientation(quatFromVariant(newOrientationVar)); } QVariant MyAvatar::getOrientationVar() const { - return quatToVariant(Avatar::getOrientation()); + return quatToVariant(Avatar::getWorldOrientation()); } glm::quat MyAvatar::getOrientationOutbound() const { @@ -329,7 +329,7 @@ void MyAvatar::centerBody() { // this will become our new position. setWorldPosition(worldBodyPos); - setOrientation(worldBodyRot); + setWorldOrientation(worldBodyRot); // reset the body in sensor space _bodySensorMatrix = newBodySensorMatrix; @@ -373,7 +373,7 @@ void MyAvatar::reset(bool andRecenter, bool andReload, bool andHead) { // this will become our new position. setWorldPosition(worldBodyPos); - setOrientation(worldBodyRot); + setWorldOrientation(worldBodyRot); // now sample the new hmd orientation AFTER sensor reset, which should be identity. glm::mat4 identity; @@ -411,7 +411,7 @@ void MyAvatar::update(float deltaTime) { if (_goToPending) { setWorldPosition(_goToPosition); - setOrientation(_goToOrientation); + setWorldOrientation(_goToOrientation); _headControllerFacingMovingAverage = _headControllerFacing; // reset moving average _goToPending = false; // updateFromHMDSensorMatrix (called from paintGL) expects that the sensorToWorldMatrix is updated for any position changes @@ -666,7 +666,7 @@ void MyAvatar::updateSensorToWorldMatrix() { // update the sensor mat so that the body position will end up in the desired // position when driven from the head. float sensorToWorldScale = getEyeHeight() / getUserEyeHeight(); - glm::mat4 desiredMat = createMatFromScaleQuatAndPos(glm::vec3(sensorToWorldScale), getOrientation(), getWorldPosition()); + glm::mat4 desiredMat = createMatFromScaleQuatAndPos(glm::vec3(sensorToWorldScale), getWorldOrientation(), getWorldPosition()); _sensorToWorldMatrix = desiredMat * glm::inverse(_bodySensorMatrix); lateUpdatePalms(); @@ -784,7 +784,7 @@ controller::Pose MyAvatar::getRightHandTipPose() const { glm::vec3 MyAvatar::worldToJointPoint(const glm::vec3& position, const int jointIndex) const { glm::vec3 jointPos = getWorldPosition();//default value if no or invalid joint specified - glm::quat jointRot = getRotation();//default value if no or invalid joint specified + glm::quat jointRot = getWorldOrientation();//default value if no or invalid joint specified if (jointIndex != -1) { if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) { _skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot); @@ -799,7 +799,7 @@ glm::vec3 MyAvatar::worldToJointPoint(const glm::vec3& position, const int joint } glm::vec3 MyAvatar::worldToJointDirection(const glm::vec3& worldDir, const int jointIndex) const { - glm::quat jointRot = getRotation();//default value if no or invalid joint specified + glm::quat jointRot = getWorldOrientation();//default value if no or invalid joint specified if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { qWarning() << "Invalid joint index specified: " << jointIndex; } @@ -809,7 +809,7 @@ glm::vec3 MyAvatar::worldToJointDirection(const glm::vec3& worldDir, const int j } glm::quat MyAvatar::worldToJointRotation(const glm::quat& worldRot, const int jointIndex) const { - glm::quat jointRot = getRotation();//default value if no or invalid joint specified + glm::quat jointRot = getWorldOrientation();//default value if no or invalid joint specified if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { qWarning() << "Invalid joint index specified: " << jointIndex; } @@ -819,7 +819,7 @@ glm::quat MyAvatar::worldToJointRotation(const glm::quat& worldRot, const int jo glm::vec3 MyAvatar::jointToWorldPoint(const glm::vec3& jointSpacePos, const int jointIndex) const { glm::vec3 jointPos = getWorldPosition();//default value if no or invalid joint specified - glm::quat jointRot = getRotation();//default value if no or invalid joint specified + glm::quat jointRot = getWorldOrientation();//default value if no or invalid joint specified if (jointIndex != -1) { if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) { @@ -836,7 +836,7 @@ glm::vec3 MyAvatar::jointToWorldPoint(const glm::vec3& jointSpacePos, const int } glm::vec3 MyAvatar::jointToWorldDirection(const glm::vec3& jointSpaceDir, const int jointIndex) const { - glm::quat jointRot = getRotation();//default value if no or invalid joint specified + glm::quat jointRot = getWorldOrientation();//default value if no or invalid joint specified if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { qWarning() << "Invalid joint index specified: " << jointIndex; } @@ -845,7 +845,7 @@ glm::vec3 MyAvatar::jointToWorldDirection(const glm::vec3& jointSpaceDir, const } glm::quat MyAvatar::jointToWorldRotation(const glm::quat& jointSpaceRot, const int jointIndex) const { - glm::quat jointRot = getRotation();//default value if no or invalid joint specified + glm::quat jointRot = getWorldOrientation();//default value if no or invalid joint specified if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { qWarning() << "Invalid joint index specified: " << jointIndex; } @@ -1301,7 +1301,7 @@ eyeContactTarget MyAvatar::getEyeContactTarget() { } glm::vec3 MyAvatar::getDefaultEyePosition() const { - return getWorldPosition() + getOrientation() * Quaternions::Y_180 * _skeletonModel->getDefaultEyeModelPosition(); + return getWorldPosition() + getWorldOrientation() * Quaternions::Y_180 * _skeletonModel->getDefaultEyeModelPosition(); } const float SCRIPT_PRIORITY = 1.0f + 1.0f; @@ -1460,7 +1460,7 @@ glm::vec3 MyAvatar::getSkeletonPosition() const { // The avatar is rotated PI about the yAxis, so we have to correct for it // to get the skeleton offset contribution in the world-frame. const glm::quat FLIP = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); - return getWorldPosition() + getOrientation() * FLIP * _skeletonOffset; + return getWorldPosition() + getWorldOrientation() * FLIP * _skeletonOffset; } return Avatar::getWorldPosition(); } @@ -1508,7 +1508,7 @@ controller::Pose MyAvatar::getControllerPoseInWorldFrame(controller::Action acti controller::Pose MyAvatar::getControllerPoseInAvatarFrame(controller::Action action) const { auto pose = getControllerPoseInWorldFrame(action); if (pose.valid) { - glm::mat4 invAvatarMatrix = glm::inverse(createMatFromQuatAndPos(getOrientation(), getWorldPosition())); + glm::mat4 invAvatarMatrix = glm::inverse(createMatFromQuatAndPos(getWorldOrientation(), getWorldPosition())); return pose.transform(invAvatarMatrix); } else { return controller::Pose(); // invalid pose @@ -1527,7 +1527,7 @@ void MyAvatar::updateMotors() { // we decompose camera's rotation and store the twist part in motorRotation // however, we need to perform the decomposition in the avatar-frame // using the local UP axis and then transform back into world-frame - glm::quat orientation = getOrientation(); + glm::quat orientation = getWorldOrientation(); glm::quat headOrientation = glm::inverse(orientation) * getMyHead()->getHeadOrientation(); // avatar-frame glm::quat liftRotation; swingTwistDecomposition(headOrientation, Vectors::UNIT_Y, liftRotation, motorRotation); @@ -1547,7 +1547,7 @@ void MyAvatar::updateMotors() { if (_scriptedMotorFrame == SCRIPTED_MOTOR_CAMERA_FRAME) { motorRotation = getMyHead()->getHeadOrientation() * glm::angleAxis(PI, Vectors::UNIT_Y); } else if (_scriptedMotorFrame == SCRIPTED_MOTOR_AVATAR_FRAME) { - motorRotation = getOrientation() * glm::angleAxis(PI, Vectors::UNIT_Y); + motorRotation = getWorldOrientation() * glm::angleAxis(PI, Vectors::UNIT_Y); } else { // world-frame motorRotation = glm::quat(); @@ -1575,7 +1575,7 @@ void MyAvatar::prepareForPhysicsSimulation() { _characterController.setParentVelocity(parentVelocity); _characterController.setScaleFactor(getSensorToWorldScale()); - _characterController.setPositionAndOrientation(getWorldPosition(), getOrientation()); + _characterController.setPositionAndOrientation(getWorldPosition(), getWorldOrientation()); auto headPose = getControllerPoseInAvatarFrame(controller::Action::HEAD); if (headPose.isValid()) { _follow.prePhysicsUpdate(*this, deriveBodyFromHMDSensor(), _bodySensorMatrix, hasDriveInput()); @@ -1610,7 +1610,7 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { _characterController.getPositionAndOrientation(position, orientation); } else { position = getWorldPosition(); - orientation = getOrientation(); + orientation = getWorldOrientation(); } nextAttitude(position, orientation); _bodySensorMatrix = _follow.postPhysicsUpdate(*this, _bodySensorMatrix); @@ -1847,14 +1847,14 @@ void MyAvatar::postUpdate(float deltaTime, const render::ScenePointer& scene) { } DebugDraw::getInstance().updateMyAvatarPos(getWorldPosition()); - DebugDraw::getInstance().updateMyAvatarRot(getOrientation()); + DebugDraw::getInstance().updateMyAvatarRot(getWorldOrientation()); AnimPose postUpdateRoomPose(_sensorToWorldMatrix); updateHoldActions(_prePhysicsRoomPose, postUpdateRoomPose); if (_enableDebugDrawDetailedCollision) { - AnimPose rigToWorldPose(glm::vec3(1.0f), getRotation() * Quaternions::Y_180, getWorldPosition()); + AnimPose rigToWorldPose(glm::vec3(1.0f), getWorldOrientation() * Quaternions::Y_180, getWorldPosition()); const int NUM_DEBUG_COLORS = 8; const glm::vec4 DEBUG_COLORS[NUM_DEBUG_COLORS] = { glm::vec4(1.0f, 1.0f, 1.0f, 1.0f), @@ -1972,7 +1972,7 @@ void MyAvatar::updateOrientation(float deltaTime) { speedFactor = glm::min(speed / _lastDrivenSpeed, 1.0f); } - float direction = glm::dot(getVelocity(), getRotation() * Vectors::UNIT_NEG_Z) > 0.0f ? 1.0f : -1.0f; + float direction = glm::dot(getVelocity(), getWorldOrientation() * Vectors::UNIT_NEG_Z) > 0.0f ? 1.0f : -1.0f; float rollAngle = glm::degrees(asinf(glm::dot(IDENTITY_UP, _hmdSensorOrientation * IDENTITY_RIGHT))); float rollSign = rollAngle < 0.0f ? -1.0f : 1.0f; @@ -1985,12 +1985,12 @@ void MyAvatar::updateOrientation(float deltaTime) { // update body orientation by movement inputs glm::quat initialOrientation = getOrientationOutbound(); - setOrientation(getOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalBodyYaw, 0.0f)))); + setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalBodyYaw, 0.0f)))); if (snapTurn) { // Whether or not there is an existing smoothing going on, just reset the smoothing timer and set the starting position as the avatar's current position, then smooth to the new position. _smoothOrientationInitial = initialOrientation; - _smoothOrientationTarget = getOrientation(); + _smoothOrientationTarget = getWorldOrientation(); _smoothOrientationTimer = 0.0f; } @@ -2107,7 +2107,7 @@ void MyAvatar::updatePosition(float deltaTime) { // scan for walkability glm::vec3 position = getWorldPosition(); MyCharacterController::RayShotgunResult result; - glm::vec3 step = deltaTime * (getRotation() * _actionMotorVelocity); + glm::vec3 step = deltaTime * (getWorldOrientation() * _actionMotorVelocity); _characterController.testRayShotgun(position, step, result); _characterController.setStepUpEnabled(result.walkable); } @@ -2325,7 +2325,7 @@ void MyAvatar::goToLocation(const glm::vec3& newPosition, _goToPending = true; _goToPosition = newPosition; - _goToOrientation = getOrientation(); + _goToOrientation = getWorldOrientation(); if (hasOrientation) { qCDebug(interfaceapp).nospace() << "MyAvatar goToLocation - new orientation is " << newOrientation.x << ", " << newOrientation.y << ", " << newOrientation.z << ", " << newOrientation.w; @@ -2394,7 +2394,7 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette return false; // no entity tree } // More utilities. - const auto offset = getOrientation() *_characterController.getCapsuleLocalOffset(); + const auto offset = getWorldOrientation() *_characterController.getCapsuleLocalOffset(); const auto capsuleCenter = positionIn + offset; const auto up = _worldUpDirection, down = -up; glm::vec3 upperIntersection, upperNormal, lowerIntersection, lowerNormal; @@ -2960,7 +2960,7 @@ glm::mat4 MyAvatar::computeCameraRelativeHandControllerMatrix(const glm::mat4& c glm::mat4 controllerWorldMatrix = getSensorToWorldMatrix() * delta * controllerSensorMatrix; // transform controller into avatar space - glm::mat4 avatarMatrix = createMatFromQuatAndPos(getOrientation(), getWorldPosition()); + glm::mat4 avatarMatrix = createMatFromQuatAndPos(getWorldOrientation(), getWorldPosition()); return glm::inverse(avatarMatrix) * controllerWorldMatrix; } @@ -3164,7 +3164,7 @@ bool MyAvatar::pinJoint(int index, const glm::vec3& position, const glm::quat& o } slamPosition(position); - setOrientation(orientation); + setWorldOrientation(orientation); _skeletonModel->getRig().setMaxHipsOffsetLength(0.05f); diff --git a/interface/src/avatar/MyCharacterController.cpp b/interface/src/avatar/MyCharacterController.cpp index 57b5e96ee5..7e38c7763a 100755 --- a/interface/src/avatar/MyCharacterController.cpp +++ b/interface/src/avatar/MyCharacterController.cpp @@ -64,7 +64,7 @@ void MyCharacterController::updateShapeIfNecessary() { _rigidBody->setSleepingThresholds(0.0f, 0.0f); _rigidBody->setAngularFactor(0.0f); - _rigidBody->setWorldTransform(btTransform(glmToBullet(_avatar->getOrientation()), + _rigidBody->setWorldTransform(btTransform(glmToBullet(_avatar->getWorldOrientation()), glmToBullet(_avatar->getWorldPosition()))); _rigidBody->setDamping(0.0f, 0.0f); if (_state == State::Hover) { diff --git a/interface/src/avatar/MyHead.cpp b/interface/src/avatar/MyHead.cpp index 7fc1850bb2..cad2f9e5d0 100644 --- a/interface/src/avatar/MyHead.cpp +++ b/interface/src/avatar/MyHead.cpp @@ -39,7 +39,7 @@ glm::quat MyHead::getHeadOrientation() const { return headPose.rotation * Quaternions::Y_180; } - return myAvatar->getOrientation() * glm::quat(glm::radians(glm::vec3(_basePitch, 0.0f, 0.0f))); + return myAvatar->getWorldOrientation() * glm::quat(glm::radians(glm::vec3(_basePitch, 0.0f, 0.0f))); } void MyHead::simulate(float deltaTime) { diff --git a/interface/src/raypick/JointRayPick.cpp b/interface/src/raypick/JointRayPick.cpp index fc0ecf94e5..5cecc56ae3 100644 --- a/interface/src/raypick/JointRayPick.cpp +++ b/interface/src/raypick/JointRayPick.cpp @@ -29,7 +29,7 @@ const PickRay JointRayPick::getPickRay(bool& valid) const { glm::vec3 jointPos = useAvatarHead ? myAvatar->getHeadPosition() : myAvatar->getAbsoluteJointTranslationInObjectFrame(jointIndex); glm::quat jointRot = useAvatarHead ? myAvatar->getHeadOrientation() : myAvatar->getAbsoluteJointRotationInObjectFrame(jointIndex); glm::vec3 avatarPos = myAvatar->getWorldPosition(); - glm::quat avatarRot = myAvatar->getOrientation(); + glm::quat avatarRot = myAvatar->getWorldOrientation(); glm::vec3 pos = useAvatarHead ? jointPos : avatarPos + (avatarRot * jointPos); glm::quat rot = useAvatarHead ? jointRot * glm::angleAxis(-PI / 2.0f, Vectors::RIGHT) : avatarRot * jointRot; diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 75b43a251b..f7da2de7f7 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -162,7 +162,7 @@ void LaserPointer::updateRenderState(const RenderState& renderState, const Inter } if (!renderState.getEndID().isNull()) { QVariantMap endProps; - glm::quat faceAvatarRotation = DependencyManager::get()->getMyAvatar()->getOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, 180.0f, 0.0f))); + glm::quat faceAvatarRotation = DependencyManager::get()->getMyAvatar()->getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, 180.0f, 0.0f))); glm::vec3 dim = vec3FromVariant(qApp->getOverlays().getProperty(renderState.getEndID(), "dimensions").value); if (_distanceScaleEnd) { dim = renderState.getEndDim() * glm::distance(pickRay.origin, endVec) * DependencyManager::get()->getMyAvatar()->getSensorToWorldScale(); diff --git a/interface/src/ui/overlays/Base3DOverlay.cpp b/interface/src/ui/overlays/Base3DOverlay.cpp index 457f06aaa2..6bfd55736b 100644 --- a/interface/src/ui/overlays/Base3DOverlay.cpp +++ b/interface/src/ui/overlays/Base3DOverlay.cpp @@ -117,7 +117,7 @@ void Base3DOverlay::setProperties(const QVariantMap& originalProperties) { properties["position"] = vec3toVariant(getWorldPosition()); } if (!properties["orientation"].isValid() && !properties["localOrientation"].isValid()) { - properties["orientation"] = quatToVariant(getOrientation()); + properties["orientation"] = quatToVariant(getWorldOrientation()); } } @@ -220,7 +220,7 @@ QVariant Base3DOverlay::getProperty(const QString& property) { return vec3toVariant(getLocalPosition()); } if (property == "rotation" || property == "orientation") { - return quatToVariant(getOrientation()); + return quatToVariant(getWorldOrientation()); } if (property == "localRotation" || property == "localOrientation") { return quatToVariant(getLocalOrientation()); diff --git a/interface/src/ui/overlays/Billboardable.cpp b/interface/src/ui/overlays/Billboardable.cpp index 892a9d998d..4062abb48f 100644 --- a/interface/src/ui/overlays/Billboardable.cpp +++ b/interface/src/ui/overlays/Billboardable.cpp @@ -35,7 +35,7 @@ bool Billboardable::pointTransformAtCamera(Transform& transform, glm::quat offse glm::vec3 billboardPos = transform.getTranslation(); glm::vec3 cameraPos = qApp->getCamera().getPosition(); // use the referencial from the avatar, y isn't always up - glm::vec3 avatarUP = DependencyManager::get()->getMyAvatar()->getOrientation()*Vectors::UP; + glm::vec3 avatarUP = DependencyManager::get()->getMyAvatar()->getWorldOrientation()*Vectors::UP; glm::quat rotation(conjugate(toQuat(glm::lookAt(billboardPos, cameraPos, avatarUP)))); diff --git a/interface/src/ui/overlays/Circle3DOverlay.cpp b/interface/src/ui/overlays/Circle3DOverlay.cpp index 88172950ee..9ea402b084 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.cpp +++ b/interface/src/ui/overlays/Circle3DOverlay.cpp @@ -415,11 +415,11 @@ bool Circle3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve // Scale the dimensions by the diameter glm::vec2 dimensions = getOuterRadius() * 2.0f * getDimensions(); - bool intersects = findRayRectangleIntersection(origin, direction, getRotation(), getWorldPosition(), dimensions, distance); + bool intersects = findRayRectangleIntersection(origin, direction, getWorldOrientation(), getWorldPosition(), dimensions, distance); if (intersects) { glm::vec3 hitPosition = origin + (distance * direction); - glm::vec3 localHitPosition = glm::inverse(getRotation()) * (hitPosition - getWorldPosition()); + glm::vec3 localHitPosition = glm::inverse(getWorldOrientation()) * (hitPosition - getWorldPosition()); localHitPosition.x /= getDimensions().x; localHitPosition.y /= getDimensions().y; float distanceToHit = glm::length(localHitPosition); diff --git a/interface/src/ui/overlays/ContextOverlayInterface.cpp b/interface/src/ui/overlays/ContextOverlayInterface.cpp index ccbf9fb1b2..1f3d582b78 100644 --- a/interface/src/ui/overlays/ContextOverlayInterface.cpp +++ b/interface/src/ui/overlays/ContextOverlayInterface.cpp @@ -163,7 +163,7 @@ bool ContextOverlayInterface::createOrDestroyContextOverlay(const EntityItemID& } _contextOverlay->setWorldPosition(contextOverlayPosition); _contextOverlay->setDimensions(contextOverlayDimensions); - _contextOverlay->setRotation(entityProperties.getRotation()); + _contextOverlay->setWorldOrientation(entityProperties.getRotation()); _contextOverlay->setVisible(true); return true; diff --git a/interface/src/ui/overlays/Cube3DOverlay.cpp b/interface/src/ui/overlays/Cube3DOverlay.cpp index d95b8c7761..92eebe5556 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.cpp +++ b/interface/src/ui/overlays/Cube3DOverlay.cpp @@ -146,7 +146,7 @@ Transform Cube3DOverlay::evalRenderTransform() { // TODO: handle registration point?? glm::vec3 position = getWorldPosition(); glm::vec3 dimensions = getDimensions(); - glm::quat rotation = getRotation(); + glm::quat rotation = getWorldOrientation(); Transform transform; transform.setScale(dimensions); diff --git a/interface/src/ui/overlays/Grid3DOverlay.cpp b/interface/src/ui/overlays/Grid3DOverlay.cpp index afce710d08..dd0f055f3f 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.cpp +++ b/interface/src/ui/overlays/Grid3DOverlay.cpp @@ -146,7 +146,7 @@ void Grid3DOverlay::updateGrid() { Transform Grid3DOverlay::evalRenderTransform() { Transform transform; - transform.setRotation(getRotation()); + transform.setRotation(getWorldOrientation()); transform.setScale(glm::vec3(getDimensions(), 1.0f)); return transform; } diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index eedacd2d67..17dbe9850e 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -122,7 +122,7 @@ void ModelOverlay::setDrawHUDLayer(bool drawHUDLayer) { void ModelOverlay::setProperties(const QVariantMap& properties) { auto origPosition = getWorldPosition(); - auto origRotation = getRotation(); + auto origRotation = getWorldOrientation(); auto origDimensions = getDimensions(); auto origScale = getSNScale(); @@ -143,7 +143,7 @@ void ModelOverlay::setProperties(const QVariantMap& properties) { _scaleToFit = false; } - if (origPosition != getWorldPosition() || origRotation != getRotation() || origDimensions != getDimensions() || origScale != getSNScale()) { + if (origPosition != getWorldPosition() || origRotation != getWorldOrientation() || origDimensions != getDimensions() || origScale != getSNScale()) { _updateModel = true; } @@ -383,7 +383,7 @@ void ModelOverlay::locationChanged(bool tellPhysics) { // FIXME Start using the _renderTransform instead of calling for Transform and Dimensions from here, do the custom things needed in evalRenderTransform() if (_model && _model->isActive()) { - _model->setRotation(getRotation()); + _model->setRotation(getWorldOrientation()); _model->setTranslation(getWorldPosition()); } } diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index ca79d0b663..a20bb1d1c1 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -828,7 +828,7 @@ PointerEvent Overlays::calculateOverlayPointerEvent(OverlayID overlayID, PickRay return PointerEvent(); } glm::vec3 position = overlay->getWorldPosition(); - glm::quat rotation = overlay->getRotation(); + glm::quat rotation = overlay->getWorldOrientation(); glm::vec2 dimensions = overlay->getSize(); diff --git a/interface/src/ui/overlays/OverlaysPayload.cpp b/interface/src/ui/overlays/OverlaysPayload.cpp index 40d70d5348..8d3e514a0f 100644 --- a/interface/src/ui/overlays/OverlaysPayload.cpp +++ b/interface/src/ui/overlays/OverlaysPayload.cpp @@ -68,7 +68,7 @@ namespace render { if (overlay->getAnchor() == Overlay::MY_AVATAR) { auto batch = args->_batch; auto avatar = DependencyManager::get()->getMyAvatar(); - glm::quat myAvatarRotation = avatar->getOrientation(); + glm::quat myAvatarRotation = avatar->getWorldOrientation(); glm::vec3 myAvatarPosition = avatar->getWorldPosition(); float angle = glm::degrees(glm::angle(myAvatarRotation)); glm::vec3 axis = glm::axis(myAvatarRotation); diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index ae5e0f32d0..2cbaf31ff1 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -69,7 +69,7 @@ QVariant Planar3DOverlay::getProperty(const QString& property) { bool Planar3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face, glm::vec3& surfaceNormal) { // FIXME - face and surfaceNormal not being returned - return findRayRectangleIntersection(origin, direction, getRotation(), getWorldPosition(), getDimensions(), distance); + return findRayRectangleIntersection(origin, direction, getWorldOrientation(), getWorldPosition(), getDimensions(), distance); } Transform Planar3DOverlay::evalRenderTransform() { diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.cpp b/interface/src/ui/overlays/Rectangle3DOverlay.cpp index 2010b00d4d..8468670637 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.cpp +++ b/interface/src/ui/overlays/Rectangle3DOverlay.cpp @@ -61,7 +61,7 @@ void Rectangle3DOverlay::render(RenderArgs* args) { glm::vec3 position = getWorldPosition(); glm::vec2 dimensions = getDimensions(); glm::vec2 halfDimensions = dimensions * 0.5f; - glm::quat rotation = getRotation(); + glm::quat rotation = getWorldOrientation(); auto batch = args->_batch; diff --git a/interface/src/ui/overlays/Shape3DOverlay.cpp b/interface/src/ui/overlays/Shape3DOverlay.cpp index 7e9f44ef1d..73bb701ea7 100644 --- a/interface/src/ui/overlays/Shape3DOverlay.cpp +++ b/interface/src/ui/overlays/Shape3DOverlay.cpp @@ -123,7 +123,7 @@ Transform Shape3DOverlay::evalRenderTransform() { // TODO: handle registration point?? glm::vec3 position = getWorldPosition(); glm::vec3 dimensions = getDimensions(); - glm::quat rotation = getRotation(); + glm::quat rotation = getWorldOrientation(); Transform transform; transform.setScale(dimensions); diff --git a/interface/src/ui/overlays/Volume3DOverlay.cpp b/interface/src/ui/overlays/Volume3DOverlay.cpp index 4e685bed0e..2bbbda151f 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.cpp +++ b/interface/src/ui/overlays/Volume3DOverlay.cpp @@ -20,7 +20,7 @@ Volume3DOverlay::Volume3DOverlay(const Volume3DOverlay* volume3DOverlay) : AABox Volume3DOverlay::getBounds() const { auto extents = Extents{_localBoundingBox}; - extents.rotate(getRotation()); + extents.rotate(getWorldOrientation()); extents.shiftBy(getWorldPosition()); return AABox(extents); diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 5d8e433615..6d87bc8994 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -615,7 +615,7 @@ bool Web3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& // Don't call applyTransformTo() or setTransform() here because this code runs too frequently. // Produce the dimensions of the overlay based on the image's aspect ratio and the overlay's scale. - return findRayRectangleIntersection(origin, direction, getRotation(), getWorldPosition(), getSize(), distance); + return findRayRectangleIntersection(origin, direction, getWorldOrientation(), getWorldPosition(), getSize(), distance); } Web3DOverlay* Web3DOverlay::createClone() const { diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 67efeda90d..60c88d435a 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -456,11 +456,11 @@ void Avatar::measureMotionDerivatives(float deltaTime) { setVelocity(velocity); // angular - glm::quat orientation = getOrientation(); + glm::quat orientation = getWorldOrientation(); glm::quat delta = glm::inverse(_lastOrientation) * orientation; glm::vec3 angularVelocity = glm::axis(delta) * glm::angle(delta) * invDeltaTime; setAngularVelocity(angularVelocity); - _lastOrientation = getOrientation(); + _lastOrientation = getWorldOrientation(); } enum TextRendererType { @@ -722,7 +722,7 @@ void Avatar::simulateAttachments(float deltaTime) { if (attachment.isSoft) { // soft attachments do not have transform offsets model->setTranslation(getWorldPosition()); - model->setRotation(getOrientation() * Quaternions::Y_180); + model->setRotation(getWorldOrientation() * Quaternions::Y_180); model->simulate(deltaTime); } else { if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPosition) && @@ -902,7 +902,7 @@ glm::vec3 Avatar::getSkeletonPosition() const { // The avatar is rotated PI about the yAxis, so we have to correct for it // to get the skeleton offset contribution in the world-frame. const glm::quat FLIP = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); - return getWorldPosition() + getOrientation() * FLIP * _skeletonOffset; + return getWorldPosition() + getWorldOrientation() * FLIP * _skeletonOffset; } QVector Avatar::getJointRotations() const { @@ -1473,11 +1473,11 @@ glm::quat Avatar::getUncachedRightPalmRotation() const { void Avatar::setPositionViaScript(const glm::vec3& position) { setWorldPosition(position); - updateAttitude(getOrientation()); + updateAttitude(getWorldOrientation()); } void Avatar::setOrientationViaScript(const glm::quat& orientation) { - setOrientation(orientation); + setWorldOrientation(orientation); updateAttitude(orientation); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index a5ec307c50..1bebcd5c71 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -318,8 +318,8 @@ protected: void fade(render::Transaction& transaction, render::Transition::Type type); - glm::vec3 getBodyRightDirection() const { return getOrientation() * IDENTITY_RIGHT; } - glm::vec3 getBodyUpDirection() const { return getOrientation() * IDENTITY_UP; } + glm::vec3 getBodyRightDirection() const { return getWorldOrientation() * IDENTITY_RIGHT; } + glm::vec3 getBodyUpDirection() const { return getWorldOrientation() * IDENTITY_UP; } void measureMotionDerivatives(float deltaTime); float getSkeletonHeight() const; diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index b8a559027b..256b3bf8a6 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -253,7 +253,7 @@ void Head::setScale (float scale) { } glm::quat Head::getFinalOrientationInWorldFrame() const { - return _owningAvatar->getOrientation() * getFinalOrientationInLocalFrame(); + return _owningAvatar->getWorldOrientation() * getFinalOrientationInLocalFrame(); } glm::quat Head::getFinalOrientationInLocalFrame() const { diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index eaa62ecb0a..04b865fa03 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -127,7 +127,7 @@ void SkeletonModel::updateAttitude(const glm::quat& orientation) { // Called by Avatar::simulate after it has set the joint states (fullUpdate true if changed), // but just before head has been simulated. void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { - updateAttitude(_owningAvatar->getOrientation()); + updateAttitude(_owningAvatar->getWorldOrientation()); if (fullUpdate) { setBlendshapeCoefficients(_owningAvatar->getHead()->getSummedBlendshapeCoefficients()); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 2fe62a4ca2..27c19d4a21 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -118,12 +118,12 @@ void AvatarData::setTargetScale(float targetScale) { } glm::vec3 AvatarData::getHandPosition() const { - return getOrientation() * _handPosition + getWorldPosition(); + return getWorldOrientation() * _handPosition + getWorldPosition(); } void AvatarData::setHandPosition(const glm::vec3& handPosition) { // store relative to position/orientation - _handPosition = glm::inverse(getOrientation()) * (handPosition - getWorldPosition()); + _handPosition = glm::inverse(getWorldOrientation()) * (handPosition - getWorldPosition()); } void AvatarData::lazyInitHeadData() const { @@ -1900,7 +1900,7 @@ void registerAvatarTypes(QScriptEngine* engine) { void AvatarData::setRecordingBasis(std::shared_ptr recordingBasis) { if (!recordingBasis) { recordingBasis = std::make_shared(); - recordingBasis->setRotation(getOrientation()); + recordingBasis->setRotation(getWorldOrientation()); recordingBasis->setTranslation(getWorldPosition()); // TODO: find a different way to record/playback the Scale of the avatar //recordingBasis->setScale(getTargetScale()); @@ -2066,7 +2066,7 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) { setWorldPosition(currentBasis->getTranslation()); orientation = currentBasis->getRotation(); } - setOrientation(orientation); + setWorldOrientation(orientation); updateAttitude(orientation); // Do after avatar orientation because head look-at needs avatar orientation. @@ -2153,36 +2153,36 @@ void AvatarData::fromFrame(const QByteArray& frameData, AvatarData& result, bool } float AvatarData::getBodyYaw() const { - glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getOrientation())); + glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getWorldOrientation())); return eulerAngles.y; } void AvatarData::setBodyYaw(float bodyYaw) { - glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getOrientation())); + glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getWorldOrientation())); eulerAngles.y = bodyYaw; - setOrientation(glm::quat(glm::radians(eulerAngles))); + setWorldOrientation(glm::quat(glm::radians(eulerAngles))); } float AvatarData::getBodyPitch() const { - glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getOrientation())); + glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getWorldOrientation())); return eulerAngles.x; } void AvatarData::setBodyPitch(float bodyPitch) { - glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getOrientation())); + glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getWorldOrientation())); eulerAngles.x = bodyPitch; - setOrientation(glm::quat(glm::radians(eulerAngles))); + setWorldOrientation(glm::quat(glm::radians(eulerAngles))); } float AvatarData::getBodyRoll() const { - glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getOrientation())); + glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getWorldOrientation())); return eulerAngles.z; } void AvatarData::setBodyRoll(float bodyRoll) { - glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getOrientation())); + glm::vec3 eulerAngles = glm::degrees(safeEulerAngles(getWorldOrientation())); eulerAngles.z = bodyRoll; - setOrientation(glm::quat(glm::radians(eulerAngles))); + setWorldOrientation(glm::quat(glm::radians(eulerAngles))); } void AvatarData::setPositionViaScript(const glm::vec3& position) { @@ -2190,7 +2190,7 @@ void AvatarData::setPositionViaScript(const glm::vec3& position) { } void AvatarData::setOrientationViaScript(const glm::quat& orientation) { - SpatiallyNestable::setOrientation(orientation); + SpatiallyNestable::setWorldOrientation(orientation); } glm::quat AvatarData::getAbsoluteJointRotationInObjectFrame(int index) const { diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 5ce4395baa..61e27a482e 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -359,7 +359,7 @@ class AvatarData : public QObject, public SpatiallyNestable { Q_PROPERTY(float bodyPitch READ getBodyPitch WRITE setBodyPitch) Q_PROPERTY(float bodyRoll READ getBodyRoll WRITE setBodyRoll) - Q_PROPERTY(glm::quat orientation READ getOrientation WRITE setOrientationViaScript) + Q_PROPERTY(glm::quat orientation READ getWorldOrientation WRITE setOrientationViaScript) Q_PROPERTY(glm::quat headOrientation READ getHeadOrientation WRITE setHeadOrientation) Q_PROPERTY(float headPitch READ getHeadPitch WRITE setHeadPitch) Q_PROPERTY(float headYaw READ getHeadYaw WRITE setHeadYaw) diff --git a/libraries/avatars/src/HeadData.cpp b/libraries/avatars/src/HeadData.cpp index 6ff36331cf..4119d7a459 100644 --- a/libraries/avatars/src/HeadData.cpp +++ b/libraries/avatars/src/HeadData.cpp @@ -49,11 +49,11 @@ void HeadData::setRawOrientation(const glm::quat& q) { glm::quat HeadData::getOrientation() const { - return _owningAvatar->getOrientation() * getRawOrientation(); + return _owningAvatar->getWorldOrientation() * getRawOrientation(); } void HeadData::setHeadOrientation(const glm::quat& orientation) { - glm::quat bodyOrientation = _owningAvatar->getOrientation(); + glm::quat bodyOrientation = _owningAvatar->getWorldOrientation(); glm::vec3 eulers = glm::degrees(safeEulerAngles(glm::inverse(bodyOrientation) * orientation)); _basePitch = eulers.x; _baseYaw = eulers.y; @@ -62,10 +62,10 @@ void HeadData::setHeadOrientation(const glm::quat& orientation) { void HeadData::setOrientation(const glm::quat& orientation) { // rotate body about vertical axis - glm::quat bodyOrientation = _owningAvatar->getOrientation(); + glm::quat bodyOrientation = _owningAvatar->getWorldOrientation(); glm::vec3 newForward = glm::inverse(bodyOrientation) * (orientation * IDENTITY_FORWARD); bodyOrientation = bodyOrientation * glm::angleAxis(atan2f(-newForward.x, -newForward.z), glm::vec3(0.0f, 1.0f, 0.0f)); - _owningAvatar->setOrientation(bodyOrientation); + _owningAvatar->setWorldOrientation(bodyOrientation); // the rest goes to the head setHeadOrientation(orientation); @@ -154,7 +154,7 @@ QJsonObject HeadData::toJson() const { } auto lookat = getLookAtPosition(); if (lookat != vec3()) { - vec3 relativeLookAt = glm::inverse(_owningAvatar->getOrientation()) * + vec3 relativeLookAt = glm::inverse(_owningAvatar->getWorldOrientation()) * (getLookAtPosition() - _owningAvatar->getWorldPosition()); headJson[JSON_AVATAR_HEAD_LOOKAT] = toJsonValue(relativeLookAt); } @@ -185,7 +185,7 @@ void HeadData::fromJson(const QJsonObject& json) { if (json.contains(JSON_AVATAR_HEAD_LOOKAT)) { auto relativeLookAt = vec3FromJsonValue(json[JSON_AVATAR_HEAD_LOOKAT]); if (glm::length2(relativeLookAt) > 0.01f) { - setLookAtPosition((_owningAvatar->getOrientation() * relativeLookAt) + _owningAvatar->getWorldPosition()); + setLookAtPosition((_owningAvatar->getWorldOrientation() * relativeLookAt) + _owningAvatar->getWorldPosition()); } } diff --git a/libraries/avatars/src/ScriptAvatarData.cpp b/libraries/avatars/src/ScriptAvatarData.cpp index cac3f600ca..6a57bab0b7 100644 --- a/libraries/avatars/src/ScriptAvatarData.cpp +++ b/libraries/avatars/src/ScriptAvatarData.cpp @@ -66,7 +66,7 @@ float ScriptAvatarData::getBodyRoll() const { } glm::quat ScriptAvatarData::getOrientation() const { if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) { - return sharedAvatarData->getOrientation(); + return sharedAvatarData->getWorldOrientation(); } else { return glm::quat(); } diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index a9277ff19a..e381d2cc38 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -510,7 +510,7 @@ static glm::vec2 projectOntoEntityXYPlane(EntityItemPointer entity, const PickRa if (entity) { glm::vec3 entityPosition = entity->getWorldPosition(); - glm::quat entityRotation = entity->getRotation(); + glm::quat entityRotation = entity->getWorldOrientation(); glm::vec3 entityDimensions = entity->getDimensions(); glm::vec3 entityRegistrationPoint = entity->getRegistrationPoint(); diff --git a/libraries/entities-renderer/src/RenderableLightEntityItem.cpp b/libraries/entities-renderer/src/RenderableLightEntityItem.cpp index e00cd98e65..696d7ab8db 100644 --- a/libraries/entities-renderer/src/RenderableLightEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableLightEntityItem.cpp @@ -29,7 +29,7 @@ void LightEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPoint auto light = lightPayload.editLight(); light->setPosition(entity->getWorldPosition()); - light->setOrientation(entity->getRotation()); + light->setOrientation(entity->getWorldOrientation()); bool success; lightPayload.editBound() = entity->getAABox(success); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 67b7b175b7..bcc4c27bfc 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -123,7 +123,7 @@ void RenderableModelEntityItem::doInitialModelSimulation() { // now recalculate the bounds and registration model->setScaleToFit(true, getDimensions()); model->setSnapModelToRegistrationPoint(true, getRegistrationPoint()); - model->setRotation(getRotation()); + model->setRotation(getWorldOrientation()); model->setTranslation(getWorldPosition()); if (_needsInitialSimulation) { diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index e4706fa15e..fbf85fa8c2 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -155,7 +155,7 @@ void PolyLineEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo _polylineTransform = Transform(); _polylineTransform.setTranslation(entity->getWorldPosition()); - _polylineTransform.setRotation(entity->getRotation()); + _polylineTransform.setRotation(entity->getWorldOrientation()); if (pointsChanged) { _lastPoints = entity->getLinePoints(); diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index fd7407287d..356bf3a69c 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -247,7 +247,7 @@ glm::mat4 RenderablePolyVoxEntityItem::localToVoxelMatrix() const { } glm::mat4 RenderablePolyVoxEntityItem::voxelToWorldMatrix() const { - glm::mat4 rotation = glm::mat4_cast(getRotation()); + glm::mat4 rotation = glm::mat4_cast(getWorldOrientation()); glm::mat4 translation = glm::translate(getWorldPosition()); return translation * rotation * voxelToLocalMatrix(); } diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index dffde3386b..3524709395 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -83,7 +83,7 @@ void ShapeEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce _shape = entity->getShape(); _position = entity->getWorldPosition(); _dimensions = entity->getDimensions(); - _orientation = entity->getOrientation(); + _orientation = entity->getWorldOrientation(); _renderTransform = getModelTransform(); if (_shape == entity::Sphere) { diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index e56e692890..a077307c61 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -201,7 +201,7 @@ void ZoneEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scen entity->resetRenderingPropertiesChanged(); _lastPosition = entity->getWorldPosition(); - _lastRotation = entity->getRotation(); + _lastRotation = entity->getWorldOrientation(); _lastDimensions = entity->getDimensions(); _keyLightProperties = entity->getKeyLightProperties(); @@ -277,7 +277,7 @@ bool ZoneEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPoint if (entity->getDimensions() != _lastDimensions) { return true; } - if (entity->getRotation() != _lastRotation) { + if (entity->getWorldOrientation() != _lastRotation) { return true; } diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index e1ff932915..2d90a08e1c 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1169,7 +1169,7 @@ bool EntityItem::wantTerseEditLogging() const { glm::mat4 EntityItem::getEntityToWorldMatrix() const { glm::mat4 translation = glm::translate(getWorldPosition()); - glm::mat4 rotation = glm::mat4_cast(getRotation()); + glm::mat4 rotation = glm::mat4_cast(getWorldOrientation()); glm::mat4 scale = glm::scale(getDimensions()); glm::mat4 registration = glm::translate(ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint()); return translation * rotation * scale * registration; @@ -1464,7 +1464,7 @@ AACube EntityItem::getMinimumAACube(bool& success) const { glm::vec3 unrotatedMinRelativeToEntity = - (dimensions * _registrationPoint); glm::vec3 unrotatedMaxRelativeToEntity = dimensions * (glm::vec3(1.0f, 1.0f, 1.0f) - _registrationPoint); Extents extents = { unrotatedMinRelativeToEntity, unrotatedMaxRelativeToEntity }; - extents.rotate(getRotation()); + extents.rotate(getWorldOrientation()); // shift the extents to be relative to the position/registration point extents.shiftBy(position); @@ -1494,7 +1494,7 @@ AABox EntityItem::getAABox(bool& success) const { glm::vec3 unrotatedMinRelativeToEntity = - (dimensions * _registrationPoint); glm::vec3 unrotatedMaxRelativeToEntity = dimensions * (glm::vec3(1.0f, 1.0f, 1.0f) - _registrationPoint); Extents extents = { unrotatedMinRelativeToEntity, unrotatedMaxRelativeToEntity }; - extents.rotate(getRotation()); + extents.rotate(getWorldOrientation()); // shift the extents to be relative to the position/registration point extents.shiftBy(position); @@ -2384,7 +2384,7 @@ void EntityItem::globalizeProperties(EntityItemProperties& properties, const QSt auto globalPosition = getWorldPosition(success); if (success) { properties.setPosition(globalPosition + offset); - properties.setRotation(getRotation()); + properties.setRotation(getWorldOrientation()); properties.setDimensions(getDimensions()); // Should we do velocities and accelerations, too? This could end up being quite involved, which is why the method exists. } else { diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 329a616609..9d532052fd 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -388,7 +388,7 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& properties.setPosition(entity->getWorldPosition()); } if (!scriptSideProperties.localRotationChanged() && !scriptSideProperties.rotationChanged()) { - properties.setRotation(entity->getOrientation()); + properties.setRotation(entity->getWorldOrientation()); } } properties = convertLocationFromScriptSemantics(properties); @@ -1798,7 +1798,7 @@ glm::mat4 EntityScriptingInterface::getEntityTransform(const QUuid& entityID) { EntityItemPointer entity = _entityTree->findEntityByEntityItemID(EntityItemID(entityID)); if (entity) { glm::mat4 translation = glm::translate(entity->getWorldPosition()); - glm::mat4 rotation = glm::mat4_cast(entity->getRotation()); + glm::mat4 rotation = glm::mat4_cast(entity->getWorldOrientation()); result = translation * rotation; } }); diff --git a/libraries/entities/src/EntityTreeElement.cpp b/libraries/entities/src/EntityTreeElement.cpp index 4b588fc23c..7e2958583d 100644 --- a/libraries/entities/src/EntityTreeElement.cpp +++ b/libraries/entities/src/EntityTreeElement.cpp @@ -662,7 +662,7 @@ bool EntityTreeElement::findDetailedRayIntersection(const glm::vec3& origin, con } // extents is the entity relative, scaled, centered extents of the entity - glm::mat4 rotation = glm::mat4_cast(entity->getRotation()); + glm::mat4 rotation = glm::mat4_cast(entity->getWorldOrientation()); glm::mat4 translation = glm::translate(entity->getWorldPosition()); glm::mat4 entityToWorldMatrix = translation * rotation; glm::mat4 worldToEntityMatrix = glm::inverse(entityToWorldMatrix); @@ -787,7 +787,7 @@ void EntityTreeElement::getEntities(const glm::vec3& searchPosition, float searc } else { // determine the worldToEntityMatrix that doesn't include scale because // we're going to use the registration aware aa box in the entity frame - glm::mat4 rotation = glm::mat4_cast(entity->getRotation()); + glm::mat4 rotation = glm::mat4_cast(entity->getWorldOrientation()); glm::mat4 translation = glm::translate(entity->getWorldPosition()); glm::mat4 entityToWorldMatrix = translation * rotation; glm::mat4 worldToEntityMatrix = glm::inverse(entityToWorldMatrix); diff --git a/libraries/entities/src/PolyVoxEntityItem.cpp b/libraries/entities/src/PolyVoxEntityItem.cpp index abcc075bcf..b08d94ca7e 100644 --- a/libraries/entities/src/PolyVoxEntityItem.cpp +++ b/libraries/entities/src/PolyVoxEntityItem.cpp @@ -411,7 +411,7 @@ glm::mat4 PolyVoxEntityItem::localToVoxelMatrix() const { } glm::mat4 PolyVoxEntityItem::voxelToWorldMatrix() const { - glm::mat4 rotation = glm::mat4_cast(getRotation()); + glm::mat4 rotation = glm::mat4_cast(getWorldOrientation()); glm::mat4 translation = glm::translate(getWorldPosition()); return translation * rotation * voxelToLocalMatrix(); } diff --git a/libraries/entities/src/TextEntityItem.cpp b/libraries/entities/src/TextEntityItem.cpp index 0f113248f7..67e83ab3fd 100644 --- a/libraries/entities/src/TextEntityItem.cpp +++ b/libraries/entities/src/TextEntityItem.cpp @@ -134,7 +134,7 @@ bool TextEntityItem::findDetailedRayIntersection(const glm::vec3& origin, const void** intersectedObject, bool precisionPicking) const { glm::vec3 dimensions = getDimensions(); glm::vec2 xyDimensions(dimensions.x, dimensions.y); - glm::quat rotation = getRotation(); + glm::quat rotation = getWorldOrientation(); glm::vec3 position = getWorldPosition() + rotation * (dimensions * (ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint())); diff --git a/libraries/entities/src/WebEntityItem.cpp b/libraries/entities/src/WebEntityItem.cpp index 91137431fe..5ee630d8ed 100644 --- a/libraries/entities/src/WebEntityItem.cpp +++ b/libraries/entities/src/WebEntityItem.cpp @@ -111,7 +111,7 @@ bool WebEntityItem::findDetailedRayIntersection(const glm::vec3& origin, const g void** intersectedObject, bool precisionPicking) const { glm::vec3 dimensions = getDimensions(); glm::vec2 xyDimensions(dimensions.x, dimensions.y); - glm::quat rotation = getRotation(); + glm::quat rotation = getWorldOrientation(); glm::vec3 position = getWorldPosition() + rotation * (dimensions * (ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint())); if (findRayRectangleIntersection(origin, direction, rotation, position, xyDimensions, distance)) { diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index be56bffb18..da98e838b0 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -109,7 +109,7 @@ void EntityMotionState::handleDeactivation() { // and also to RigidBody btTransform worldTrans; worldTrans.setOrigin(glmToBullet(_entity->getWorldPosition())); - worldTrans.setRotation(glmToBullet(_entity->getRotation())); + worldTrans.setRotation(glmToBullet(_entity->getWorldOrientation())); _body->setWorldTransform(worldTrans); // no need to update velocities... should already be zero } @@ -246,7 +246,7 @@ void EntityMotionState::getWorldTransform(btTransform& worldTrans) const { _accelerationNearlyGravityCount = (uint8_t)(-1); } worldTrans.setOrigin(glmToBullet(getObjectPosition())); - worldTrans.setRotation(glmToBullet(_entity->getRotation())); + worldTrans.setRotation(glmToBullet(_entity->getWorldOrientation())); } // This callback is invoked by the physics simulation at the end of each simulation step... @@ -264,7 +264,7 @@ void EntityMotionState::setWorldTransform(const btTransform& worldTrans) { qCDebug(physics) << "EntityMotionState::setWorldTransform setPosition failed" << _entity->getID(); } bool orientationSuccess; - _entity->setOrientation(bulletToGLM(worldTrans.getRotation()), orientationSuccess, false); + _entity->setWorldOrientation(bulletToGLM(worldTrans.getRotation()), orientationSuccess, false); if (!orientationSuccess) { static QString repeatedMessage = LogHandler::getInstance().addRepeatedMessageRegex("EntityMotionState::setWorldTransform " diff --git a/libraries/physics/src/EntityMotionState.h b/libraries/physics/src/EntityMotionState.h index 839309e60e..2bb692da81 100644 --- a/libraries/physics/src/EntityMotionState.h +++ b/libraries/physics/src/EntityMotionState.h @@ -58,7 +58,7 @@ public: virtual float getObjectAngularDamping() const override { return _entity->getAngularDamping(); } virtual glm::vec3 getObjectPosition() const override { return _entity->getWorldPosition() - ObjectMotionState::getWorldOffset(); } - virtual glm::quat getObjectRotation() const override { return _entity->getRotation(); } + virtual glm::quat getObjectRotation() const override { return _entity->getWorldOrientation(); } virtual glm::vec3 getObjectLinearVelocity() const override { return _entity->getVelocity(); } virtual glm::vec3 getObjectAngularVelocity() const override { return _entity->getAngularVelocity(); } virtual glm::vec3 getObjectGravity() const override { return _entity->getGravity(); } diff --git a/libraries/physics/src/ObjectActionTractor.cpp b/libraries/physics/src/ObjectActionTractor.cpp index 6ab7daae7f..629d8baefe 100644 --- a/libraries/physics/src/ObjectActionTractor.cpp +++ b/libraries/physics/src/ObjectActionTractor.cpp @@ -54,8 +54,8 @@ bool ObjectActionTractor::getTarget(float deltaTimeStep, glm::quat& rotation, gl if (!_otherID.isNull()) { if (other) { - rotation = _desiredRotationalTarget * other->getRotation(); - position = other->getRotation() * _desiredPositionalTarget + other->getWorldPosition(); + rotation = _desiredRotationalTarget * other->getWorldOrientation(); + position = other->getWorldOrientation() * _desiredPositionalTarget + other->getWorldPosition(); } else { // we should have an "other" but can't find it, so disable the tractor. linearTimeScale = FLT_MAX; diff --git a/libraries/shared/src/SpatiallyNestable.cpp b/libraries/shared/src/SpatiallyNestable.cpp index 9713ce8a17..a931a524fd 100644 --- a/libraries/shared/src/SpatiallyNestable.cpp +++ b/libraries/shared/src/SpatiallyNestable.cpp @@ -420,13 +420,13 @@ void SpatiallyNestable::setWorldPosition(const glm::vec3& position) { #endif } -glm::quat SpatiallyNestable::getOrientation(bool& success) const { +glm::quat SpatiallyNestable::getWorldOrientation(bool& success) const { return getTransform(success).getRotation(); } -glm::quat SpatiallyNestable::getOrientation() const { +glm::quat SpatiallyNestable::getWorldOrientation() const { bool success; - auto result = getOrientation(success); + auto result = getWorldOrientation(success); #ifdef WANT_DEBUG if (!success) { qCDebug(shared) << "Warning -- getOrientation failed" << getID(); @@ -435,11 +435,11 @@ glm::quat SpatiallyNestable::getOrientation() const { return result; } -glm::quat SpatiallyNestable::getOrientation(int jointIndex, bool& success) const { +glm::quat SpatiallyNestable::getWorldOrientation(int jointIndex, bool& success) const { return getTransform(jointIndex, success).getRotation(); } -void SpatiallyNestable::setOrientation(const glm::quat& orientation, bool& success, bool tellPhysics) { +void SpatiallyNestable::setWorldOrientation(const glm::quat& orientation, bool& success, bool tellPhysics) { // guard against introducing NaN into the transform if (isNaN(orientation)) { success = false; @@ -463,9 +463,9 @@ void SpatiallyNestable::setOrientation(const glm::quat& orientation, bool& succe } } -void SpatiallyNestable::setOrientation(const glm::quat& orientation) { +void SpatiallyNestable::setWorldOrientation(const glm::quat& orientation) { bool success; - setOrientation(orientation, success); + setWorldOrientation(orientation, success); #ifdef WANT_DEBUG if (!success) { qCDebug(shared) << "Warning -- setOrientation failed" << getID(); diff --git a/libraries/shared/src/SpatiallyNestable.h b/libraries/shared/src/SpatiallyNestable.h index 6b082fed82..929c2d53f2 100644 --- a/libraries/shared/src/SpatiallyNestable.h +++ b/libraries/shared/src/SpatiallyNestable.h @@ -83,15 +83,11 @@ public: virtual void setWorldPosition(const glm::vec3& position, bool& success, bool tellPhysics = true); virtual void setWorldPosition(const glm::vec3& position); - virtual glm::quat getOrientation(bool& success) const; - virtual glm::quat getOrientation() const; - virtual glm::quat getOrientation(int jointIndex, bool& success) const; - virtual void setOrientation(const glm::quat& orientation, bool& success, bool tellPhysics = true); - virtual void setOrientation(const glm::quat& orientation); - - // these are here because some older code uses rotation rather than orientation - virtual const glm::quat getRotation() const { return getOrientation(); } - virtual void setRotation(glm::quat orientation) { setOrientation(orientation); } + virtual glm::quat getWorldOrientation(bool& success) const; + virtual glm::quat getWorldOrientation() const; + virtual glm::quat getWorldOrientation(int jointIndex, bool& success) const; + virtual void setWorldOrientation(const glm::quat& orientation, bool& success, bool tellPhysics = true); + virtual void setWorldOrientation(const glm::quat& orientation); virtual glm::vec3 getVelocity(bool& success) const; virtual glm::vec3 getVelocity() const; From 950ac3540ab0af9a10b6188e190f8ec9cd16fb1b Mon Sep 17 00:00:00 2001 From: vladest Date: Sun, 29 Oct 2017 14:05:47 +0100 Subject: [PATCH 041/187] Fix mute unmute. Scrolling thru suggestions popup now set popup's contains into url. Fixed reload timer --- interface/resources/qml/hifi/WebBrowser.qml | 30 +++++++++++++-------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index 79932dbcdd..ec5594e74d 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -85,6 +85,7 @@ Rectangle { addressBar.model = [] webStack.currentItem.webEngineView.url = url + addressBar.editText = webStack.currentItem.webEngineView.url suggestionRequestTimer.stop(); addressBar.popup.close(); } @@ -136,6 +137,12 @@ Rectangle { goTo(textAt(index)); } + onHighlightedIndexChanged: { + if (highlightedIndex >= 0) { + addressBar.editText = textAt(highlightedIndex) + } + } + popup.height: webStack.height onFocusChanged: { @@ -191,7 +198,7 @@ Rectangle { if (webStack.currentItem.webEngineView.loading) { webStack.currentItem.webEngineView.stop(); } else { - webStack.currentItem.webEngineView.reloadTimer.start(); + webStack.currentItem.reloadTimer.start(); } } } @@ -228,7 +235,7 @@ Rectangle { anchors.verticalCenter: parent.verticalCenter; width: hifi.dimensions.controlLineHeight onClicked: { - webStack.currentItem.webEngineView.triggerWebAction(WebEngineView.ToggleMediaMute); + webStack.currentItem.webEngineView.audioMuted = !webStack.currentItem.webEngineView.audioMuted } } } @@ -261,6 +268,8 @@ Rectangle { id: webViewComponent Rectangle { property alias webEngineView: webEngineView + property alias reloadTimer: reloadTimer + property WebEngineNewViewRequest request: null property bool isDialog: QQControls.StackView.index > 0 @@ -314,7 +323,7 @@ Rectangle { WebEngineScript { id: createGlobalEventBridge sourceCode: eventBridgeJavaScriptToInject - injectionPoint: WebEngineScript.DocumentCreation + injectionPoint: WebEngineScript.Deferred worldId: WebEngineScript.MainWorld } @@ -399,14 +408,13 @@ Rectangle { onWindowCloseRequested: { webStack.pop(); } - - Timer { - id: reloadTimer - interval: 0 - running: false - repeat: false - onTriggered: webEngineView.reload() - } + } + Timer { + id: reloadTimer + interval: 0 + running: false + repeat: false + onTriggered: webEngineView.reload() } } } From 6ba2a83bbe0c94aa5efad2f7b25c5b6118e81666 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sun, 29 Oct 2017 10:47:56 -0700 Subject: [PATCH 042/187] Send and receive Avatar MASTER Gain packets, signaled using null nodeID. Packet protocol change is not needed (existing audio-mixer will ignore). --- .../src/audio/AudioMixerClientData.cpp | 10 ++++++++-- libraries/networking/src/NodeList.cpp | 13 +++++++++---- .../script-engine/src/UsersScriptingInterface.h | 4 ++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index 9bba9c7f30..59bc878cba 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -189,8 +189,14 @@ void AudioMixerClientData::parsePerAvatarGainSet(ReceivedMessage& message, const uint8_t packedGain; message.readPrimitive(&packedGain); float gain = unpackFloatGainFromByte(packedGain); - hrtfForStream(avatarUuid, QUuid()).setGainAdjustment(gain); - qDebug() << "Setting gain adjustment for hrtf[" << uuid << "][" << avatarUuid << "] to " << gain; + + if (avatarUuid.isNull()) { + // FIXME: change master gain, and reset hrtf gains for all active streams + qDebug() << "Setting MASTER avatar gain for [" << uuid << "] to " << gain; + } else { + hrtfForStream(avatarUuid, QUuid()).setGainAdjustment(gain); + qDebug() << "Setting avatar gain adjustment for hrtf[" << uuid << "][" << avatarUuid << "] to " << gain; + } } void AudioMixerClientData::parseNodeIgnoreRequest(QSharedPointer message, const SharedNodePointer& node) { diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 71128c5ff0..04699d8ad1 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -979,8 +979,8 @@ void NodeList::maybeSendIgnoreSetToNode(SharedNodePointer newNode) { } void NodeList::setAvatarGain(const QUuid& nodeID, float gain) { - // cannot set gain of yourself or nobody - if (!nodeID.isNull() && _sessionUUID != nodeID) { + // cannot set gain of yourself + if (_sessionUUID != nodeID) { auto audioMixer = soloNodeOfType(NodeType::AudioMixer); if (audioMixer) { // setup the packet @@ -988,10 +988,15 @@ void NodeList::setAvatarGain(const QUuid& nodeID, float gain) { // write the node ID to the packet setAvatarGainPacket->write(nodeID.toRfc4122()); + // We need to convert the gain in dB (from the script) to an amplitude before packing it. setAvatarGainPacket->writePrimitive(packFloatGainToByte(fastExp2f(gain / 6.0206f))); - qCDebug(networking) << "Sending Set Avatar Gain packet UUID: " << uuidStringWithoutCurlyBraces(nodeID) << "Gain:" << gain; + if (nodeID.isNull()) { + qCDebug(networking) << "Sending Set Avatar MASTER Gain packet with Gain:" << gain; + } else { + qCDebug(networking) << "Sending Set Avatar Gain packet with UUID: " << uuidStringWithoutCurlyBraces(nodeID) << "Gain:" << gain; + } sendPacket(std::move(setAvatarGainPacket), *audioMixer); QWriteLocker{ &_avatarGainMapLock }; @@ -1001,7 +1006,7 @@ void NodeList::setAvatarGain(const QUuid& nodeID, float gain) { qWarning() << "Couldn't find audio mixer to send set gain request"; } } else { - qWarning() << "NodeList::setAvatarGain called with an invalid ID or an ID which matches the current session ID:" << nodeID; + qWarning() << "NodeList::setAvatarGain called with an ID which matches the current session ID:" << nodeID; } } diff --git a/libraries/script-engine/src/UsersScriptingInterface.h b/libraries/script-engine/src/UsersScriptingInterface.h index acaa92d9c8..2d33bbca14 100644 --- a/libraries/script-engine/src/UsersScriptingInterface.h +++ b/libraries/script-engine/src/UsersScriptingInterface.h @@ -65,7 +65,7 @@ public slots: * Sets an avatar's gain for you and you only. * Units are Decibels (dB) * @function Users.setAvatarGain - * @param {nodeID} nodeID The node or session ID of the user whose gain you want to modify. + * @param {nodeID} nodeID The node or session ID of the user whose gain you want to modify, or null to set the master gain. * @param {float} gain The gain of the avatar you'd like to set. Units are dB. */ void setAvatarGain(const QUuid& nodeID, float gain); @@ -73,7 +73,7 @@ public slots: /**jsdoc * Gets an avatar's gain for you and you only. * @function Users.getAvatarGain - * @param {nodeID} nodeID The node or session ID of the user whose gain you want to get. + * @param {nodeID} nodeID The node or session ID of the user whose gain you want to get, or null to get the master gain. * @return {float} gain (in dB) */ float getAvatarGain(const QUuid& nodeID); From a99b1ffa230ef426010dc5278c0db0cf2cdaebb8 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sun, 29 Oct 2017 18:01:43 -0700 Subject: [PATCH 043/187] HRTF cleanup --- libraries/audio/src/AudioHRTF.cpp | 4 ++-- libraries/audio/src/avx512/AudioHRTF_avx512.cpp | 13 +------------ 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/libraries/audio/src/AudioHRTF.cpp b/libraries/audio/src/AudioHRTF.cpp index 1d5b074db7..f2f0235ccb 100644 --- a/libraries/audio/src/AudioHRTF.cpp +++ b/libraries/audio/src/AudioHRTF.cpp @@ -673,8 +673,8 @@ static void crossfade_4x2(float* src, float* dst, const float* win, int numFrame // linear interpolation with gain static void interpolate(float* dst, const float* src0, const float* src1, float frac, float gain) { - float f0 = HRTF_GAIN * gain * (1.0f - frac); - float f1 = HRTF_GAIN * gain * frac; + float f0 = gain * (1.0f - frac); + float f1 = gain * frac; for (int k = 0; k < HRTF_TAPS; k++) { dst[k] = f0 * src0[k] + f1 * src1[k]; diff --git a/libraries/audio/src/avx512/AudioHRTF_avx512.cpp b/libraries/audio/src/avx512/AudioHRTF_avx512.cpp index 682f5f2f77..a8bb62be35 100644 --- a/libraries/audio/src/avx512/AudioHRTF_avx512.cpp +++ b/libraries/audio/src/avx512/AudioHRTF_avx512.cpp @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#if defined(__AVX512F__) +#ifdef __AVX512F__ #include #include @@ -87,15 +87,4 @@ void FIR_1x4_AVX512(float* src, float* dst0, float* dst1, float* dst2, float* ds _mm256_zeroupper(); } -// FIXME: this fallback can be removed, once we require VS2017 -#elif defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__x86_64__) - -#include "../AudioHRTF.h" - -void FIR_1x4_AVX2(float* src, float* dst0, float* dst1, float* dst2, float* dst3, float coef[4][HRTF_TAPS], int numFrames); - -void FIR_1x4_AVX512(float* src, float* dst0, float* dst1, float* dst2, float* dst3, float coef[4][HRTF_TAPS], int numFrames) { - FIR_1x4_AVX2(src, dst0, dst1, dst2, dst3, coef, numFrames); -} - #endif From e6582a0370434761f0b4f29e50e9923ad8fabe0d Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 27 Oct 2017 10:39:37 -0700 Subject: [PATCH 044/187] control hovering, preset buttons for clicking, constness, scroll off surface --- interface/src/raypick/LaserPointer.cpp | 55 ++++++++++++++----- interface/src/raypick/LaserPointer.h | 18 +++--- .../src/raypick/PointerScriptingInterface.cpp | 7 ++- libraries/pointers/src/pointers/Pointer.cpp | 36 ++++++++---- libraries/pointers/src/pointers/Pointer.h | 14 +++-- .../pointers/src/pointers/PointerManager.cpp | 6 +- .../pointers/src/pointers/PointerManager.h | 6 +- 7 files changed, 100 insertions(+), 42 deletions(-) diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index b8122a2388..389a558f94 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -17,9 +17,9 @@ #include #include "PickScriptingInterface.h" -LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const PointerTriggers& triggers, - const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled) : - Pointer(DependencyManager::get()->createRayPick(rayProps), enabled), +LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, bool hover, + const PointerTriggers& triggers, bool faceAvatar, bool centerEndY, bool lockEnd, bool distanceScaleEnd, bool enabled) : + Pointer(DependencyManager::get()->createRayPick(rayProps), enabled, hover), _triggers(triggers), _renderStates(renderStates), _defaultRenderStates(defaultRenderStates), @@ -83,7 +83,7 @@ void LaserPointer::updateRenderStateOverlay(const OverlayID& id, const QVariant& } } -void LaserPointer::updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState) { +void LaserPointer::updateRenderState(const RenderState& renderState, const IntersectionType type, float distance, const QUuid& objectID, const PickRay& pickRay, bool defaultState) { if (!renderState.getStartID().isNull()) { QVariantMap startProps; startProps.insert("position", vec3toVariant(pickRay.origin)); @@ -210,13 +210,13 @@ Pointer::Buttons LaserPointer::getPressedButtons() { return toReturn; } -void LaserPointer::setLength(const float length) { +void LaserPointer::setLength(float length) { withWriteLock([&] { _laserLength = length; }); } -void LaserPointer::setLockEndUUID(QUuid objectID, const bool isOverlay) { +void LaserPointer::setLockEndUUID(const QUuid& objectID, bool isOverlay) { withWriteLock([&] { _objectLockEnd = std::pair(objectID, isOverlay); }); @@ -281,21 +281,50 @@ RenderState LaserPointer::buildRenderState(const QVariantMap& propMap) { return RenderState(startID, pathID, endID); } -PointerEvent LaserPointer::buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const { +PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const { uint32_t id = 0; glm::vec3 intersection = vec3FromVariant(pickResult["intersection"]); glm::vec3 surfaceNormal = vec3FromVariant(pickResult["surfaceNormal"]); glm::vec3 direction = -surfaceNormal; IntersectionType type = IntersectionType(pickResult["type"].toUInt()); + QUuid pickedID = pickResult["objectID"].toUuid(); glm::vec2 pos2D; - if (type == ENTITY) { - pos2D = projectOntoEntityXYPlane(uid, intersection); - } else if (type == OVERLAY) { - pos2D = projectOntoOverlayXYPlane(uid, intersection); + if (pickedID != target.objectID) { + QVariantMap searchRay = pickResult["searchRay"].toMap(); + glm::vec3 origin = vec3FromVariant(searchRay["origin"]); + glm::vec3 direction = vec3FromVariant(searchRay["direction"]); + if (target.type == ENTITY) { + intersection = intersectRayWithEntityXYPlane(target.objectID, origin, direction); + } else if (target.type == OVERLAY) { + intersection = intersectRayWithOverlayXYPlane(target.objectID, origin, direction); + } + } + if (target.type == ENTITY) { + pos2D = projectOntoEntityXYPlane(target.objectID, intersection); + } else if (target.type == OVERLAY) { + pos2D = projectOntoOverlayXYPlane(target.objectID, intersection); } return PointerEvent(PointerEvent::Move, id, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); } +glm::vec3 LaserPointer::intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const { + glm::vec3 n = rotation * Vectors::FRONT; + float t = glm::dot(n, point - origin) / glm::dot(n, direction); + return origin + t * direction; +} + +glm::vec3 LaserPointer::intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction) const { + glm::vec3 position = vec3FromVariant(qApp->getOverlays().getProperty(overlayID, "position").value); + glm::quat rotation = quatFromVariant(qApp->getOverlays().getProperty(overlayID, "rotation").value); + const glm::vec3 DEFAULT_REGISTRATION_POINT = glm::vec3(0.5f); + return intersectRayWithXYPlane(origin, direction, position, rotation, DEFAULT_REGISTRATION_POINT); +} + +glm::vec3 LaserPointer::intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction) const { + auto props = DependencyManager::get()->getEntityProperties(entityID); + return intersectRayWithXYPlane(origin, direction, props.getPosition(), props.getRotation(), props.getRegistrationPoint()); +} + glm::vec2 LaserPointer::projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const { glm::quat invRot = glm::inverse(rotation); glm::vec3 localPos = invRot * (worldPos - position); @@ -325,7 +354,7 @@ glm::vec2 LaserPointer::projectOntoOverlayXYPlane(const QUuid& overlayID, const return projectOntoXYPlane(worldPos, position, rotation, dimensions, DEFAULT_REGISTRATION_POINT); } -glm::vec2 LaserPointer::projectOntoEntityXYPlane(const QUuid& entity, const glm::vec3& worldPos) const { - auto props = DependencyManager::get()->getEntityProperties(entity); +glm::vec2 LaserPointer::projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos) const { + auto props = DependencyManager::get()->getEntityProperties(entityID); return projectOntoXYPlane(worldPos, props.getPosition(), props.getRotation(), props.getDimensions(), props.getRegistrationPoint()); } \ No newline at end of file diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index 167de88385..bdd3f2ffa0 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -54,16 +54,16 @@ public: typedef std::unordered_map RenderStateMap; typedef std::unordered_map> DefaultRenderStateMap; - LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const PointerTriggers& triggers, - const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled); + LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, bool hover, const PointerTriggers& triggers, + bool faceAvatar, bool centerEndY, bool lockEnd, bool distanceScaleEnd, bool enabled); ~LaserPointer(); void setRenderState(const std::string& state) override; // You cannot use editRenderState to change the overlay type of any part of the laser pointer. You can only edit the properties of the existing overlays. void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) override; - void setLength(const float length) override; - void setLockEndUUID(QUuid objectID, const bool isOverlay) override; + void setLength(float length) override; + void setLockEndUUID(const QUuid& objectID, bool isOverlay) override; void updateVisuals(const QVariantMap& prevRayPickResult) override; @@ -73,7 +73,7 @@ public: static RenderState buildRenderState(const QVariantMap& propMap); protected: - PointerEvent buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const override; + PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const override; private: PointerTriggers _triggers; @@ -88,10 +88,14 @@ private: std::pair _objectLockEnd { std::pair(QUuid(), false)}; void updateRenderStateOverlay(const OverlayID& id, const QVariant& props); - void updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState); + void updateRenderState(const RenderState& renderState, const IntersectionType type, float distance, const QUuid& objectID, const PickRay& pickRay, bool defaultState); void disableRenderState(const RenderState& renderState); - glm::vec2 projectOntoEntityXYPlane(const QUuid& entity, const glm::vec3& worldPos) const; + + glm::vec3 intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction) const; + glm::vec3 intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction) const; + glm::vec3 intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const; + glm::vec2 projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos) const; glm::vec2 projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos) const; glm::vec2 projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const; diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index 5ac209d295..c3a4ac164a 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -87,6 +87,11 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) } } + bool hover = false; + if (propertyMap["hover"].isValid()) { + hover = propertyMap["hover"].toBool(); + } + PointerTriggers triggers; auto userInputMapper = DependencyManager::get(); if (propertyMap["triggers"].isValid()) { @@ -105,7 +110,7 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) } } - return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, triggers, + return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, hover, triggers, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled)); } diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 0075762f02..af560a45ab 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -33,7 +33,7 @@ const QVariantMap Pointer::getPrevPickResult() { return DependencyManager::get()->getPrevPickResult(_pickUID); } -void Pointer::setPrecisionPicking(const bool precisionPicking) { +void Pointer::setPrecisionPicking(bool precisionPicking) { DependencyManager::get()->setPrecisionPicking(_pickUID, precisionPicking); } @@ -60,16 +60,17 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { // Hover events Pointer::PickedObject hoveredObject = getHoveredObject(pickResult); - PointerEvent hoveredEvent = buildPointerEvent(hoveredObject.objectID, pickResult); + PointerEvent hoveredEvent = buildPointerEvent(hoveredObject, pickResult); hoveredEvent.setType(PointerEvent::Move); + // TODO: set buttons on hover events hoveredEvent.setButton(PointerEvent::NoButtons); - if (_enabled) { + if (_enabled && _hover) { if (hoveredObject.type == OVERLAY) { if (_prevHoveredObject.type == OVERLAY) { if (hoveredObject.objectID == _prevHoveredObject.objectID) { emit pointerManager->hoverContinueOverlay(hoveredObject.objectID, hoveredEvent); } else { - PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject.objectID, pickResult); + PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); } @@ -87,7 +88,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { if (hoveredObject.objectID == _prevHoveredObject.objectID) { emit pointerManager->hoverContinueEntity(hoveredObject.objectID, hoveredEvent); } else { - PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject.objectID, pickResult); + PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); } @@ -122,7 +123,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { const std::string SHOULD_FOCUS_BUTTON = "Focus"; for (const std::string& button : newButtons) { hoveredEvent.setType(PointerEvent::Press); - hoveredEvent.setButton(PointerEvent::PrimaryButton); + hoveredEvent.setButton(chooseButton(button)); hoveredEvent.setShouldFocus(button == SHOULD_FOCUS_BUTTON); if (hoveredObject.type == ENTITY) { emit pointerManager->triggerBeginEntity(hoveredObject.objectID, hoveredEvent); @@ -134,9 +135,9 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { // Trigger continue for (const std::string& button : sameButtons) { - PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button].objectID, pickResult); + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); triggeredEvent.setType(PointerEvent::Move); - triggeredEvent.setButton(PointerEvent::PrimaryButton); + hoveredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { emit pointerManager->triggerContinueEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { @@ -146,9 +147,9 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { // Trigger end for (const std::string& button : _prevButtons) { - PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button].objectID, pickResult); + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); triggeredEvent.setType(PointerEvent::Release); - triggeredEvent.setButton(PointerEvent::PrimaryButton); + hoveredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { emit pointerManager->triggerEndEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { @@ -159,4 +160,19 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { _prevHoveredObject = hoveredObject; _prevButtons = buttons; +} + +PointerEvent::Button Pointer::chooseButton(const std::string& button) { + const std::string PRIMARY_BUTTON = "Primary"; + const std::string SECONDARY_BUTTON = "Secondary"; + const std::string TERTIARY_BUTTON = "Tertiary"; + if (button == PRIMARY_BUTTON) { + return PointerEvent::PrimaryButton; + } else if (button == SECONDARY_BUTTON) { + return PointerEvent::SecondaryButton; + } else if (button == TERTIARY_BUTTON) { + return PointerEvent::TertiaryButton; + } else { + return PointerEvent::NoButtons; + } } \ No newline at end of file diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index 595daebc33..ca35c38c7a 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -38,7 +38,7 @@ using PointerTriggers = std::vector; class Pointer : protected ReadWriteLockable { public: - Pointer(const QUuid& uid, bool enabled) : _pickUID(uid), _enabled(enabled) {} + Pointer(const QUuid& uid, bool enabled, bool hover) : _pickUID(uid), _enabled(enabled), _hover(hover) {} virtual ~Pointer(); @@ -49,13 +49,13 @@ public: virtual void setRenderState(const std::string& state) = 0; virtual void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) = 0; - virtual void setPrecisionPicking(const bool precisionPicking); + virtual void setPrecisionPicking(bool precisionPicking); virtual void setIgnoreItems(const QVector& ignoreItems) const; virtual void setIncludeItems(const QVector& includeItems) const; // Pointers can choose to implement these - virtual void setLength(const float length) {} - virtual void setLockEndUUID(QUuid objectID, const bool isOverlay) {} + virtual void setLength(float length) {} + virtual void setLockEndUUID(const QUuid& objectID, bool isOverlay) {} void update(); virtual void updateVisuals(const QVariantMap& pickResult) = 0; @@ -79,13 +79,17 @@ public: protected: const QUuid _pickUID; bool _enabled; + bool _hover; - virtual PointerEvent buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const = 0; + virtual PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const = 0; private: PickedObject _prevHoveredObject; Buttons _prevButtons; std::unordered_map _triggeredObjects; + + PointerEvent::Button chooseButton(const std::string& button); + }; #endif // hifi_Pick_h diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index a475ba4d83..2d41543b6b 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -79,7 +79,7 @@ void PointerManager::update() { } } -void PointerManager::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const { +void PointerManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { auto pointer = find(uid); if (pointer) { pointer->setPrecisionPicking(precisionPicking); @@ -100,14 +100,14 @@ void PointerManager::setIncludeItems(const QUuid& uid, const QVector& inc } } -void PointerManager::setLength(const QUuid& uid, const float length) const { +void PointerManager::setLength(const QUuid& uid, float length) const { auto pointer = find(uid); if (pointer) { pointer->setLength(length); } } -void PointerManager::setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const { +void PointerManager::setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { auto pointer = find(uid); if (pointer) { pointer->setLockEndUUID(objectID, isOverlay); diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 6e13c09851..9f477d9eb2 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -31,12 +31,12 @@ public: void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; const QVariantMap getPrevPickResult(const QUuid& uid) const; - void setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const; + void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; void setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const; void setIncludeItems(const QUuid& uid, const QVector& includeEntities) const; - void setLength(const QUuid& uid, const float length) const; - void setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const; + void setLength(const QUuid& uid, float length) const; + void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const; void update(); From 586dde7dd70e0846b2b6644a8abb0275f7503683 Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 30 Oct 2017 18:15:42 +0100 Subject: [PATCH 045/187] Removed GPL code. Added own implementation of suggestions engine. Fixed Google maps different issues --- interface/resources/qml/hifi/WebBrowser.qml | 24 +- interface/src/Application.cpp | 4 +- interface/src/opensearch/opensearchengine.cpp | 650 ------------------ interface/src/opensearch/opensearchengine.h | 128 ---- .../opensearch/opensearchenginedelegate.cpp | 43 -- .../src/opensearch/opensearchenginedelegate.h | 18 - .../webbrowsersuggestionsengine.cpp | 87 +++ .../webbrowser/webbrowsersuggestionsengine.h | 46 ++ 8 files changed, 147 insertions(+), 853 deletions(-) delete mode 100644 interface/src/opensearch/opensearchengine.cpp delete mode 100644 interface/src/opensearch/opensearchengine.h delete mode 100644 interface/src/opensearch/opensearchenginedelegate.cpp delete mode 100644 interface/src/opensearch/opensearchenginedelegate.h create mode 100644 interface/src/webbrowser/webbrowsersuggestionsengine.cpp create mode 100644 interface/src/webbrowser/webbrowsersuggestionsengine.h diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index ec5594e74d..ab93752d92 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -36,13 +36,11 @@ Rectangle { property bool keyboardRaised: false property bool punctuationMode: false property var suggestionsList: [] + readonly property string searchUrlTemplate: "https://www.google.com/search?client=hifibrowser&q="; - OpenSearchEngine { + + WebBrowserSuggestionsEngine { id: searchEngine - name: "Google"; - searchUrlTemplate: "https://www.google.com/search?client=hifibrowser&q={searchTerms}"; - suggestionsUrlTemplate: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; - suggestionsUrl: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; onSuggestions: { if (suggestions.length > 0) { @@ -65,7 +63,7 @@ Rectangle { repeat: false onTriggered: { if (addressBar.editText !== "") { - searchEngine.requestSuggestions(addressBarInput.text); + searchEngine.querySuggestions(addressBarInput.text); } } } @@ -74,18 +72,19 @@ Rectangle { function goTo(url) { //must be valid attempt to open an site with dot - + var urlNew = url if (url.indexOf(".") > 0) { if (url.indexOf("http") < 0) { - url = "http://" + url; + urlNew = "http://" + url; } } else { - url = searchEngine.searchUrl(url) + urlNew = searchUrlTemplate + url } addressBar.model = [] - webStack.currentItem.webEngineView.url = url - addressBar.editText = webStack.currentItem.webEngineView.url + //need to rebind if binfing was broken by selecting from suggestions + addressBar.editText = Qt.binding( function() { return webStack.currentItem.webEngineView.url; }); + webStack.currentItem.webEngineView.url = urlNew suggestionRequestTimer.stop(); addressBar.popup.close(); } @@ -305,11 +304,13 @@ Rectangle { objectName: "tabletWebEngineView" //profile: HFWebEngineProfile; + profile.httpUserAgent: "Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0" property string userScriptUrl: "" onLoadingChanged: { if (!loading) { + addressBarInput.cursorPosition = 0 //set input field cursot to beginning suggestionRequestTimer.stop(); addressBar.popup.close(); } @@ -360,7 +361,6 @@ Rectangle { Component.onCompleted: { webChannel.registerObject("eventBridge", eventBridge); webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); - //webEngineView.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; } onFeaturePermissionRequested: { diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0b9e8833e4..bf2754917b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -203,7 +203,7 @@ #include "commerce/Wallet.h" #include "commerce/QmlCommerce.h" -#include "opensearch/opensearchengine.h" +#include "webbrowser/webbrowsersuggestionsengine.h" // On Windows PC, NVidia Optimus laptop, we want to enable NVIDIA GPU // FIXME seems to be broken. @@ -2225,7 +2225,7 @@ void Application::initializeUi() { QmlCommerce::registerType(); qmlRegisterType("Hifi", 1, 0, "ResourceImageItem"); qmlRegisterType("Hifi", 1, 0, "Preference"); - qmlRegisterType("HifiWeb", 1, 0, "OpenSearchEngine"); + qmlRegisterType("HifiWeb", 1, 0, "WebBrowserSuggestionsEngine"); auto offscreenUi = DependencyManager::get(); offscreenUi->create(); diff --git a/interface/src/opensearch/opensearchengine.cpp b/interface/src/opensearch/opensearchengine.cpp deleted file mode 100644 index 28cacab256..0000000000 --- a/interface/src/opensearch/opensearchengine.cpp +++ /dev/null @@ -1,650 +0,0 @@ -#include "opensearchengine.h" -#include "qregexp.h" -#include "opensearchenginedelegate.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - - -/*! - \class OpenSearchEngine - \brief A class representing a single search engine described in OpenSearch format - - OpenSearchEngine is a class that represents a single search engine based on - the OpenSearch format. - For more information about the format, see http://www.opensearch.org/. - - Instances of the class hold all the data associated with the corresponding search - engines, such as name(), description() and also URL templates that are used - to construct URLs, which can be used later to perform search queries. Search engine - can also have an image, even an external one, in this case it will be downloaded - automatically from the network. - - OpenSearchEngine instances can be constructed from scratch but also read from - external sources and written back to them. OpenSearchReader and OpenSearchWriter - are the classes provided for reading and writing OpenSearch descriptions. - - Default constructed engines need to be filled with the necessary information before - they can be used to peform search requests. First of all, a search engine should have - the metadata including the name and the description. - However, the most important are URL templates, which are the construction of URLs - but can also contain template parameters, that are replaced with corresponding values - at the time of constructing URLs. - - There are two types of URL templates: search URL template and suggestions URL template. - Search URL template is needed for constructing search URLs, which point directly to - search results. Suggestions URL template is necessary to construct suggestion queries - URLs, which are then used for requesting contextual suggestions, a popular service - offered along with search results that provides search terms related to what has been - supplied by the user. - - Both types of URLs are constructed by the class, by searchUrl() and suggestionsUrl() - functions respectively. However, search requests are supposed to be performed outside - the class, while suggestion queries can be executed using the requestSuggestions() - method. The class will take care of peforming the network request and parsing the - JSON response. - - Both the image request and suggestion queries need network access. The class can - perform network requests on its own, though the client application needs to provide - a network access manager, which then will to be used for network operations. - Without that, both images delivered from remote locations and contextual suggestions - will be disabled. - - \sa OpenSearchReader, OpenSearchWriter -*/ - -/*! - Constructs an engine with a given \a parent. -*/ -OpenSearchEngine::OpenSearchEngine(QObject* parent) - : QObject(parent) - , m_searchMethod(QLatin1String("get")) - , m_suggestionsMethod(QLatin1String("get")) - , m_suggestionsReply(0) - , m_delegate(0) -{ - m_requestMethods.insert(QLatin1String("get"), QNetworkAccessManager::GetOperation); - m_requestMethods.insert(QLatin1String("post"), QNetworkAccessManager::PostOperation); -} - -/*! - A destructor. -*/ -OpenSearchEngine::~OpenSearchEngine() -{ -} - -QString OpenSearchEngine::parseTemplate(const QString &searchTerm, const QString &searchTemplate) -{ - QString language = QLocale().name(); - // Simple conversion to RFC 3066. - language = language.replace(QLatin1Char('_'), QLatin1Char('-')); - - QString result = searchTemplate; - result.replace(QLatin1String("{count}"), QLatin1String("20")); - result.replace(QLatin1String("{startIndex}"), QLatin1String("0")); - result.replace(QLatin1String("{startPage}"), QLatin1String("0")); - result.replace(QLatin1String("{language}"), language); - result.replace(QLatin1String("{inputEncoding}"), QLatin1String("UTF-8")); - result.replace(QLatin1String("{outputEncoding}"), QLatin1String("UTF-8")); - result.replace(QRegExp(QLatin1String("\\{([^\\}]*:|)source\\??\\}")), QCoreApplication::applicationName()); - result.replace(QLatin1String("{searchTerms}"), QLatin1String(QUrl::toPercentEncoding(searchTerm))); - - return result; -} - -/*! - \property OpenSearchEngine::name - \brief the name of the engine - - \sa description() -*/ -QString OpenSearchEngine::name() const -{ - return m_name; -} - -void OpenSearchEngine::setName(const QString &name) -{ - m_name = name; -} - -/*! - \property OpenSearchEngine::description - \brief the description of the engine - - \sa name() -*/ -QString OpenSearchEngine::description() const -{ - return m_description; -} - -void OpenSearchEngine::setDescription(const QString &description) -{ - m_description = description; -} - -/*! - \property OpenSearchEngine::searchUrlTemplate - \brief the template of the search URL - - \sa searchUrl(), searchParameters(), suggestionsUrlTemplate() -*/ -QString OpenSearchEngine::searchUrlTemplate() const -{ - return m_searchUrlTemplate; -} - -void OpenSearchEngine::setSearchUrlTemplate(const QString &searchUrlTemplate) -{ - if (!searchUrlTemplate.startsWith(QLatin1String("http://")) && !searchUrlTemplate.startsWith(QLatin1String("https://"))) { - return; - } - - m_searchUrlTemplate = searchUrlTemplate; -} - -/*! - Constructs and returns a search URL with a given \a searchTerm. - - The URL template is processed according to the specification: - http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_URL_template_syntax - - A list of template parameters currently supported and what they are replaced with: - \table - \header \o parameter - \o value - \row \o "{count}" - \o "20" - \row \o "{startIndex}" - \o "0" - \row \o "{startPage}" - \o "0" - \row \o "{language}" - \o "the default language code (RFC 3066)" - \row \o "{inputEncoding}" - \o "UTF-8" - \row \o "{outputEncoding}" - \o "UTF-8" - \row \o "{*:source}" - \o "application name, QCoreApplication::applicationName()" - \row \o "{searchTerms}" - \o "the string supplied by the user" - \endtable - - \sa searchUrlTemplate(), searchParameters(), suggestionsUrl() -*/ -QUrl OpenSearchEngine::searchUrl(const QString &searchTerm) const -{ - if (m_searchUrlTemplate.isEmpty()) { - return QUrl(); - } - - QUrl retVal = QUrl::fromEncoded(parseTemplate(searchTerm, m_searchUrlTemplate).toUtf8()); - - QUrlQuery query(retVal); - if (m_searchMethod != QLatin1String("post")) { - Parameters::const_iterator end = m_searchParameters.constEnd(); - Parameters::const_iterator i = m_searchParameters.constBegin(); - for (; i != end; ++i) { - query.addQueryItem(i->first, parseTemplate(searchTerm, i->second)); - } - retVal.setQuery(query); - } - - return retVal; -} - -QByteArray OpenSearchEngine::getPostData(const QString &searchTerm) const -{ - if (m_searchMethod != QLatin1String("post")) { - return QByteArray(); - } - - QUrl retVal = QUrl("http://foo.bar"); - - QUrlQuery query(retVal); - Parameters::const_iterator end = m_searchParameters.constEnd(); - Parameters::const_iterator i = m_searchParameters.constBegin(); - for (; i != end; ++i) { - query.addQueryItem(i->first, parseTemplate(searchTerm, i->second)); - } - retVal.setQuery(query); - - QByteArray data = retVal.toEncoded(QUrl::RemoveScheme); - return data.contains('?') ? data.mid(data.lastIndexOf('?') + 1) : QByteArray(); -} - -/*! - \property providesSuggestions - \brief indicates whether the engine supports contextual suggestions -*/ -bool OpenSearchEngine::providesSuggestions() const -{ - return (!m_suggestionsUrlTemplate.isEmpty() || !m_preparedSuggestionsUrl.isEmpty()); -} - -/*! - \property OpenSearchEngine::suggestionsUrlTemplate - \brief the template of the suggestions URL - - \sa suggestionsUrl(), suggestionsParameters(), searchUrlTemplate() -*/ -QString OpenSearchEngine::suggestionsUrlTemplate() const -{ - return m_suggestionsUrlTemplate; -} - -void OpenSearchEngine::setSuggestionsUrlTemplate(const QString &suggestionsUrlTemplate) -{ - if (!suggestionsUrlTemplate.startsWith(QLatin1String("http://")) && !suggestionsUrlTemplate.startsWith(QLatin1String("https://"))) { - return; - } - - m_suggestionsUrlTemplate = suggestionsUrlTemplate; -} - -/*! - Constructs a suggestions URL with a given \a searchTerm. - - The URL template is processed according to the specification: - http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_URL_template_syntax - - See searchUrl() for more information about processing template parameters. - - \sa suggestionsUrlTemplate(), suggestionsParameters(), searchUrl() -*/ -QUrl OpenSearchEngine::suggestionsUrl(const QString &searchTerm) const -{ - if (!m_preparedSuggestionsUrl.isEmpty()) { - QString s = m_preparedSuggestionsUrl; - s.replace(QLatin1String("%s"), searchTerm); - return QUrl(s); - } - - if (m_suggestionsUrlTemplate.isEmpty()) { - return QUrl(); - } - - QUrl retVal = QUrl::fromEncoded(parseTemplate(searchTerm, m_suggestionsUrlTemplate).toUtf8()); - - QUrlQuery query(retVal); - if (m_suggestionsMethod != QLatin1String("post")) { - Parameters::const_iterator end = m_suggestionsParameters.constEnd(); - Parameters::const_iterator i = m_suggestionsParameters.constBegin(); - for (; i != end; ++i) { - query.addQueryItem(i->first, parseTemplate(searchTerm, i->second)); - } - retVal.setQuery(query); - } - - return retVal; -} - -/*! - \property searchParameters - \brief additional parameters that will be included in the search URL - - For more information see: - http://www.opensearch.org/Specifications/OpenSearch/Extensions/Parameter/1.0 -*/ -OpenSearchEngine::Parameters OpenSearchEngine::searchParameters() const -{ - return m_searchParameters; -} - -void OpenSearchEngine::setSearchParameters(const Parameters &searchParameters) -{ - m_searchParameters = searchParameters; -} - -/*! - \property suggestionsParameters - \brief additional parameters that will be included in the suggestions URL - - For more information see: - http://www.opensearch.org/Specifications/OpenSearch/Extensions/Parameter/1.0 -*/ -OpenSearchEngine::Parameters OpenSearchEngine::suggestionsParameters() const -{ - return m_suggestionsParameters; -} - -void OpenSearchEngine::setSuggestionsParameters(const Parameters &suggestionsParameters) -{ - m_suggestionsParameters = suggestionsParameters; -} - -/*! - \property searchMethod - \brief HTTP request method that will be used to perform search requests -*/ -QString OpenSearchEngine::searchMethod() const -{ - return m_searchMethod; -} - -void OpenSearchEngine::setSearchMethod(const QString &method) -{ - QString requestMethod = method.toLower(); - if (!m_requestMethods.contains(requestMethod)) { - return; - } - - m_searchMethod = requestMethod; -} - -/*! - \property suggestionsMethod - \brief HTTP request method that will be used to perform suggestions requests -*/ -QString OpenSearchEngine::suggestionsMethod() const -{ - return m_suggestionsMethod; -} - -void OpenSearchEngine::setSuggestionsMethod(const QString &method) -{ - QString requestMethod = method.toLower(); - if (!m_requestMethods.contains(requestMethod)) { - return; - } - - m_suggestionsMethod = requestMethod; -} - -/*! - \property imageUrl - \brief the image URL of the engine - - When setting a new image URL, it won't be loaded immediately. The first request will be - deferred until image() is called for the first time. - - \note To be able to request external images, you need to provide a network access manager, - which will be used for network operations. - - \sa image(), networkAccessManager() -*/ -QString OpenSearchEngine::imageUrl() const -{ - return m_imageUrl; -} - -void OpenSearchEngine::setImageUrl(const QString &imageUrl) -{ - m_imageUrl = imageUrl; -} - -void OpenSearchEngine::loadImage() const -{ - if (m_imageUrl.isEmpty()) { - return; - } - QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); - - QNetworkReply* reply = networkAccessManager.get(QNetworkRequest(QUrl::fromEncoded(m_imageUrl.toUtf8()))); - connect(reply, SIGNAL(finished()), this, SLOT(imageObtained())); -} - -void OpenSearchEngine::imageObtained() -{ - QNetworkReply* reply = qobject_cast(sender()); - - if (!reply) { - return; - } - - QByteArray response = reply->readAll(); - - reply->close(); - reply->deleteLater(); - - if (response.isEmpty()) { - return; - } - - m_image.loadFromData(response); - emit imageChanged(); -} - -/*! - \property image - \brief the image of the engine - - When no image URL has been set and an image will be set explicitly, a new data URL - will be constructed, holding the image data encoded with Base64. - - \sa imageUrl() -*/ -QImage OpenSearchEngine::image() const -{ - if (m_image.isNull()) { - loadImage(); - } - return m_image; -} - -void OpenSearchEngine::setImage(const QImage &image) -{ - if (m_imageUrl.isEmpty()) { - QBuffer imageBuffer; - imageBuffer.open(QBuffer::ReadWrite); - if (image.save(&imageBuffer, "PNG")) { - m_imageUrl = QString(QLatin1String("data:image/png;base64,%1")) - .arg(QLatin1String(imageBuffer.buffer().toBase64())); - } - } - - m_image = image; - emit imageChanged(); -} - -/*! - \property valid - \brief indicates whether the engine is valid i.e. the description was properly formed and included all necessary information -*/ -bool OpenSearchEngine::isValid() const -{ - return (!m_name.isEmpty() && !m_searchUrlTemplate.isEmpty()); -} - -bool OpenSearchEngine::operator==(const OpenSearchEngine &other) const -{ - return (m_name == other.m_name - && m_description == other.m_description - && m_imageUrl == other.m_imageUrl - && m_searchUrlTemplate == other.m_searchUrlTemplate - && m_suggestionsUrlTemplate == other.m_suggestionsUrlTemplate - && m_searchParameters == other.m_searchParameters - && m_suggestionsParameters == other.m_suggestionsParameters); -} - -bool OpenSearchEngine::operator<(const OpenSearchEngine &other) const -{ - return (m_name < other.m_name); -} - -/*! - Requests contextual suggestions on the search engine, for a given \a searchTerm. - - If succeeded, suggestions() signal will be emitted once the suggestions are received. - - \note To be able to request suggestions, you need to provide a network access manager, - which will be used for network operations. - - \sa requestSearchResults() -*/ - -void OpenSearchEngine::setSuggestionsParameters(const QByteArray ¶meters) -{ - m_preparedSuggestionsParameters = parameters; -} - -void OpenSearchEngine::setSuggestionsUrl(const QString &string) -{ - m_preparedSuggestionsUrl = string; -} - -QString OpenSearchEngine::getSuggestionsUrl() -{ - return suggestionsUrl("searchstring").toString().replace(QLatin1String("searchstring"), QLatin1String("%s")); -} - -QByteArray OpenSearchEngine::getSuggestionsParameters() -{ - QStringList parameters; - Parameters::const_iterator end = m_suggestionsParameters.constEnd(); - Parameters::const_iterator i = m_suggestionsParameters.constBegin(); - for (; i != end; ++i) { - parameters.append(i->first + QLatin1String("=") + i->second); - } - - QByteArray data = parameters.join(QLatin1String("&")).toUtf8(); - - return data; -} - -void OpenSearchEngine::requestSuggestions(const QString &searchTerm) -{ - if (searchTerm.isEmpty() || !providesSuggestions()) { - return; - } - - QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); - - if (m_suggestionsReply) { - m_suggestionsReply->disconnect(this); - m_suggestionsReply->abort(); - m_suggestionsReply->deleteLater(); - m_suggestionsReply = 0; - } - - Q_ASSERT(m_requestMethods.contains(m_suggestionsMethod)); - if (m_suggestionsMethod == QLatin1String("get")) { - m_suggestionsReply = networkAccessManager.get(QNetworkRequest(suggestionsUrl(searchTerm))); - } - else { - QStringList parameters; - Parameters::const_iterator end = m_suggestionsParameters.constEnd(); - Parameters::const_iterator i = m_suggestionsParameters.constBegin(); - for (; i != end; ++i) { - parameters.append(i->first + QLatin1String("=") + i->second); - } - - QByteArray data = parameters.join(QLatin1String("&")).toUtf8(); - m_suggestionsReply = networkAccessManager.post(QNetworkRequest(suggestionsUrl(searchTerm)), data); - } - - connect(m_suggestionsReply, SIGNAL(finished()), this, SLOT(suggestionsObtained())); -} - -/*! - Requests search results on the search engine, for a given \a searchTerm. - - The default implementation does nothing, to supply your own you need to create your own - OpenSearchEngineDelegate subclass and supply it to the engine. Then the function will call - the performSearchRequest() method of the delegate, which can then handle the request - in a custom way. - - \sa requestSuggestions(), delegate() -*/ -void OpenSearchEngine::requestSearchResults(const QString &searchTerm) -{ - if (!m_delegate || searchTerm.isEmpty()) { - return; - } - - Q_ASSERT(m_requestMethods.contains(m_searchMethod)); - - QNetworkRequest request(QUrl(searchUrl(searchTerm))); - QByteArray data; - QNetworkAccessManager::Operation operation = m_requestMethods.value(m_searchMethod); - - if (operation == QNetworkAccessManager::PostOperation) { - QStringList parameters; - Parameters::const_iterator end = m_searchParameters.constEnd(); - Parameters::const_iterator i = m_searchParameters.constBegin(); - for (; i != end; ++i) { - parameters.append(i->first + QLatin1String("=") + i->second); - } - - data = parameters.join(QLatin1String("&")).toUtf8(); - } - - m_delegate->performSearchRequest(request, operation, data); -} - -void OpenSearchEngine::suggestionsObtained() -{ - const QByteArray response = m_suggestionsReply->readAll(); - - m_suggestionsReply->close(); - m_suggestionsReply->deleteLater(); - m_suggestionsReply = 0; - - QJsonParseError err; - QJsonDocument json = QJsonDocument::fromJson(response, &err); - const QVariant res = json.toVariant(); - - if (err.error != QJsonParseError::NoError || res.type() != QVariant::List) - return; - - const QVariantList list = res.toList(); - - if (list.size() < 2) - return; - - QStringList out; - - foreach (const QVariant &v, list.at(1).toList()) - out.append(v.toString()); - - emit suggestions(out); -} - - -/*! - \property delegate - \brief the delegate that is used to perform specific tasks. - - It can be currently supplied to provide a custom behaviour ofthe requetSearchResults() method. - The default implementation does nothing. -*/ -OpenSearchEngineDelegate* OpenSearchEngine::delegate() const -{ - return m_delegate; -} - -void OpenSearchEngine::setDelegate(OpenSearchEngineDelegate* delegate) -{ - m_delegate = delegate; -} - -/*! - \fn void OpenSearchEngine::imageChanged() - - This signal is emitted whenever the image of the engine changes. - - \sa image(), imageUrl() -*/ - -/*! - \fn void OpenSearchEngine::suggestions(const QStringList &suggestions) - - This signal is emitted whenever new contextual suggestions have been provided - by the search engine. To request suggestions, use requestSuggestions(). - The suggestion set is specified by \a suggestions. - - \sa requestSuggestions() -*/ diff --git a/interface/src/opensearch/opensearchengine.h b/interface/src/opensearch/opensearchengine.h deleted file mode 100644 index fa714b85d3..0000000000 --- a/interface/src/opensearch/opensearchengine.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef OPENSEARCHENGINE_H -#define OPENSEARCHENGINE_H - -#include -#include -#include -#include -#include -#include - -class QNetworkReply; - -class OpenSearchEngineDelegate; -class OpenSearchEngine : public QObject -{ - Q_OBJECT - -signals: - void imageChanged(); - void suggestions(const QStringList &suggestions); - -public: - typedef QPair Parameter; - typedef QList Parameters; - - Q_PROPERTY(QString name READ name WRITE setName) - Q_PROPERTY(QString description READ description WRITE setDescription) - Q_PROPERTY(QString searchUrlTemplate READ searchUrlTemplate WRITE setSearchUrlTemplate) - Q_PROPERTY(Parameters searchParameters READ searchParameters WRITE setSearchParameters) - Q_PROPERTY(QString searchMethod READ searchMethod WRITE setSearchMethod) - Q_PROPERTY(QString suggestionsUrlTemplate READ suggestionsUrlTemplate WRITE setSuggestionsUrlTemplate) - Q_PROPERTY(QString suggestionsUrl READ getSuggestionsUrl WRITE setSuggestionsUrl) - Q_PROPERTY(Parameters suggestionsParameters READ suggestionsParameters WRITE setSuggestionsParameters) - Q_PROPERTY(QString suggestionsMethod READ suggestionsMethod WRITE setSuggestionsMethod) - Q_PROPERTY(bool providesSuggestions READ providesSuggestions) - Q_PROPERTY(QString imageUrl READ imageUrl WRITE setImageUrl) - Q_PROPERTY(bool valid READ isValid) - - OpenSearchEngine(QObject* parent = 0); - ~OpenSearchEngine(); - - QString name() const; - void setName(const QString &name); - - QString description() const; - void setDescription(const QString &description); - - QString searchUrlTemplate() const; - void setSearchUrlTemplate(const QString &searchUrl); - - QByteArray getPostData(const QString &searchTerm) const; - - bool providesSuggestions() const; - - QString suggestionsUrlTemplate() const; - void setSuggestionsUrlTemplate(const QString &suggestionsUrl); - QUrl suggestionsUrl(const QString &searchTerm) const; - - Parameters searchParameters() const; - void setSearchParameters(const Parameters &searchParameters); - - Parameters suggestionsParameters() const; - void setSuggestionsParameters(const Parameters &suggestionsParameters); - - QString searchMethod() const; - void setSearchMethod(const QString &method); - - QString suggestionsMethod() const; - void setSuggestionsMethod(const QString &method); - - QString imageUrl() const; - void setImageUrl(const QString &url); - - QImage image() const; - void setImage(const QImage &image); - - bool isValid() const; - - void setSuggestionsUrl(const QString &string); - void setSuggestionsParameters(const QByteArray ¶meters); - QString getSuggestionsUrl(); - QByteArray getSuggestionsParameters(); - - OpenSearchEngineDelegate* delegate() const; - void setDelegate(OpenSearchEngineDelegate* delegate); - - bool operator==(const OpenSearchEngine &other) const; - bool operator<(const OpenSearchEngine &other) const; - -public slots: - QUrl searchUrl(const QString &searchTerm) const; - void requestSuggestions(const QString &searchTerm); - void requestSearchResults(const QString &searchTerm); - -protected: - static QString parseTemplate(const QString &searchTerm, const QString &searchTemplate); - void loadImage() const; - -private slots: - void imageObtained(); - void suggestionsObtained(); - -private: - QString m_name; - QString m_description; - - QString m_imageUrl; - QImage m_image; - - QString m_searchUrlTemplate; - QString m_suggestionsUrlTemplate; - Parameters m_searchParameters; - Parameters m_suggestionsParameters; - QString m_searchMethod; - QString m_suggestionsMethod; - - QByteArray m_preparedSuggestionsParameters; - QString m_preparedSuggestionsUrl; - - QMap m_requestMethods; - - QNetworkReply* m_suggestionsReply; - - OpenSearchEngineDelegate* m_delegate; -}; - -#endif // OPENSEARCHENGINE_H - diff --git a/interface/src/opensearch/opensearchenginedelegate.cpp b/interface/src/opensearch/opensearchenginedelegate.cpp deleted file mode 100644 index 2c9c18ece0..0000000000 --- a/interface/src/opensearch/opensearchenginedelegate.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "opensearchenginedelegate.h" - -/*! - \class OpenSearchEngineDelegate - \brief An abstract class providing custom processing of specific activities. - - OpenSearchEngineDelegate is an abstract class that can be subclassed and set on - an OpenSearchEngine. It allows to customize some parts of the default implementation - or even extend it with missing bits. - - Currently subclasses can only provide a custom way of handling search requests by - reimplementing the performSearchRequest() method. - - \sa OpenSearchEngine -*/ - -/*! - Constructs the delegate. -*/ -OpenSearchEngineDelegate::OpenSearchEngineDelegate() -{ -} - -/*! - Destructs the delegate. -*/ -OpenSearchEngineDelegate::~OpenSearchEngineDelegate() -{ -} - -/*! - \fn void performSearchRequest(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation, const QByteArray &data) = 0 - - This method will be used after OpenSearchEngine::requestResults() is called. - - For example, a console application that uses the OpenSearchEngine class to generate - a search URL for a search term supplied by the user would reimplement the function - and forward the request to e.g. a web browser. - - Likewise, a web browser that uses the OpenSearchEngine class to support multiple search - engines e.g. in a toolbar would perform the request and navigate to the search results site. -*/ diff --git a/interface/src/opensearch/opensearchenginedelegate.h b/interface/src/opensearch/opensearchenginedelegate.h deleted file mode 100644 index ae7b5ef876..0000000000 --- a/interface/src/opensearch/opensearchenginedelegate.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef OPENSEARCHENGINEDELEGATE_H -#define OPENSEARCHENGINEDELEGATE_H - -#include -#include - -class OpenSearchEngineDelegate -{ -public: - OpenSearchEngineDelegate(); - virtual ~OpenSearchEngineDelegate(); - - virtual void performSearchRequest(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation, - const QByteArray &data) = 0; -}; - -#endif // OPENSEARCHENGINEDELEGATE_H diff --git a/interface/src/webbrowser/webbrowsersuggestionsengine.cpp b/interface/src/webbrowser/webbrowsersuggestionsengine.cpp new file mode 100644 index 0000000000..546d9c68b0 --- /dev/null +++ b/interface/src/webbrowser/webbrowsersuggestionsengine.cpp @@ -0,0 +1,87 @@ +// +// webbrowsersuggestionsengine.cpp +// interface/src/webbrowser +// +// Created by Vlad Stelmahovsky Kapolka on 30/10/17. +// 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 +// + +#include "webbrowsersuggestionsengine.h" +#include "qregexp.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +const QString GoogleSuggestionsUrl = "https://suggestqueries.google.com/complete/search?output=firefox&q=%1"; + +WebBrowserSuggestionsEngine::WebBrowserSuggestionsEngine(QObject* parent) + : QObject(parent) + , _suggestionsReply(0) { + _currentNAM = &NetworkAccessManager::getInstance(); + connect(_currentNAM, &QNetworkAccessManager::finished, this, &WebBrowserSuggestionsEngine::suggestionsFinished); +} + + +WebBrowserSuggestionsEngine::~WebBrowserSuggestionsEngine() { + disconnect(_currentNAM, &QNetworkAccessManager::finished, this, &WebBrowserSuggestionsEngine::suggestionsFinished); +} + +void WebBrowserSuggestionsEngine::querySuggestions(const QString &searchString) { + if (_suggestionsReply) { + _suggestionsReply->disconnect(this); + _suggestionsReply->abort(); + _suggestionsReply->deleteLater(); + _suggestionsReply = 0; + } + QString url = QString(GoogleSuggestionsUrl).arg(searchString); + _suggestionsReply = _currentNAM->get(QNetworkRequest(url)); +} + +void WebBrowserSuggestionsEngine::suggestionsFinished(QNetworkReply *reply) { + + if (reply != _suggestionsReply) { + return; //invalid reply. ignore + } + + const QByteArray response = _suggestionsReply->readAll(); + + _suggestionsReply->close(); + _suggestionsReply->deleteLater(); + _suggestionsReply = 0; + + QJsonParseError err; + QJsonDocument json = QJsonDocument::fromJson(response, &err); + const QVariant res = json.toVariant(); + + if (err.error != QJsonParseError::NoError || res.type() != QVariant::List) { + return; + } + + const QVariantList list = res.toList(); + + if (list.size() < 2) { + return; + } + + QStringList out; + const QVariantList& suggList = list.at(1).toList(); + + foreach (const QVariant &v, suggList) { + out.append(v.toString()); + } + + emit suggestions(out); +} diff --git a/interface/src/webbrowser/webbrowsersuggestionsengine.h b/interface/src/webbrowser/webbrowsersuggestionsengine.h new file mode 100644 index 0000000000..fa0f7f8e2e --- /dev/null +++ b/interface/src/webbrowser/webbrowsersuggestionsengine.h @@ -0,0 +1,46 @@ +#ifndef WEBBROWSERSUGGESTIONSENGINE_H +#define WEBBROWSERSUGGESTIONSENGINE_H + +#include +#include +#include +// +// webbrowsersuggestionsengine.h +// interface/src/webbrowser +// +// Created by Vlad Stelmahovsky Kapolka on 30/10/17. +// 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 +// + +#include +#include +#include + +class QNetworkReply; + +class WebBrowserSuggestionsEngine : public QObject +{ + Q_OBJECT + +public: + WebBrowserSuggestionsEngine(QObject* parent = 0); + virtual ~WebBrowserSuggestionsEngine(); + +public slots: + void querySuggestions(const QString& searchString); + +signals: + void suggestions(const QStringList& suggestions); + +private slots: + void suggestionsFinished(QNetworkReply *reply); +private: + QNetworkReply* _suggestionsReply; + QNetworkAccessManager* _currentNAM; +}; + +#endif // WEBBROWSERSUGGESTIONSENGINE_H + From e9a5acda06373ac98a8a7c70c53f67df29b222c0 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 27 Oct 2017 10:39:37 -0700 Subject: [PATCH 046/187] control hovering, preset buttons for clicking, constness, scroll off surface --- interface/src/raypick/LaserPointer.cpp | 56 ++++++++++++++----- interface/src/raypick/LaserPointer.h | 18 +++--- .../src/raypick/PointerScriptingInterface.cpp | 7 ++- libraries/pointers/src/pointers/Pointer.cpp | 36 ++++++++---- libraries/pointers/src/pointers/Pointer.h | 14 +++-- .../pointers/src/pointers/PointerManager.cpp | 6 +- .../pointers/src/pointers/PointerManager.h | 6 +- 7 files changed, 100 insertions(+), 43 deletions(-) diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index b8122a2388..92a404e765 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -17,9 +17,9 @@ #include #include "PickScriptingInterface.h" -LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const PointerTriggers& triggers, - const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled) : - Pointer(DependencyManager::get()->createRayPick(rayProps), enabled), +LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, bool hover, + const PointerTriggers& triggers, bool faceAvatar, bool centerEndY, bool lockEnd, bool distanceScaleEnd, bool enabled) : + Pointer(DependencyManager::get()->createRayPick(rayProps), enabled, hover), _triggers(triggers), _renderStates(renderStates), _defaultRenderStates(defaultRenderStates), @@ -83,7 +83,7 @@ void LaserPointer::updateRenderStateOverlay(const OverlayID& id, const QVariant& } } -void LaserPointer::updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState) { +void LaserPointer::updateRenderState(const RenderState& renderState, const IntersectionType type, float distance, const QUuid& objectID, const PickRay& pickRay, bool defaultState) { if (!renderState.getStartID().isNull()) { QVariantMap startProps; startProps.insert("position", vec3toVariant(pickRay.origin)); @@ -210,13 +210,13 @@ Pointer::Buttons LaserPointer::getPressedButtons() { return toReturn; } -void LaserPointer::setLength(const float length) { +void LaserPointer::setLength(float length) { withWriteLock([&] { _laserLength = length; }); } -void LaserPointer::setLockEndUUID(QUuid objectID, const bool isOverlay) { +void LaserPointer::setLockEndUUID(const QUuid& objectID, bool isOverlay) { withWriteLock([&] { _objectLockEnd = std::pair(objectID, isOverlay); }); @@ -281,21 +281,49 @@ RenderState LaserPointer::buildRenderState(const QVariantMap& propMap) { return RenderState(startID, pathID, endID); } -PointerEvent LaserPointer::buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const { +PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const { uint32_t id = 0; glm::vec3 intersection = vec3FromVariant(pickResult["intersection"]); glm::vec3 surfaceNormal = vec3FromVariant(pickResult["surfaceNormal"]); glm::vec3 direction = -surfaceNormal; - IntersectionType type = IntersectionType(pickResult["type"].toUInt()); + QUuid pickedID = pickResult["objectID"].toUuid(); glm::vec2 pos2D; - if (type == ENTITY) { - pos2D = projectOntoEntityXYPlane(uid, intersection); - } else if (type == OVERLAY) { - pos2D = projectOntoOverlayXYPlane(uid, intersection); + if (pickedID != target.objectID) { + QVariantMap searchRay = pickResult["searchRay"].toMap(); + glm::vec3 origin = vec3FromVariant(searchRay["origin"]); + glm::vec3 direction = vec3FromVariant(searchRay["direction"]); + if (target.type == ENTITY) { + intersection = intersectRayWithEntityXYPlane(target.objectID, origin, direction); + } else if (target.type == OVERLAY) { + intersection = intersectRayWithOverlayXYPlane(target.objectID, origin, direction); + } + } + if (target.type == ENTITY) { + pos2D = projectOntoEntityXYPlane(target.objectID, intersection); + } else if (target.type == OVERLAY) { + pos2D = projectOntoOverlayXYPlane(target.objectID, intersection); } return PointerEvent(PointerEvent::Move, id, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); } +glm::vec3 LaserPointer::intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const { + glm::vec3 n = rotation * Vectors::FRONT; + float t = glm::dot(n, point - origin) / glm::dot(n, direction); + return origin + t * direction; +} + +glm::vec3 LaserPointer::intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction) const { + glm::vec3 position = vec3FromVariant(qApp->getOverlays().getProperty(overlayID, "position").value); + glm::quat rotation = quatFromVariant(qApp->getOverlays().getProperty(overlayID, "rotation").value); + const glm::vec3 DEFAULT_REGISTRATION_POINT = glm::vec3(0.5f); + return intersectRayWithXYPlane(origin, direction, position, rotation, DEFAULT_REGISTRATION_POINT); +} + +glm::vec3 LaserPointer::intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction) const { + auto props = DependencyManager::get()->getEntityProperties(entityID); + return intersectRayWithXYPlane(origin, direction, props.getPosition(), props.getRotation(), props.getRegistrationPoint()); +} + glm::vec2 LaserPointer::projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const { glm::quat invRot = glm::inverse(rotation); glm::vec3 localPos = invRot * (worldPos - position); @@ -325,7 +353,7 @@ glm::vec2 LaserPointer::projectOntoOverlayXYPlane(const QUuid& overlayID, const return projectOntoXYPlane(worldPos, position, rotation, dimensions, DEFAULT_REGISTRATION_POINT); } -glm::vec2 LaserPointer::projectOntoEntityXYPlane(const QUuid& entity, const glm::vec3& worldPos) const { - auto props = DependencyManager::get()->getEntityProperties(entity); +glm::vec2 LaserPointer::projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos) const { + auto props = DependencyManager::get()->getEntityProperties(entityID); return projectOntoXYPlane(worldPos, props.getPosition(), props.getRotation(), props.getDimensions(), props.getRegistrationPoint()); } \ No newline at end of file diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index 167de88385..bdd3f2ffa0 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -54,16 +54,16 @@ public: typedef std::unordered_map RenderStateMap; typedef std::unordered_map> DefaultRenderStateMap; - LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, const PointerTriggers& triggers, - const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled); + LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, bool hover, const PointerTriggers& triggers, + bool faceAvatar, bool centerEndY, bool lockEnd, bool distanceScaleEnd, bool enabled); ~LaserPointer(); void setRenderState(const std::string& state) override; // You cannot use editRenderState to change the overlay type of any part of the laser pointer. You can only edit the properties of the existing overlays. void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) override; - void setLength(const float length) override; - void setLockEndUUID(QUuid objectID, const bool isOverlay) override; + void setLength(float length) override; + void setLockEndUUID(const QUuid& objectID, bool isOverlay) override; void updateVisuals(const QVariantMap& prevRayPickResult) override; @@ -73,7 +73,7 @@ public: static RenderState buildRenderState(const QVariantMap& propMap); protected: - PointerEvent buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const override; + PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const override; private: PointerTriggers _triggers; @@ -88,10 +88,14 @@ private: std::pair _objectLockEnd { std::pair(QUuid(), false)}; void updateRenderStateOverlay(const OverlayID& id, const QVariant& props); - void updateRenderState(const RenderState& renderState, const IntersectionType type, const float distance, const QUuid& objectID, const PickRay& pickRay, const bool defaultState); + void updateRenderState(const RenderState& renderState, const IntersectionType type, float distance, const QUuid& objectID, const PickRay& pickRay, bool defaultState); void disableRenderState(const RenderState& renderState); - glm::vec2 projectOntoEntityXYPlane(const QUuid& entity, const glm::vec3& worldPos) const; + + glm::vec3 intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction) const; + glm::vec3 intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction) const; + glm::vec3 intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const; + glm::vec2 projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos) const; glm::vec2 projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos) const; glm::vec2 projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const; diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index 5ac209d295..c3a4ac164a 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -87,6 +87,11 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) } } + bool hover = false; + if (propertyMap["hover"].isValid()) { + hover = propertyMap["hover"].toBool(); + } + PointerTriggers triggers; auto userInputMapper = DependencyManager::get(); if (propertyMap["triggers"].isValid()) { @@ -105,7 +110,7 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) } } - return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, triggers, + return DependencyManager::get()->addPointer(std::make_shared(properties, renderStates, defaultRenderStates, hover, triggers, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled)); } diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 0075762f02..af560a45ab 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -33,7 +33,7 @@ const QVariantMap Pointer::getPrevPickResult() { return DependencyManager::get()->getPrevPickResult(_pickUID); } -void Pointer::setPrecisionPicking(const bool precisionPicking) { +void Pointer::setPrecisionPicking(bool precisionPicking) { DependencyManager::get()->setPrecisionPicking(_pickUID, precisionPicking); } @@ -60,16 +60,17 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { // Hover events Pointer::PickedObject hoveredObject = getHoveredObject(pickResult); - PointerEvent hoveredEvent = buildPointerEvent(hoveredObject.objectID, pickResult); + PointerEvent hoveredEvent = buildPointerEvent(hoveredObject, pickResult); hoveredEvent.setType(PointerEvent::Move); + // TODO: set buttons on hover events hoveredEvent.setButton(PointerEvent::NoButtons); - if (_enabled) { + if (_enabled && _hover) { if (hoveredObject.type == OVERLAY) { if (_prevHoveredObject.type == OVERLAY) { if (hoveredObject.objectID == _prevHoveredObject.objectID) { emit pointerManager->hoverContinueOverlay(hoveredObject.objectID, hoveredEvent); } else { - PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject.objectID, pickResult); + PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); } @@ -87,7 +88,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { if (hoveredObject.objectID == _prevHoveredObject.objectID) { emit pointerManager->hoverContinueEntity(hoveredObject.objectID, hoveredEvent); } else { - PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject.objectID, pickResult); + PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); } @@ -122,7 +123,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { const std::string SHOULD_FOCUS_BUTTON = "Focus"; for (const std::string& button : newButtons) { hoveredEvent.setType(PointerEvent::Press); - hoveredEvent.setButton(PointerEvent::PrimaryButton); + hoveredEvent.setButton(chooseButton(button)); hoveredEvent.setShouldFocus(button == SHOULD_FOCUS_BUTTON); if (hoveredObject.type == ENTITY) { emit pointerManager->triggerBeginEntity(hoveredObject.objectID, hoveredEvent); @@ -134,9 +135,9 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { // Trigger continue for (const std::string& button : sameButtons) { - PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button].objectID, pickResult); + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); triggeredEvent.setType(PointerEvent::Move); - triggeredEvent.setButton(PointerEvent::PrimaryButton); + hoveredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { emit pointerManager->triggerContinueEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { @@ -146,9 +147,9 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { // Trigger end for (const std::string& button : _prevButtons) { - PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button].objectID, pickResult); + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); triggeredEvent.setType(PointerEvent::Release); - triggeredEvent.setButton(PointerEvent::PrimaryButton); + hoveredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { emit pointerManager->triggerEndEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { @@ -159,4 +160,19 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { _prevHoveredObject = hoveredObject; _prevButtons = buttons; +} + +PointerEvent::Button Pointer::chooseButton(const std::string& button) { + const std::string PRIMARY_BUTTON = "Primary"; + const std::string SECONDARY_BUTTON = "Secondary"; + const std::string TERTIARY_BUTTON = "Tertiary"; + if (button == PRIMARY_BUTTON) { + return PointerEvent::PrimaryButton; + } else if (button == SECONDARY_BUTTON) { + return PointerEvent::SecondaryButton; + } else if (button == TERTIARY_BUTTON) { + return PointerEvent::TertiaryButton; + } else { + return PointerEvent::NoButtons; + } } \ No newline at end of file diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index 595daebc33..ca35c38c7a 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -38,7 +38,7 @@ using PointerTriggers = std::vector; class Pointer : protected ReadWriteLockable { public: - Pointer(const QUuid& uid, bool enabled) : _pickUID(uid), _enabled(enabled) {} + Pointer(const QUuid& uid, bool enabled, bool hover) : _pickUID(uid), _enabled(enabled), _hover(hover) {} virtual ~Pointer(); @@ -49,13 +49,13 @@ public: virtual void setRenderState(const std::string& state) = 0; virtual void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) = 0; - virtual void setPrecisionPicking(const bool precisionPicking); + virtual void setPrecisionPicking(bool precisionPicking); virtual void setIgnoreItems(const QVector& ignoreItems) const; virtual void setIncludeItems(const QVector& includeItems) const; // Pointers can choose to implement these - virtual void setLength(const float length) {} - virtual void setLockEndUUID(QUuid objectID, const bool isOverlay) {} + virtual void setLength(float length) {} + virtual void setLockEndUUID(const QUuid& objectID, bool isOverlay) {} void update(); virtual void updateVisuals(const QVariantMap& pickResult) = 0; @@ -79,13 +79,17 @@ public: protected: const QUuid _pickUID; bool _enabled; + bool _hover; - virtual PointerEvent buildPointerEvent(const QUuid& uid, const QVariantMap& pickResult) const = 0; + virtual PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const = 0; private: PickedObject _prevHoveredObject; Buttons _prevButtons; std::unordered_map _triggeredObjects; + + PointerEvent::Button chooseButton(const std::string& button); + }; #endif // hifi_Pick_h diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index a475ba4d83..2d41543b6b 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -79,7 +79,7 @@ void PointerManager::update() { } } -void PointerManager::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const { +void PointerManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { auto pointer = find(uid); if (pointer) { pointer->setPrecisionPicking(precisionPicking); @@ -100,14 +100,14 @@ void PointerManager::setIncludeItems(const QUuid& uid, const QVector& inc } } -void PointerManager::setLength(const QUuid& uid, const float length) const { +void PointerManager::setLength(const QUuid& uid, float length) const { auto pointer = find(uid); if (pointer) { pointer->setLength(length); } } -void PointerManager::setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const { +void PointerManager::setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { auto pointer = find(uid); if (pointer) { pointer->setLockEndUUID(objectID, isOverlay); diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 6e13c09851..9f477d9eb2 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -31,12 +31,12 @@ public: void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; const QVariantMap getPrevPickResult(const QUuid& uid) const; - void setPrecisionPicking(const QUuid& uid, const bool precisionPicking) const; + void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; void setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const; void setIncludeItems(const QUuid& uid, const QVector& includeEntities) const; - void setLength(const QUuid& uid, const float length) const; - void setLockEndUUID(const QUuid& uid, const QUuid& objectID, const bool isOverlay) const; + void setLength(const QUuid& uid, float length) const; + void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const; void update(); From 3a2780bdf689af2540fc01e0dc756512a967b0d6 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Mon, 30 Oct 2017 10:42:26 -0700 Subject: [PATCH 047/187] Enable gain slider in PAL menu to control Avatar MASTER Gain --- interface/resources/qml/hifi/NameCard.qml | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml index fcfff02b72..0adcde3ad9 100644 --- a/interface/resources/qml/hifi/NameCard.qml +++ b/interface/resources/qml/hifi/NameCard.qml @@ -441,7 +441,7 @@ Item { Rectangle { id: nameCardVUMeter // Size - width: isMyCard ? myDisplayName.width - 20 : ((gainSlider.value - gainSlider.minimumValue)/(gainSlider.maximumValue - gainSlider.minimumValue)) * (gainSlider.width); + width: ((gainSlider.value - gainSlider.minimumValue)/(gainSlider.maximumValue - gainSlider.minimumValue)) * (gainSlider.width); height: 8 // Anchors anchors.bottom: isMyCard ? avatarImage.bottom : parent.bottom; @@ -525,16 +525,14 @@ Item { anchors.verticalCenter: nameCardVUMeter.verticalCenter; anchors.left: nameCardVUMeter.left; // Properties - visible: !isMyCard && selected && pal.activeTab == "nearbyTab" && isPresent; + visible: (isMyCard || (selected && pal.activeTab == "nearbyTab")) && isPresent; value: Users.getAvatarGain(uuid) minimumValue: -60.0 maximumValue: 20.0 stepSize: 5 updateValueWhileDragging: true onValueChanged: { - if (uuid !== "") { - updateGainFromQML(uuid, value, false); - } + updateGainFromQML(uuid, value, false); } onPressedChanged: { if (!pressed) { @@ -574,7 +572,19 @@ Item { implicitHeight: 16 } } - } + RalewayRegular { + // The slider for my card is special, it controls the master gain + id: gainSliderText; + visible: isMyCard; + text: "master gain"; + size: hifi.fontSizes.tabularData; + anchors.left: parent.right; + anchors.leftMargin: 8; + color: hifi.colors.baseGrayHighlight; + horizontalAlignment: Text.AlignLeft; + verticalAlignment: Text.AlignTop; + } + } function updateGainFromQML(avatarUuid, sliderValue, isReleased) { Users.setAvatarGain(avatarUuid, sliderValue); From d9c6f17e42b3dc4d23e0bbf81594665f68b8a83d Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 30 Oct 2017 20:06:17 +0100 Subject: [PATCH 048/187] Coding standards --- interface/src/Application.cpp | 2 +- ...ggestionsengine.cpp => WebBrowserSuggestionsEngine.cpp} | 7 ++++--- ...ersuggestionsengine.h => WebBrowserSuggestionsEngine.h} | 0 3 files changed, 5 insertions(+), 4 deletions(-) rename interface/src/webbrowser/{webbrowsersuggestionsengine.cpp => WebBrowserSuggestionsEngine.cpp} (92%) rename interface/src/webbrowser/{webbrowsersuggestionsengine.h => WebBrowserSuggestionsEngine.h} (100%) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bf2754917b..ab1884f67a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -203,7 +203,7 @@ #include "commerce/Wallet.h" #include "commerce/QmlCommerce.h" -#include "webbrowser/webbrowsersuggestionsengine.h" +#include "webbrowser/WebBrowserSuggestionsEngine.h" // On Windows PC, NVidia Optimus laptop, we want to enable NVIDIA GPU // FIXME seems to be broken. diff --git a/interface/src/webbrowser/webbrowsersuggestionsengine.cpp b/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp similarity index 92% rename from interface/src/webbrowser/webbrowsersuggestionsengine.cpp rename to interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp index 546d9c68b0..40af21753b 100644 --- a/interface/src/webbrowser/webbrowsersuggestionsengine.cpp +++ b/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include "webbrowsersuggestionsengine.h" +#include "WebBrowserSuggestionsEngine.h" #include "qregexp.h" #include @@ -26,6 +26,7 @@ #include const QString GoogleSuggestionsUrl = "https://suggestqueries.google.com/complete/search?output=firefox&q=%1"; +const int SUGGESTIONS_LIST_INDEX = 2; WebBrowserSuggestionsEngine::WebBrowserSuggestionsEngine(QObject* parent) : QObject(parent) @@ -72,12 +73,12 @@ void WebBrowserSuggestionsEngine::suggestionsFinished(QNetworkReply *reply) { const QVariantList list = res.toList(); - if (list.size() < 2) { + if (list.size() <= SUGGESTIONS_LIST_INDEX) { return; } QStringList out; - const QVariantList& suggList = list.at(1).toList(); + const QVariantList& suggList = list.at(SUGGESTIONS_LIST_INDEX).toList(); foreach (const QVariant &v, suggList) { out.append(v.toString()); diff --git a/interface/src/webbrowser/webbrowsersuggestionsengine.h b/interface/src/webbrowser/WebBrowserSuggestionsEngine.h similarity index 100% rename from interface/src/webbrowser/webbrowsersuggestionsengine.h rename to interface/src/webbrowser/WebBrowserSuggestionsEngine.h From 7b57fe1a5da214b6b621b17fc5b49d3128f96b04 Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 30 Oct 2017 20:21:34 +0100 Subject: [PATCH 049/187] type fixed --- interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp b/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp index 40af21753b..a21badb0a8 100644 --- a/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp +++ b/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp @@ -25,8 +25,8 @@ #include -const QString GoogleSuggestionsUrl = "https://suggestqueries.google.com/complete/search?output=firefox&q=%1"; -const int SUGGESTIONS_LIST_INDEX = 2; +static const QString GoogleSuggestionsUrl = "https://suggestqueries.google.com/complete/search?output=firefox&q=%1"; +static const int SUGGESTIONS_LIST_INDEX = 1; WebBrowserSuggestionsEngine::WebBrowserSuggestionsEngine(QObject* parent) : QObject(parent) From ea55b5407ea66541f435e193d7a8c4d4ec524b7b Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 30 Oct 2017 20:22:47 +0100 Subject: [PATCH 050/187] bracket fix --- interface/src/webbrowser/WebBrowserSuggestionsEngine.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/src/webbrowser/WebBrowserSuggestionsEngine.h b/interface/src/webbrowser/WebBrowserSuggestionsEngine.h index fa0f7f8e2e..0a94ea75c4 100644 --- a/interface/src/webbrowser/WebBrowserSuggestionsEngine.h +++ b/interface/src/webbrowser/WebBrowserSuggestionsEngine.h @@ -21,8 +21,7 @@ class QNetworkReply; -class WebBrowserSuggestionsEngine : public QObject -{ +class WebBrowserSuggestionsEngine : public QObject { Q_OBJECT public: From aa9ae6c8381829f598d8b8231d286fa756022564 Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 30 Oct 2017 20:29:44 +0100 Subject: [PATCH 051/187] License header fix --- .../WebBrowserSuggestionsEngine.cpp | 4 ++-- .../webbrowser/WebBrowserSuggestionsEngine.h | 21 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp b/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp index a21badb0a8..4e7b135cdf 100644 --- a/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp +++ b/interface/src/webbrowser/WebBrowserSuggestionsEngine.cpp @@ -1,8 +1,8 @@ // -// webbrowsersuggestionsengine.cpp +// WebBrowserSuggestionsEngine.cpp // interface/src/webbrowser // -// Created by Vlad Stelmahovsky Kapolka on 30/10/17. +// Created by Vlad Stelmahovsky on 30/10/17. // Copyright 2017 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. diff --git a/interface/src/webbrowser/WebBrowserSuggestionsEngine.h b/interface/src/webbrowser/WebBrowserSuggestionsEngine.h index 0a94ea75c4..976631f109 100644 --- a/interface/src/webbrowser/WebBrowserSuggestionsEngine.h +++ b/interface/src/webbrowser/WebBrowserSuggestionsEngine.h @@ -1,19 +1,20 @@ +// +// WebBrowserSuggestionsEngine.h +// interface/src/webbrowser +// +// Created by Vlad Stelmahovsky on 30/10/17. +// 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 +// + #ifndef WEBBROWSERSUGGESTIONSENGINE_H #define WEBBROWSERSUGGESTIONSENGINE_H #include #include #include -// -// webbrowsersuggestionsengine.h -// interface/src/webbrowser -// -// Created by Vlad Stelmahovsky Kapolka on 30/10/17. -// 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 -// #include #include From 76eb4c656ee8a51a4812faa1a5eb45a1b62464f1 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 30 Oct 2017 16:34:02 -0700 Subject: [PATCH 052/187] fix multi-touch and keyboard on web entities --- interface/src/raypick/LaserPointer.cpp | 5 +- interface/src/ui/overlays/Web3DOverlay.cpp | 32 ++-- .../src/RenderableWebEntityItem.cpp | 140 +++++++++++------- .../src/RenderableWebEntityItem.h | 7 +- libraries/pointers/src/pointers/Pointer.cpp | 3 +- 5 files changed, 104 insertions(+), 83 deletions(-) diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 92a404e765..83e3757514 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -285,13 +285,12 @@ PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const Q uint32_t id = 0; glm::vec3 intersection = vec3FromVariant(pickResult["intersection"]); glm::vec3 surfaceNormal = vec3FromVariant(pickResult["surfaceNormal"]); - glm::vec3 direction = -surfaceNormal; + QVariantMap searchRay = pickResult["searchRay"].toMap(); + glm::vec3 direction = vec3FromVariant(searchRay["direction"]); QUuid pickedID = pickResult["objectID"].toUuid(); glm::vec2 pos2D; if (pickedID != target.objectID) { - QVariantMap searchRay = pickResult["searchRay"].toMap(); glm::vec3 origin = vec3FromVariant(searchRay["origin"]); - glm::vec3 direction = vec3FromVariant(searchRay["direction"]); if (target.type == ENTITY) { intersection = intersectRayWithEntityXYPlane(target.objectID, origin, direction); } else if (target.type == OVERLAY) { diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 0c75803d35..e32246b666 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -66,7 +66,7 @@ const QString Web3DOverlay::QML = "Web3DOverlay.qml"; Web3DOverlay::Web3DOverlay() : _dpi(DPI) { _touchDevice.setCapabilities(QTouchDevice::Position); _touchDevice.setType(QTouchDevice::TouchScreen); - _touchDevice.setName("RenderableWebEntityItemTouchDevice"); + _touchDevice.setName("Web3DOverlayTouchDevice"); _touchDevice.setMaximumTouchPoints(4); _geometryId = DependencyManager::get()->allocateID(); @@ -332,6 +332,12 @@ void Web3DOverlay::setProxyWindow(QWindow* proxyWindow) { } void Web3DOverlay::handlePointerEvent(const PointerEvent& event) { + if (event.getType() == PointerEvent::Press) { + _pressed = true; + } else if (event.getType() == PointerEvent::Release) { + _pressed = false; + } + if (_inputMode == Touch) { handlePointerEventAsTouch(event); } else { @@ -344,19 +350,8 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { return; } - //do not send secondary button events to tablet - if (event.getButton() == PointerEvent::SecondaryButton || - //do not block composed events - event.getButtons() == PointerEvent::SecondaryButton) { - return; - } - - - QPointF windowPoint; - { - glm::vec2 windowPos = event.getPos2D() * (METERS_TO_INCHES * _dpi); - windowPoint = QPointF(windowPos.x, windowPos.y); - } + glm::vec2 windowPos = event.getPos2D() * (METERS_TO_INCHES * _dpi); + QPointF windowPoint(windowPos.x, windowPos.y); Qt::TouchPointState state = Qt::TouchPointStationary; if (event.getType() == PointerEvent::Press && event.getButton() == PointerEvent::PrimaryButton) { @@ -395,14 +390,13 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { } touchEvent.setWindow(_webSurface->getWindow()); + touchEvent.setDevice(&_touchDevice); touchEvent.setTarget(_webSurface->getRootItem()); touchEvent.setTouchPoints(touchPoints); touchEvent.setTouchPointStates(touchPointStates); } // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. - // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). - // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". // // In Qt 5.9 mouse events must be sent before touch events to make sure some QtQuick components will // receive mouse events @@ -449,12 +443,6 @@ void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) { glm::vec2 windowPos = event.getPos2D() * (METERS_TO_INCHES * _dpi); QPointF windowPoint(windowPos.x, windowPos.y); - if (event.getType() == PointerEvent::Press) { - this->_pressed = true; - } else if (event.getType() == PointerEvent::Release) { - this->_pressed = false; - } - Qt::MouseButtons buttons = Qt::NoButton; if (event.getButtons() & PointerEvent::PrimaryButton) { buttons |= Qt::LeftButton; diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index a2e574a829..ad4230c55b 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -227,6 +227,8 @@ bool WebEntityRenderer::buildWebSurface(const TypedEntityPointer& entity) { _webSurface->setMaxFps(DEFAULT_MAX_FPS); // FIXME - Keyboard HMD only: Possibly add "HMDinfo" object to context for WebView.qml. _webSurface->getSurfaceContext()->setContextProperty("desktop", QVariant()); + // Let us interact with the keyboard + _webSurface->getSurfaceContext()->setContextProperty("tabletInterface", DependencyManager::get().data()); _fadeStartTime = usecTimestampNow(); loadSourceURL(); _webSurface->resume(); @@ -315,21 +317,9 @@ void WebEntityRenderer::loadSourceURL() { void WebEntityRenderer::hoverLeaveEntity(const PointerEvent& event) { if (!_lastLocked && _webSurface && _pressed) { // If the user mouses off the entity while the button is down, simulate a touch end. - QTouchEvent::TouchPoint point; - point.setId(event.getID()); - point.setState(Qt::TouchPointReleased); - glm::vec2 windowPos = event.getPos2D() * (METERS_TO_INCHES * _lastDPI); - QPointF windowPoint(windowPos.x, windowPos.y); - point.setScenePos(windowPoint); - point.setPos(windowPoint); - QList touchPoints; - touchPoints.push_back(point); - QTouchEvent* touchEvent = new QTouchEvent(QEvent::TouchEnd, nullptr, - Qt::NoModifier, Qt::TouchPointReleased, touchPoints); - touchEvent->setWindow(_webSurface->getWindow()); - touchEvent->setDevice(&_touchDevice); - touchEvent->setTarget(_webSurface->getRootItem()); - QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); + PointerEvent endEvent(PointerEvent::Release, event.getID(), event.getPos2D(), event.getPos3D(), event.getNormal(), event.getDirection(), + event.getButton(), event.getButtons(), event.getKeyboardModifiers()); + handlePointerEvent(endEvent); } } @@ -339,57 +329,95 @@ void WebEntityRenderer::handlePointerEvent(const PointerEvent& event) { return; } + if (event.getType() == PointerEvent::Press) { + _pressed = true; + } else if (event.getType() == PointerEvent::Release) { + _pressed = false; + } + glm::vec2 windowPos = event.getPos2D() * (METERS_TO_INCHES * _lastDPI); QPointF windowPoint(windowPos.x, windowPos.y); - if (event.getType() == PointerEvent::Move) { - // Forward a mouse move event to webSurface - QMouseEvent* mouseEvent = new QMouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, Qt::NoButton, Qt::NoButton, Qt::NoModifier); - QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); + + Qt::TouchPointState state = Qt::TouchPointStationary; + if (event.getType() == PointerEvent::Press && event.getButton() == PointerEvent::PrimaryButton) { + state = Qt::TouchPointPressed; + } else if (event.getType() == PointerEvent::Release) { + state = Qt::TouchPointReleased; + } else if (_activeTouchPoints.count(event.getID()) && windowPoint != _activeTouchPoints[event.getID()].pos()) { + state = Qt::TouchPointMoved; + } + + QEvent::Type touchType = QEvent::TouchUpdate; + if (_activeTouchPoints.empty()) { + // If the first active touch point is being created, send a begin + touchType = QEvent::TouchBegin; + } if (state == Qt::TouchPointReleased && _activeTouchPoints.size() == 1 && _activeTouchPoints.count(event.getID())) { + // If the last active touch point is being released, send an end + touchType = QEvent::TouchEnd; } { - // Forward a touch update event to webSurface - if (event.getType() == PointerEvent::Press) { - this->_pressed = true; - } else if (event.getType() == PointerEvent::Release) { - this->_pressed = false; - } - - QEvent::Type type; - Qt::TouchPointState touchPointState; - switch (event.getType()) { - case PointerEvent::Press: - type = QEvent::TouchBegin; - touchPointState = Qt::TouchPointPressed; - break; - case PointerEvent::Release: - type = QEvent::TouchEnd; - touchPointState = Qt::TouchPointReleased; - break; - case PointerEvent::Move: - default: - type = QEvent::TouchUpdate; - touchPointState = Qt::TouchPointMoved; - break; - } - QTouchEvent::TouchPoint point; point.setId(event.getID()); - point.setState(touchPointState); + point.setState(state); point.setPos(windowPoint); point.setScreenPos(windowPoint); - QList touchPoints; - touchPoints.push_back(point); - - QTouchEvent* touchEvent = new QTouchEvent(type); - touchEvent->setWindow(_webSurface->getWindow()); - touchEvent->setDevice(&_touchDevice); - touchEvent->setTarget(_webSurface->getRootItem()); - touchEvent->setTouchPoints(touchPoints); - touchEvent->setTouchPointStates(touchPointState); - - QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); + _activeTouchPoints[event.getID()] = point; } + + QTouchEvent touchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); + { + QList touchPoints; + Qt::TouchPointStates touchPointStates; + for (const auto& entry : _activeTouchPoints) { + touchPointStates |= entry.second.state(); + touchPoints.push_back(entry.second); + } + + touchEvent.setWindow(_webSurface->getWindow()); + touchEvent.setDevice(&_touchDevice); + touchEvent.setTarget(_webSurface->getRootItem()); + touchEvent.setTouchPoints(touchPoints); + touchEvent.setTouchPointStates(touchPointStates); + } + + // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. + // + // In Qt 5.9 mouse events must be sent before touch events to make sure some QtQuick components will + // receive mouse events + Qt::MouseButton button = Qt::NoButton; + Qt::MouseButtons buttons = Qt::NoButton; + if (event.getButton() == PointerEvent::PrimaryButton) { + button = Qt::LeftButton; + } + if (event.getButtons() & PointerEvent::PrimaryButton) { + buttons |= Qt::LeftButton; + } + +#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) + if (event.getType() == PointerEvent::Move) { + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); + } +#endif + + if (touchType == QEvent::TouchBegin) { + _touchBeginAccepted = QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); + } else if (_touchBeginAccepted) { + QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); + } + + // If this was a release event, remove the point from the active touch points + if (state == Qt::TouchPointReleased) { + _activeTouchPoints.erase(event.getID()); + } + +#if QT_VERSION < QT_VERSION_CHECK(5, 9, 0) + if (event.getType() == PointerEvent::Move) { + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); + } +#endif } void WebEntityRenderer::setProxyWindow(QWindow* proxyWindow) { diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.h b/libraries/entities-renderer/src/RenderableWebEntityItem.h index 2d162e57fe..8adbc17a75 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.h +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.h @@ -12,6 +12,8 @@ #include #include "RenderableEntityItem.h" +#include + class OffscreenQmlSurface; class PointerEvent; @@ -58,13 +60,16 @@ private: QSharedPointer _webSurface; glm::vec3 _contextPosition; gpu::TexturePointer _texture; - bool _pressed{ false }; QString _lastSourceUrl; uint16_t _lastDPI; bool _lastLocked; QTimer _timer; uint64_t _lastRenderTime { 0 }; Transform _renderTransform; + + bool _pressed{ false }; + bool _touchBeginAccepted{ false }; + std::map _activeTouchPoints; }; } } // namespace diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index af560a45ab..8796b1e47d 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -23,10 +23,11 @@ void Pointer::enable() { } void Pointer::disable() { - DependencyManager::get()->disablePick(_pickUID); + // Disable the pointer first, then the pick, so someone can't try to use it while it's in a bad state withWriteLock([&] { _enabled = false; }); + DependencyManager::get()->disablePick(_pickUID); } const QVariantMap Pointer::getPrevPickResult() { From 8d5c95b1d6212957677d72a2cc23950a72da810a Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Mon, 30 Oct 2017 16:47:59 -0700 Subject: [PATCH 053/187] Various corrections --- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 6632b669e3..b7f717db04 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -24,9 +24,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -634,10 +634,11 @@ void OffscreenQmlSurface::forceHtmlAudioOutputDeviceUpdate() { void OffscreenQmlSurface::forceQmlAudioOutputDeviceUpdate() { if (QThread::currentThread() != qApp->thread()) { QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::QueuedConnection); - } - else { + } else { int waitForAudioQmlMs = 500; - QTimer::singleShot(waitForAudioQmlMs, this, SLOT(updateQmlAudio())); + QTimer::singleShot(waitForAudioQmlMs, this, [this] { + updateQmlAudio(); + }); } } From e5600e4f1e017bd0fa0558357261896ed7951e5b Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 30 Oct 2017 16:58:14 -0700 Subject: [PATCH 054/187] one universal controller pointer for all modules --- scripts/defaultScripts.js | 4 +- .../controllers/controllerDispatcher.js | 178 ++++++++++++++++-- .../controllerModules/farActionGrabEntity.js | 130 +------------ .../libraries/controllerDispatcherUtils.js | 19 +- 4 files changed, 186 insertions(+), 145 deletions(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 1243ed28e2..89d4c75ae4 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -32,8 +32,8 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/tablet-ui/tabletUI.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ - //"system/controllers/controllerScripts.js" - // "system/chat.js" + "system/controllers/controllerScripts.js" + //"system/chat.js" ]; // add a menu item for debugging diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 12bc16b319..e2be817ae5 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -33,6 +33,77 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); PROFILE = true; } + var SEARCH_SPHERE_SIZE = 0.0132; + var dim = {x: SEARCH_SPHERE_SIZE, y: SEARCH_SPHERE_SIZE, z: SEARCH_SPHERE_SIZE}; + var halfPath = { + type: "line3d", + color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, + visible: true, + alpha: 1, + solid: true, + glow: 1.0, + lineWidth: 5, + ignoreRayIntersection: true, // always ignore this + drawInFront: true, // Even when burried inside of something, show it. + parentID: MyAvatar.SELF_ID + }; + var halfEnd = { + type: "sphere", + dimensions: dim, + solid: true, + color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, + alpha: 0.9, + ignoreRayIntersection: true, + drawInFront: true, // Even when burried inside of something, show it. + visible: true + }; + var fullPath = { + type: "line3d", + color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, + visible: true, + alpha: 1, + solid: true, + glow: 1.0, + lineWidth: 5, + ignoreRayIntersection: true, // always ignore this + drawInFront: true, // Even when burried inside of something, show it. + parentID: MyAvatar.SELF_ID + }; + var fullEnd = { + type: "sphere", + dimensions: dim, + solid: true, + color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, + alpha: 0.9, + ignoreRayIntersection: true, + drawInFront: true, // Even when burried inside of something, show it. + visible: true + }; + var holdPath = { + type: "line3d", + color: COLORS_GRAB_DISTANCE_HOLD, + visible: true, + alpha: 1, + solid: true, + glow: 1.0, + lineWidth: 5, + ignoreRayIntersection: true, // always ignore this + drawInFront: true, // Even when burried inside of something, show it. + parentID: MyAvatar.SELF_ID + }; + + var renderStates = [ + {name: "half", path: halfPath, end: halfEnd}, + {name: "full", path: fullPath, end: fullEnd}, + {name: "hold", path: holdPath} + ]; + + var defaultRenderStates = [ + {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, + {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, + {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} + ]; + function ControllerDispatcher() { var _this = this; this.lastInterval = Date.now(); @@ -57,6 +128,9 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); mouse: false }; + this.laserVisibleStatus = [false, false]; + this.laserLockStatus = [false, false]; + this.slotsAreAvailableForPlugin = function (plugin) { for (var i = 0; i < plugin.parameters.activitySlots.length; i++) { if (_this.activitySlots[plugin.parameters.activitySlots[i]]) { @@ -72,6 +146,39 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } }; + this.enableLaserForPlugin = function(plugin) { + var handLaser = plugin.parameters.handLaser; + if (handLaser !== undefined) { + _this.laserVisibleStatus[handLaser] = true; + } + }; + + this.disableLaserForPlugin = function(plugin) { + var handLaser = plugin.parameters.handLaser; + if (handLaser !== undefined) { + _this.laserVisibleStatus[handLaser] = false; + _this.laserLockStatus[handLaser] = false; + } + }; + + this.lockLaserToTarget = function(laserLockInfo, plugin) { + if (laserLockInfo !== undefined) { + var hand = laserLockInfo.hand; + if (_this.laserVisibleStatus[laserLockInfo.hand]) { + var pointer = (hand === RIGHT_HAND) ? _this.rightControllerPointer : _this.leftControllerPointer; + var targetID = laserLockInfo.targetID; + var targetIsOverlay = laserLockInfo.isOverlay; + Pointers.setLockEndUUID(pointer, targetID, targetIsOverlay); + _this.laserLockStatus[hand] = targetID; + } + } else { + var handLaser = plugin.parameters.handLaser; + if (handLaser !== undefined) { + _this.laserLockStatus[handLaser] = false; + } + } + }; + this.unmarkSlotsForPluginName = function (runningPluginName) { // this is used to free activity-slots when a plugin is deactivated while it's running. for (var activitySlot in _this.activitySlots) { @@ -108,7 +215,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); _this.rightSecondaryValue = value; }; - this.dataGatherers = {}; this.dataGatherers.leftControllerLocation = function () { return getControllerWorldLocation(Controller.Standard.LeftHand, true); @@ -148,6 +254,37 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } }; + this.updateRenderStateForVisibleLasers = function() { + // update left hand laser + if (_this.laserVisibleStatus[LEFT_HAND]) { + var laserLocked = _this.laserLockStatus[LEFT_HAND]; + _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, laserLocked); + } else { + Pointers.setRenderState(_this.leftControllerPointer, ""); + } + + //update right hand laser + if (_this.laserVisibleStatus[RIGHT_HAND]) { + var laserLocked = _this.laserLockStatus[RIGHT_HAND]; + _this.updateLaserRenderState(_this.rightControllerPointer, _this.rightTriggerClicked, laserLocked); + } else { + Pointers.setRenderState(_this.rightControllerPointer, ""); + } + }; + + this.updateLaserRenderState = function(laser, triggerClicked, laserLocked) { + var mode = "hold"; + if (!laserLocked) { + if (triggerClicked) { + mode = "full"; + } else { + mode = "half"; + } + } + + Pointers.setRenderState(laser, mode); + }; + this.update = function () { if (PROFILE) { Script.beginProfileRange("dispatch.pre"); @@ -234,8 +371,8 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); // raypick for each controller var rayPicks = [ - RayPick.getPrevRayPickResult(_this.leftControllerRayPick), - RayPick.getPrevRayPickResult(_this.rightControllerRayPick) + Pointers.getPrevPickResult(_this.leftControllerPointer), + Pointers.getPrevPickResult(_this.rightControllerPointer) ]; var hudRayPicks = [ RayPick.getPrevRayPickResult(_this.leftControllerHudRayPick), @@ -319,6 +456,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); // activity-slots which this plugin consumes as "in use" _this.runningPluginNames[orderedPluginName] = true; _this.markSlots(candidatePlugin, orderedPluginName); + _this.enableLaserForPlugin(candidatePlugin); if (DEBUG) { print("controllerDispatcher running " + orderedPluginName); } @@ -354,16 +492,19 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); // of running plugins and mark its activity-slots as "not in use" delete _this.runningPluginNames[runningPluginName]; _this.markSlots(plugin, false); + _this.disableLaserForPlugin(plugin); if (DEBUG) { print("controllerDispatcher stopping " + runningPluginName); } } + _this.lockLaserToTarget(runningness.laserLockInfo, plugin); if (PROFILE) { Script.endProfileRange("dispatch.run." + runningPluginName); } } } } + _this.updateRenderStateForVisibleLasers(); if (PROFILE) { Script.endProfileRange("dispatch.run"); } @@ -388,12 +529,13 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Controller.enableMapping(MAPPING_NAME); - this.leftControllerRayPick = RayPick.createRayPick({ - joint: "_CONTROLLER_LEFTHAND", - filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, - enabled: true, - maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, - posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true) + this.leftControllerPointer = Pointers.createPointer(PickType.Ray, { + joint: "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", + filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES, + renderStates: renderStates, + defaultRenderStates: defaultRenderStates, + triggers: [{action: Controller.Standard.RTClick, button: "Focus"}, {action: Controller.Standard.RTClick, button: "Primary"}], + hover: true }); this.leftControllerHudRayPick = RayPick.createRayPick({ joint: "_CONTROLLER_LEFTHAND", @@ -402,12 +544,13 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true) }); - this.rightControllerRayPick = RayPick.createRayPick({ - joint: "_CONTROLLER_RIGHTHAND", - filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, - enabled: true, - maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, - posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true) + this.rightControllerPointer = Pointers.createPointer(PickType.Ray, { + joint: "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND", + filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES, + renderStates: renderStates, + defaultRenderStates: defaultRenderStates, + triggers: [{action: Controller.Standard.RTClick, button: "Focus"}, {action: Controller.Standard.RTClick, button: "Primary"}], + hover: true }); this.rightControllerHudRayPick = RayPick.createRayPick({ joint: "_CONTROLLER_RIGHTHAND", @@ -422,6 +565,11 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); enabled: true }); + Pointers.setRenderState(this.leftControllerPointer, ""); + Pointers.setRenderState(this.rightControllerPointer, ""); + Pointers.enablePointer(this.leftControllerPointer); + Pointers.enablePointer(this.rightControllerPointer); + this.handleHandMessage = function(channel, message, sender) { var data; if (sender === MyAvatar.sessionUUID) { diff --git a/scripts/system/controllers/controllerModules/farActionGrabEntity.js b/scripts/system/controllers/controllerModules/farActionGrabEntity.js index de5bdf701b..f67f4de814 100644 --- a/scripts/system/controllers/controllerModules/farActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/farActionGrabEntity.js @@ -22,78 +22,6 @@ Script.include("/~/system/libraries/controllers.js"); (function() { var PICK_WITH_HAND_RAY = true; - - var SEARCH_SPHERE_SIZE = 0.0132; - var dim = {x: SEARCH_SPHERE_SIZE, y: SEARCH_SPHERE_SIZE, z: SEARCH_SPHERE_SIZE}; - var halfPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var halfEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var fullPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var fullEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var holdPath = { - type: "line3d", - color: COLORS_GRAB_DISTANCE_HOLD, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - - var renderStates = [ - {name: "half", path: halfPath, end: halfEnd}, - {name: "full", path: fullPath, end: fullEnd}, - {name: "hold", path: holdPath} - ]; - - var defaultRenderStates = [ - {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, - {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, - {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} - ]; - var GRABBABLE_PROPERTIES = [ "position", "registrationPoint", @@ -137,37 +65,8 @@ Script.include("/~/system/libraries/controllers.js"); 550, this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], [], - 100); - - this.updateLaserPointer = function(controllerData) { - var mode = "hold"; - if (!this.distanceHolding && !this.distanceRotating) { - if (controllerData.triggerClicks[this.hand]) { - mode = "full"; - } else { - mode = "half"; - } - } - - var laserPointerID = PICK_WITH_HAND_RAY ? this.laserPointer : this.headLaserPointer; - if (mode === "full") { - this.contextOverlayTimer = false; - this.destroyContextOverlay(); - } - - LaserPointers.enableLaserPointer(laserPointerID); - LaserPointers.setRenderState(laserPointerID, mode); - if (this.distanceHolding || this.distanceRotating) { - LaserPointers.setLockEndUUID(laserPointerID, this.grabbedThingID, this.grabbedIsOverlay); - } else { - LaserPointers.setLockEndUUID(laserPointerID, null, false); - } - }; - - this.laserPointerOff = function() { - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.disableLaserPointer(this.headLaserPointer); - }; + 100, + this.hand); this.handToController = function() { @@ -307,9 +206,6 @@ Script.include("/~/system/libraries/controllers.js"); // XXX // this.maybeScale(grabbedProperties); - // visualizations - this.updateLaserPointer(controllerData); - var distanceToObject = Vec3.length(Vec3.subtract(MyAvatar.position, this.currentObjectPosition)); this.linearTimeScale = (this.linearTimeScale / 2); @@ -445,11 +341,9 @@ Script.include("/~/system/libraries/controllers.js"); if (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE || this.notPointingAtEntity(controllerData)) { this.endNearGrabAction(); - this.laserPointerOff(); return makeRunningValues(false, [], []); } this.intersectionDistance = controllerData.rayPicks[this.hand].distance; - this.updateLaserPointer(controllerData); var otherModuleName =this.hand === RIGHT_HAND ? "LeftFarActionGrabEntity" : "RightFarActionGrabEntity"; var otherFarGrabModule = getEnabledModuleByName(otherModuleName); @@ -475,7 +369,6 @@ Script.include("/~/system/libraries/controllers.js"); // stop the far-grab so the near-grab or equip can take over. for (var k = 0; k < nearGrabReadiness.length; k++) { if (nearGrabReadiness[k].active && nearGrabReadiness[k].targets[0] === this.grabbedThingID) { - this.laserPointerOff(); this.endNearGrabAction(); return makeRunningValues(false, [], []); } @@ -563,29 +456,18 @@ Script.include("/~/system/libraries/controllers.js"); var disableModule = getEnabledModuleByName(moduleName); if (disableModule) { if (disableModule.disableModules) { - this.laserPointerOff(); this.endNearGrabAction(); return makeRunningValues(false, [], []); } } - return makeRunningValues(true, [], []); + var grabbedThing = (this.distanceHolding || this.distanceRotating) ? this.grabbedThingID : null; + var grabbedIsOverlay = (this.distanceHolding || this.distanceRotating) ? this.grabbedIsOverlay : false; + var laserLockInfo = makeLaserLockInfo(grabbedThing, grabbedIsOverlay, this.hand); + return makeRunningValues(true, [], [], laserLockInfo); }; this.cleanup = function () { - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.removeLaserPointer(this.laserPointer); }; - - this.laserPointer = LaserPointers.createLaserPointer({ - joint: (this.hand === RIGHT_HAND) ? "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND" : "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", - filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, - maxDistance: PICK_MAX_DISTANCE, - posOffset: getGrabPointSphereOffset(this.handToController(), true), - renderStates: renderStates, - faceAvatar: true, - distanceScaleEnd: true, - defaultRenderStates: defaultRenderStates - }); } var leftFarActionGrabEntity = new FarActionGrabEntity(LEFT_HAND); diff --git a/scripts/system/libraries/controllerDispatcherUtils.js b/scripts/system/libraries/controllerDispatcherUtils.js index cd3f1a711f..30f2e1a8d0 100644 --- a/scripts/system/libraries/controllerDispatcherUtils.js +++ b/scripts/system/libraries/controllerDispatcherUtils.js @@ -37,6 +37,7 @@ projectOntoXYPlane:true, projectOntoEntityXYPlane:true, projectOntoOverlayXYPlane:true, + makeLaserLockInfo:true, entityHasActions:true, ensureDynamic:true, findGroupParent:true, @@ -107,20 +108,30 @@ DISPATCHER_PROPERTIES = [ // activitySlots -- indicates which "slots" must not yet be in use for this module to start // requiredDataForReady -- which "situation" parts this module looks at to decide if it will start // sleepMSBetweenRuns -- how long to wait between calls to this module's "run" method -makeDispatcherModuleParameters = function (priority, activitySlots, requiredDataForReady, sleepMSBetweenRuns) { +makeDispatcherModuleParameters = function (priority, activitySlots, requiredDataForReady, sleepMSBetweenRuns, enableLaserForHand) { return { priority: priority, activitySlots: activitySlots, requiredDataForReady: requiredDataForReady, - sleepMSBetweenRuns: sleepMSBetweenRuns + sleepMSBetweenRuns: sleepMSBetweenRuns, + handLaser: enableLaserForHand }; }; -makeRunningValues = function (active, targets, requiredDataForRun) { +makeLaserLockInfo = function(targetID, isOverlay, hand) { + return { + targetID: targetID, + isOverlay: isOverlay, + hand: hand + }; +}; + +makeRunningValues = function (active, targets, requiredDataForRun, laserLockInfo) { return { active: active, targets: targets, - requiredDataForRun: requiredDataForRun + requiredDataForRun: requiredDataForRun, + laserLockInfo: laserLockInfo }; }; From cfba6ae819cbcdb64dcbd5583dbe0334ed09e6c6 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Tue, 31 Oct 2017 11:18:03 -0700 Subject: [PATCH 055/187] Implement master avatar gain in the audio-mixer --- .../src/audio/AudioMixerClientData.cpp | 6 ++++-- .../src/audio/AudioMixerClientData.h | 5 +++++ assignment-client/src/audio/AudioMixerSlave.cpp | 15 ++++++++++----- libraries/networking/src/NodeList.cpp | 4 ++-- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index 59bc878cba..3b3d6549ee 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -191,9 +191,11 @@ void AudioMixerClientData::parsePerAvatarGainSet(ReceivedMessage& message, const float gain = unpackFloatGainFromByte(packedGain); if (avatarUuid.isNull()) { - // FIXME: change master gain, and reset hrtf gains for all active streams - qDebug() << "Setting MASTER avatar gain for [" << uuid << "] to " << gain; + // set the MASTER avatar gain + setMasterAvatarGain(gain); + qDebug() << "Setting MASTER avatar gain for " << uuid << " to " << gain; } else { + // set the per-source avatar gain hrtfForStream(avatarUuid, QUuid()).setGainAdjustment(gain); qDebug() << "Setting avatar gain adjustment for hrtf[" << uuid << "][" << avatarUuid << "] to " << gain; } diff --git a/assignment-client/src/audio/AudioMixerClientData.h b/assignment-client/src/audio/AudioMixerClientData.h index 7a8690d8cc..c3a31715ea 100644 --- a/assignment-client/src/audio/AudioMixerClientData.h +++ b/assignment-client/src/audio/AudioMixerClientData.h @@ -83,6 +83,9 @@ public: // uses randomization to have the AudioMixer send a stats packet to this node around every second bool shouldSendStats(int frameNumber); + float getMasterAvatarGain() const { return _masterAvatarGain; } + void setMasterAvatarGain(float gain) { _masterAvatarGain = gain; } + AudioLimiter audioLimiter; void setupCodec(CodecPluginPointer codec, const QString& codecName); @@ -175,6 +178,8 @@ private: int _frameToSendStats { 0 }; + float _masterAvatarGain { 1.0f }; // per-listener mixing gain, applied only to avatars + CodecPluginPointer _codec; QString _selectedCodecName; Encoder* _encoder{ nullptr }; // for outbound mixed stream diff --git a/assignment-client/src/audio/AudioMixerSlave.cpp b/assignment-client/src/audio/AudioMixerSlave.cpp index a131e266d2..86e6d21d66 100644 --- a/assignment-client/src/audio/AudioMixerSlave.cpp +++ b/assignment-client/src/audio/AudioMixerSlave.cpp @@ -48,8 +48,8 @@ void sendEnvironmentPacket(const SharedNodePointer& node, AudioMixerClientData& // mix helpers inline float approximateGain(const AvatarAudioStream& listeningNodeStream, const PositionalAudioStream& streamToAdd, const glm::vec3& relativePosition); -inline float computeGain(const AvatarAudioStream& listeningNodeStream, const PositionalAudioStream& streamToAdd, - const glm::vec3& relativePosition, bool isEcho); +inline float computeGain(AudioMixerClientData& listenerNodeData, const AvatarAudioStream& listeningNodeStream, + const PositionalAudioStream& streamToAdd, const glm::vec3& relativePosition, bool isEcho); inline float computeAzimuth(const AvatarAudioStream& listeningNodeStream, const PositionalAudioStream& streamToAdd, const glm::vec3& relativePosition); @@ -266,7 +266,7 @@ void AudioMixerSlave::addStream(AudioMixerClientData& listenerNodeData, const QU glm::vec3 relativePosition = streamToAdd.getPosition() - listeningNodeStream.getPosition(); float distance = glm::max(glm::length(relativePosition), EPSILON); - float gain = computeGain(listeningNodeStream, streamToAdd, relativePosition, isEcho); + float gain = computeGain(listenerNodeData, listeningNodeStream, streamToAdd, relativePosition, isEcho); float azimuth = isEcho ? 0.0f : computeAzimuth(listeningNodeStream, listeningNodeStream, relativePosition); const int HRTF_DATASET_INDEX = 1; @@ -484,10 +484,12 @@ float approximateGain(const AvatarAudioStream& listeningNodeStream, const Positi // when throttling, as close streams are expected to be heard by a user float distance = glm::length(relativePosition); return gain / distance; + + // avatar: skip master gain - it is constant for all streams } -float computeGain(const AvatarAudioStream& listeningNodeStream, const PositionalAudioStream& streamToAdd, - const glm::vec3& relativePosition, bool isEcho) { +float computeGain(AudioMixerClientData& listenerNodeData, const AvatarAudioStream& listeningNodeStream, + const PositionalAudioStream& streamToAdd, const glm::vec3& relativePosition, bool isEcho) { float gain = 1.0f; // injector: apply attenuation @@ -507,6 +509,9 @@ float computeGain(const AvatarAudioStream& listeningNodeStream, const Positional float offAxisCoefficient = MAX_OFF_AXIS_ATTENUATION + (angleOfDelivery * (OFF_AXIS_ATTENUATION_STEP / PI_OVER_TWO)); gain *= offAxisCoefficient; + + // apply master gain, only to avatars + gain *= listenerNodeData.getMasterAvatarGain(); } auto& audioZones = AudioMixer::getAudioZones(); diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 04699d8ad1..63ec460de8 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -990,10 +990,10 @@ void NodeList::setAvatarGain(const QUuid& nodeID, float gain) { setAvatarGainPacket->write(nodeID.toRfc4122()); // We need to convert the gain in dB (from the script) to an amplitude before packing it. - setAvatarGainPacket->writePrimitive(packFloatGainToByte(fastExp2f(gain / 6.0206f))); + setAvatarGainPacket->writePrimitive(packFloatGainToByte(fastExp2f(gain / 6.02059991f))); if (nodeID.isNull()) { - qCDebug(networking) << "Sending Set Avatar MASTER Gain packet with Gain:" << gain; + qCDebug(networking) << "Sending Set MASTER Avatar Gain packet with Gain:" << gain; } else { qCDebug(networking) << "Sending Set Avatar Gain packet with UUID: " << uuidStringWithoutCurlyBraces(nodeID) << "Gain:" << gain; } From df237eae54065b016931850a2f03ea07cdb78a71 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 31 Oct 2017 13:26:43 -0700 Subject: [PATCH 056/187] HUD events WIP, fix entity/overlay hover --- interface/src/Application.cpp | 6 ++ interface/src/raypick/LaserPointer.cpp | 2 + interface/src/ui/overlays/Overlays.cpp | 21 ++++++- interface/src/ui/overlays/Overlays.h | 1 + .../src/EntityTreeRenderer.cpp | 1 + .../pointers/src/pointers/PickManager.cpp | 1 + libraries/pointers/src/pointers/PickManager.h | 3 + libraries/pointers/src/pointers/Pointer.cpp | 26 ++++++++- .../pointers/src/pointers/PointerManager.h | 7 +++ libraries/shared/src/PointerEvent.cpp | 5 ++ libraries/shared/src/PointerEvent.h | 2 +- libraries/ui/CMakeLists.txt | 3 +- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 56 ++++++++++++++++--- libraries/ui/src/ui/OffscreenQmlSurface.h | 5 ++ 14 files changed, 125 insertions(+), 14 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0db422953f..6038ff6c9a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1811,6 +1811,12 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(&_myCamera, &Camera::modeUpdated, this, &Application::cameraModeChanged); DependencyManager::get()->setShouldPickHUDOperator([&]() { return DependencyManager::get()->isHMDMode(); }); + DependencyManager::get()->setCalculatePos2DFromHUDOperator([&](const glm::vec3& intersection) { + const glm::vec2 MARGIN(25.0f); + glm::vec2 maxPos = _controllerScriptingInterface->getViewportDimensions() - MARGIN; + glm::vec2 pos2D = DependencyManager::get()->overlayFromWorldPoint(intersection); + return glm::max(MARGIN, glm::min(pos2D, maxPos)); + }); // Setup the mouse ray pick and related operators DependencyManager::get()->setMouseRayPickID(DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared( diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 83e3757514..d2d829e579 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -301,6 +301,8 @@ PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const Q pos2D = projectOntoEntityXYPlane(target.objectID, intersection); } else if (target.type == OVERLAY) { pos2D = projectOntoOverlayXYPlane(target.objectID, intersection); + } else if (target.type == HUD) { + pos2D = DependencyManager::get()->calculatePos2DFromHUD(intersection); } return PointerEvent(PointerEvent::Move, id, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); } diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index b37a376de3..5a7b1bd76c 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -46,7 +46,7 @@ extern void initOverlay3DPipelines(render::ShapePlumber& plumber, bool depthTest Overlays::Overlays() { auto pointerManager = DependencyManager::get(); connect(pointerManager.data(), &PointerManager::hoverBeginOverlay, this, &Overlays::hoverEnterOverlay); - connect(pointerManager.data(), &PointerManager::hoverContinueOverlay, this, &Overlays::hoverOverOverlay); + connect(pointerManager.data(), &PointerManager::hoverContinueOverlay, this, &Overlays::hoverOverPointerEvent); connect(pointerManager.data(), &PointerManager::hoverEndOverlay, this, &Overlays::hoverLeavePointerEvent); connect(pointerManager.data(), &PointerManager::triggerBeginOverlay, this, &Overlays::mousePressPointerEvent); connect(pointerManager.data(), &PointerManager::triggerContinueOverlay, this, &Overlays::mouseMovePointerEvent); @@ -745,7 +745,7 @@ void Overlays::sendHoverEnterOverlay(const OverlayID& overlayID, const PointerEv } void Overlays::sendHoverOverOverlay(const OverlayID& overlayID, const PointerEvent& event) { - emit hoverOverOverlay(overlayID, event); + hoverOverPointerEvent(overlayID, event); } void Overlays::sendHoverLeaveOverlay(const OverlayID& overlayID, const PointerEvent& event) { @@ -940,6 +940,21 @@ bool Overlays::mouseDoublePressEvent(QMouseEvent* event) { return false; } +void Overlays::hoverOverPointerEvent(const OverlayID& overlayID, const PointerEvent& event) { + // TODO: generalize this to allow any overlay to recieve events + std::shared_ptr thisOverlay; + if (getOverlayType(overlayID) == "web3d") { + thisOverlay = std::static_pointer_cast(getOverlay(overlayID)); + } + if (thisOverlay) { + // Send to web overlay + QMetaObject::invokeMethod(thisOverlay.get(), "handlePointerEvent", Q_ARG(PointerEvent, event)); + } + + // emit to scripts + emit hoverOverOverlay(overlayID, event); +} + void Overlays::hoverLeavePointerEvent(const OverlayID& overlayID, const PointerEvent& event) { // TODO: generalize this to allow any overlay to recieve events std::shared_ptr thisOverlay; @@ -1005,7 +1020,7 @@ bool Overlays::mouseMoveEvent(QMouseEvent* event) { } // Hover over current overlay. - emit hoverOverOverlay(rayPickResult.overlayID, pointerEvent); + hoverOverPointerEvent(rayPickResult.overlayID, pointerEvent); _currentHoverOverOverlayID = rayPickResult.overlayID; } else { diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index 8bcfa99aba..a5ad013246 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -308,6 +308,7 @@ public slots: void mousePressPointerEvent(const OverlayID& overlayID, const PointerEvent& event); void mouseMovePointerEvent(const OverlayID& overlayID, const PointerEvent& event); void mouseReleasePointerEvent(const OverlayID& overlayID, const PointerEvent& event); + void hoverOverPointerEvent(const OverlayID& overlayID, const PointerEvent& event); void hoverLeavePointerEvent(const OverlayID& overlayID, const PointerEvent& event); signals: diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index ef056b88ac..4dc5729c03 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -83,6 +83,7 @@ EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterf connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, this, handlePointerEvent); connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseReleaseOnEntity, this, handlePointerEvent); connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseMoveOnEntity, this, handlePointerEvent); + connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverOverEntity, this, handlePointerEvent); connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, this, [&](const EntityItemID& entityID, const PointerEvent& event) { std::shared_ptr thisEntity; auto entity = getEntity(entityID); diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp index 571f9f04cd..1c5025250a 100644 --- a/libraries/pointers/src/pointers/PickManager.cpp +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -9,6 +9,7 @@ PickManager::PickManager() { setShouldPickHUDOperator([]() { return false; }); + setCalculatePos2DFromHUDOperator([](const glm::vec3& intersection) { return glm::vec2(NAN); }); } QUuid PickManager::addPick(PickQuery::PickType type, const std::shared_ptr pick) { diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index b8abb077c7..e3b1d03080 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -34,9 +34,12 @@ public: void setIncludeItems(const QUuid& uid, const QVector& include) const; void setShouldPickHUDOperator(std::function shouldPickHUDOperator) { _shouldPickHUDOperator = shouldPickHUDOperator; } + void setCalculatePos2DFromHUDOperator(std::function calculatePos2DFromHUDOperator) { _calculatePos2DFromHUDOperator = calculatePos2DFromHUDOperator; } + glm::vec2 calculatePos2DFromHUD(const glm::vec3& intersection) { return _calculatePos2DFromHUDOperator(intersection); } protected: std::function _shouldPickHUDOperator; + std::function _calculatePos2DFromHUDOperator; std::shared_ptr findPick(const QUuid& uid) const; QHash>> _picks; diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 8796b1e47d..2f92664da0 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -56,7 +56,7 @@ void Pointer::update() { } void Pointer::generatePointerEvents(const QVariantMap& pickResult) { - // TODO: avatars/HUD? + // TODO: avatars? auto pointerManager = DependencyManager::get(); // Hover events @@ -79,6 +79,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); if (_prevHoveredObject.type == ENTITY) { emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == HUD) { + emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); } } } @@ -97,6 +99,22 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); if (_prevHoveredObject.type == OVERLAY) { emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == HUD) { + emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); + } + } + } + + if (hoveredObject.type == HUD) { + if (_prevHoveredObject.type == HUD) { + // There's only one HUD + emit pointerManager->hoverContinueHUD(hoveredObject.objectID, hoveredEvent); + } else { + emit pointerManager->hoverBeginHUD(hoveredObject.objectID, hoveredEvent); + if (_prevHoveredObject.type == ENTITY) { + emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == OVERLAY) { + emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); } } } @@ -130,6 +148,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->triggerBeginEntity(hoveredObject.objectID, hoveredEvent); } else if (hoveredObject.type == OVERLAY) { emit pointerManager->triggerBeginOverlay(hoveredObject.objectID, hoveredEvent); + } else if (hoveredObject.type == HUD) { + emit pointerManager->triggerBeginHUD(hoveredObject.objectID, hoveredEvent); } _triggeredObjects[button] = hoveredObject; } @@ -143,6 +163,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->triggerContinueEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { emit pointerManager->triggerContinueOverlay(_triggeredObjects[button].objectID, triggeredEvent); + } else if (_triggeredObjects[button].type == HUD) { + emit pointerManager->triggerContinueHUD(_triggeredObjects[button].objectID, triggeredEvent); } } @@ -155,6 +177,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->triggerEndEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { emit pointerManager->triggerEndOverlay(_triggeredObjects[button].objectID, triggeredEvent); + } else if (_triggeredObjects[button].type == HUD) { + emit pointerManager->triggerEndHUD(_triggeredObjects[button].objectID, triggeredEvent); } _triggeredObjects.erase(button); } diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 9f477d9eb2..574be8320a 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -58,6 +58,13 @@ signals: void hoverBeginEntity(const QUuid& id, const PointerEvent& pointerEvent); void hoverContinueEntity(const QUuid& id, const PointerEvent& pointerEvent); void hoverEndEntity(const QUuid& id, const PointerEvent& pointerEvent); + + void triggerBeginHUD(const QUuid& id, const PointerEvent& pointerEvent); + void triggerContinueHUD(const QUuid& id, const PointerEvent& pointerEvent); + void triggerEndHUD(const QUuid& id, const PointerEvent& pointerEvent); + void hoverBeginHUD(const QUuid& id, const PointerEvent& pointerEvent); + void hoverContinueHUD(const QUuid& id, const PointerEvent& pointerEvent); + void hoverEndHUD(const QUuid& id, const PointerEvent& pointerEvent); }; #endif // hifi_pointers_PointerManager_h diff --git a/libraries/shared/src/PointerEvent.cpp b/libraries/shared/src/PointerEvent.cpp index e35832391d..183b7c332a 100644 --- a/libraries/shared/src/PointerEvent.cpp +++ b/libraries/shared/src/PointerEvent.cpp @@ -41,6 +41,11 @@ PointerEvent::PointerEvent(EventType type, uint32_t id, ; } +void PointerEvent::setButton(Button button) { + _button = button; + _buttons |= button; +} + QScriptValue PointerEvent::toScriptValue(QScriptEngine* engine, const PointerEvent& event) { QScriptValue obj = engine->newObject(); diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index 074e5ab79b..d3b72f072c 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -58,7 +58,7 @@ public: bool shouldFocus() const { return _shouldFocus; } void setType(EventType type) { _type = type; } - void setButton(Button button) { _button = button; } + void setButton(Button button); void setShouldFocus(bool focus) { _shouldFocus = focus; } private: diff --git a/libraries/ui/CMakeLists.txt b/libraries/ui/CMakeLists.txt index f28157ff97..334cce97e5 100644 --- a/libraries/ui/CMakeLists.txt +++ b/libraries/ui/CMakeLists.txt @@ -1,6 +1,7 @@ set(TARGET_NAME ui) setup_hifi_library(OpenGL Network Qml Quick Script WebChannel WebEngine WebSockets XmlPatterns) -link_hifi_libraries(shared networking gl audio) +link_hifi_libraries(shared networking gl audio pointers) +include_hifi_library_headers(controllers) # Required for some low level GL interaction in the OffscreenQMLSurface target_opengl() diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index ecd07a5874..7c3a159177 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -49,6 +49,8 @@ #include "Logging.h" +#include + Q_LOGGING_CATEGORY(trace_render_qml, "trace.render.qml") Q_LOGGING_CATEGORY(trace_render_qml_gl, "trace.render.qml.gl") Q_LOGGING_CATEGORY(offscreenFocus, "hifi.offscreen.focus") @@ -529,6 +531,13 @@ bool OffscreenQmlSurface::allowNewFrame(uint8_t fps) { } OffscreenQmlSurface::OffscreenQmlSurface() { + auto pointerManager = DependencyManager::get(); + connect(pointerManager.data(), &PointerManager::hoverBeginHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::hoverContinueHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::hoverEndHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerBeginHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerContinueHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerEndHUD, this, &OffscreenQmlSurface::handlePointerEvent); } OffscreenQmlSurface::~OffscreenQmlSurface() { @@ -932,14 +941,8 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even transformedPos, mouseEvent->screenPos(), mouseEvent->button(), mouseEvent->buttons(), mouseEvent->modifiers()); - if (event->type() == QEvent::MouseMove) { - // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install - // need to investigate into why this crash is happening. - //_qmlContext->setContextProperty("lastMousePosition", transformedPos); - } - mappedEvent.ignore(); - if (QCoreApplication::sendEvent(_quickWindow, &mappedEvent)) { - return mappedEvent.isAccepted(); + if (sendMouseEvent(mappedEvent)) { + return true; } break; } @@ -951,6 +954,43 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even return false; } +void OffscreenQmlSurface::handlePointerEvent(const QUuid& id, const PointerEvent& event) { + if (_paused) { + return; + } + + QEvent::Type type; + switch (event.getType()) { + case PointerEvent::Press: + qDebug() << event.getPos2D().x << event.getPos2D().y << event.getButton() << Qt::MouseButton(event.getButton()) << Qt::MouseButtons(event.getButtons()); + type = QEvent::Type::MouseButtonPress; + break; + case PointerEvent::DoublePress: + type = QEvent::Type::MouseButtonDblClick; + break; + case PointerEvent::Release: + type = QEvent::Type::MouseButtonRelease; + break; + case PointerEvent::Move: + type = QEvent::Type::MouseMove; + break; + } + QMouseEvent mouseEvent(type, QPointF(event.getPos2D().x, event.getPos2D().y), Qt::MouseButton(event.getButton()), Qt::MouseButtons(event.getButtons()), event.getKeyboardModifiers()); + qDebug() << sendMouseEvent(mouseEvent); +} + +bool OffscreenQmlSurface::sendMouseEvent(QMouseEvent& mouseEvent) { + if (mouseEvent.type() == QEvent::MouseMove) { + // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install + // need to investigate into why this crash is happening. + //_qmlContext->setContextProperty("lastMousePosition", mouseEvent.localPos()); + } + mouseEvent.ignore(); + if (QCoreApplication::sendEvent(_quickWindow, &mouseEvent)) { + return mouseEvent.isAccepted(); + } +} + void OffscreenQmlSurface::pause() { _paused = true; } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 12ee9e59a1..3deab07411 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -30,6 +30,8 @@ class QQmlContext; class QQmlComponent; class QQuickWindow; class QQuickItem; +class QMouseEvent; +class PointerEvent; // GPU resources are typically buffered for one copy being used by the renderer, // one copy in flight, and one copy being used by the receiver @@ -135,6 +137,7 @@ private: private slots: void updateQuick(); void onFocusObjectChanged(QObject* newFocus); + void handlePointerEvent(const QUuid& id, const PointerEvent& event); private: QQuickWindow* _quickWindow { nullptr }; @@ -161,6 +164,8 @@ private: QWindow* _proxyWindow { nullptr }; QQuickItem* _currentFocusItem { nullptr }; + + bool sendMouseEvent(QMouseEvent& mouseEvent); }; #endif From 30332c3d003683bb3c080a0d688cd2c346b3baaa Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 31 Oct 2017 14:13:42 -0700 Subject: [PATCH 057/187] removing more laserPointers --- .../controllers/controllerDispatcher.js | 8 +- .../controllerModules/farActionGrabEntity.js | 1 - .../controllerModules/farTrigger.js | 123 +----- .../controllerModules/inEditMode.js | 132 +----- .../controllerModules/overlayLaserInput.js | 307 +------------ .../controllerModules/webEntityLaserInput.js | 413 +----------------- 6 files changed, 22 insertions(+), 962 deletions(-) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index e2be817ae5..1773e013e1 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -249,8 +249,8 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); this.setIgnoreTablet = function() { if (HMD.tabletID !== this.tabletID) { this.tabletID = HMD.tabletID; - RayPick.setIgnoreItems(_this.leftControllerRayPick, _this.blacklist.concat([HMD.tabletID])); - RayPick.setIgnoreItems(_this.rightControllerRayPick, _this.blacklist.concat([HMD.tabletID])); + Pointers.setIgnoreItems(_this.leftControllerPointer, _this.blacklist.concat([HMD.tabletID])); + Pointers.setIgnoreItems(_this.rightControllerPointer, _this.blacklist.concat([HMD.tabletID])); } }; @@ -534,7 +534,8 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES, renderStates: renderStates, defaultRenderStates: defaultRenderStates, - triggers: [{action: Controller.Standard.RTClick, button: "Focus"}, {action: Controller.Standard.RTClick, button: "Primary"}], + triggers: [{action: Controller.Standard.LTClick, button: "Focus"}, {action: Controller.Standard.LTClick, button: "Primary"}], + posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true), hover: true }); this.leftControllerHudRayPick = RayPick.createRayPick({ @@ -550,6 +551,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); renderStates: renderStates, defaultRenderStates: defaultRenderStates, triggers: [{action: Controller.Standard.RTClick, button: "Focus"}, {action: Controller.Standard.RTClick, button: "Primary"}], + posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true), hover: true }); this.rightControllerHudRayPick = RayPick.createRayPick({ diff --git a/scripts/system/controllers/controllerModules/farActionGrabEntity.js b/scripts/system/controllers/controllerModules/farActionGrabEntity.js index f67f4de814..6f818b8b1e 100644 --- a/scripts/system/controllers/controllerModules/farActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/farActionGrabEntity.js @@ -380,7 +380,6 @@ Script.include("/~/system/libraries/controllers.js"); // where it could near-grab something, stop searching. for (var j = 0; j < nearGrabReadiness.length; j++) { if (nearGrabReadiness[j].active) { - this.laserPointerOff(); this.endNearGrabAction(); return makeRunningValues(false, [], []); } diff --git a/scripts/system/controllers/controllerModules/farTrigger.js b/scripts/system/controllers/controllerModules/farTrigger.js index f641b34415..4a4c83a9d2 100644 --- a/scripts/system/controllers/controllerModules/farTrigger.js +++ b/scripts/system/controllers/controllerModules/farTrigger.js @@ -16,77 +16,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Script.include("/~/system/libraries/controllers.js"); (function() { - var SEARCH_SPHERE_SIZE = 0.0132; - var dim = {x: SEARCH_SPHERE_SIZE, y: SEARCH_SPHERE_SIZE, z: SEARCH_SPHERE_SIZE}; - var halfPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var halfEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var fullPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var fullEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var holdPath = { - type: "line3d", - color: COLORS_GRAB_DISTANCE_HOLD, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - - var renderStates = [ - {name: "half", path: halfPath, end: halfEnd}, - {name: "full", path: fullPath, end: fullEnd}, - {name: "hold", path: holdPath} - ]; - - var defaultRenderStates = [ - {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, - {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, - {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} - ]; - function entityWantsNearTrigger(props) { var grabbableData = getGrabbableData(props); return grabbableData.triggerable || grabbableData.wantsTrigger; @@ -104,27 +33,8 @@ Script.include("/~/system/libraries/controllers.js"); 520, this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], [], - 100); - - this.handToController = function() { - return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; - }; - - this.updateLaserPointer = function(controllerData) { - var mode = "none"; - if (controllerData.triggerClicks[this.hand]) { - mode = "full"; - } else { - mode = "half"; - } - - LaserPointers.enableLaserPointer(this.laserPointer); - LaserPointers.setRenderState(this.laserPointer, mode); - }; - - this.laserPointerOff = function() { - LaserPointers.disableLaserPointer(this.laserPointer); - }; + 100, + this.hand); this.getTargetProps = function (controllerData) { // nearbyEntityProperties is already sorted by length from controller @@ -151,7 +61,6 @@ Script.include("/~/system/libraries/controllers.js"); this.endFarTrigger = function (controllerData) { var args = [this.hand === RIGHT_HAND ? "right" : "left", MyAvatar.sessionUUID]; Entities.callEntityMethod(this.targetEntityID, "stopFarTrigger", args); - this.laserPointerOff(); }; this.isReady = function (controllerData) { @@ -176,31 +85,9 @@ Script.include("/~/system/libraries/controllers.js"); this.endFarTrigger(controllerData); return makeRunningValues(false, [], []); } - - this.updateLaserPointer(controllerData); this.continueFarTrigger(controllerData); return makeRunningValues(true, [this.targetEntityID], []); }; - - this.laserPointer = LaserPointers.createLaserPointer({ - joint: (this.hand === RIGHT_HAND) ? "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND" : "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", - filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, - maxDistance: PICK_MAX_DISTANCE, - posOffset: getGrabPointSphereOffset(this.handToController(), true), - renderStates: renderStates, - faceAvatar: true, - distanceScaleEnd: true, - defaultRenderStates: defaultRenderStates - }); - - this.cleanup = function () { - if (this.targetEntityID) { - this.endFarTrigger(); - } - - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.removeLaserPointer(this.laserPointer); - }; } var leftFarTriggerEntity = new FarTriggerEntity(LEFT_HAND); @@ -209,11 +96,9 @@ Script.include("/~/system/libraries/controllers.js"); enableDispatcherModule("LeftFarTriggerEntity", leftFarTriggerEntity); enableDispatcherModule("RightFarTriggerEntity", rightFarTriggerEntity); - this.cleanup = function () { - leftFarTriggerEntity.cleanup(); - rightFarTriggerEntity.cleanup(); + function cleanup() { disableDispatcherModule("LeftFarTriggerEntity"); disableDispatcherModule("RightFarTriggerEntity"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index 7941ec8d4c..cfa1f0a9e3 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -18,81 +18,9 @@ Script.include("/~/system/libraries/controllers.js"); Script.include("/~/system/libraries/utils.js"); (function () { - var END_RADIUS = 0.005; - var dim = { x: END_RADIUS, y: END_RADIUS, z: END_RADIUS }; - var halfPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var halfEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var fullPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var fullEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var holdPath = { - type: "line3d", - color: COLORS_GRAB_DISTANCE_HOLD, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - - var renderStates = [ - {name: "half", path: halfPath, end: halfEnd}, - {name: "full", path: fullPath, end: fullEnd}, - {name: "hold", path: holdPath} - ]; - - var defaultRenderStates = [ - {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, - {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, - {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} - ]; - function InEditMode(hand) { this.hand = hand; this.triggerClicked = false; - this.mode = "none"; this.parameters = makeDispatcherModuleParameters( 160, @@ -113,29 +41,6 @@ Script.include("/~/system/libraries/utils.js"); return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; }; - - this.processControllerTriggers = function(controllerData) { - if (controllerData.triggerClicks[this.hand]) { - this.mode = "full"; - } else if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { - this.mode = "half"; - } else { - this.mode = "none"; - } - }; - - this.updateLaserPointer = function(controllerData) { - LaserPointers.enableLaserPointer(this.laserPointer); - LaserPointers.setRenderState(this.laserPointer, this.mode); - - if (HMD.tabletID !== this.tabletID || HMD.tabletButtonID !== this.tabletButtonID || HMD.tabletScreenID !== this.tabletScreenID) { - this.tabletID = HMD.tabletID; - this.tabletButtonID = HMD.tabletButtonID; - this.tabletScreenID = HMD.tabletScreenID; - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.tabletButtonID, HMD.tabletScreenID]); - } - }; - this.pointingAtTablet = function(objectID) { if (objectID === HMD.tabletScreenID || objectID === HMD.tabletButtonID) { return true; @@ -164,21 +69,12 @@ Script.include("/~/system/libraries/utils.js"); } }; - this.exitModule = function() { - this.disableLasers(); - return makeRunningValues(false, [], []); - }; - - this.disableLasers = function() { - LaserPointers.disableLaserPointer(this.laserPointer); - }; - this.isReady = function(controllerData) { if (isInEditMode()) { this.triggerClicked = false; return makeRunningValues(true, [], []); } - return this.exitModule(); + return makeRunningValues(false, [], []); }; this.run = function(controllerData) { @@ -216,31 +112,9 @@ Script.include("/~/system/libraries/utils.js"); return this.exitModule(); } } - - this.processControllerTriggers(controllerData); - this.updateLaserPointer(controllerData); this.sendPickData(controllerData); - - return this.isReady(controllerData); }; - - this.cleanup = function() { - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.removeLaserPointer(this.laserPointer); - }; - - this.laserPointer = LaserPointers.createLaserPointer({ - joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, - maxDistance: PICK_MAX_DISTANCE, - posOffset: getGrabPointSphereOffset(this.handToController(), true), - renderStates: renderStates, - faceAvatar: true, - defaultRenderStates: defaultRenderStates - }); - - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.tabletButtonID, HMD.tabletScreenID]); } var leftHandInEditMode = new InEditMode(LEFT_HAND); @@ -249,12 +123,12 @@ Script.include("/~/system/libraries/utils.js"); enableDispatcherModule("LeftHandInEditMode", leftHandInEditMode); enableDispatcherModule("RightHandInEditMode", rightHandInEditMode); - this.cleanup = function() { + function cleanup() { leftHandInEditMode.cleanup(); rightHandInEditMode.cleanup(); disableDispatcherModule("LeftHandInEditMode"); disableDispatcherModule("RightHandInEditMode"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/overlayLaserInput.js b/scripts/system/controllers/controllerModules/overlayLaserInput.js index 9cec64b6b6..6c9258ead7 100644 --- a/scripts/system/controllers/controllerModules/overlayLaserInput.js +++ b/scripts/system/controllers/controllerModules/overlayLaserInput.js @@ -9,268 +9,27 @@ makeRunningValues, Messages, Quat, Vec3, makeDispatcherModuleParameters, Overlays, ZERO_VEC, HMD, INCHES_TO_METERS, DEFAULT_REGISTRATION_POINT, getGrabPointSphereOffset, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE, - TRIGGER_OFF_VALUE, getEnabledModuleByName, PICK_MAX_DISTANCE, LaserPointers, RayPick, ContextOverlay + TRIGGER_OFF_VALUE, getEnabledModuleByName, PICK_MAX_DISTANCE, LaserPointers, RayPick, ContextOverlay, Picks */ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Script.include("/~/system/libraries/controllers.js"); (function() { - var TouchEventUtils = Script.require("/~/system/libraries/touchEventUtils.js"); - var END_RADIUS = 0.005; - var dim = { x: END_RADIUS, y: END_RADIUS, z: END_RADIUS }; - var halfPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var halfEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var fullPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var fullEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var holdPath = { - type: "line3d", - color: COLORS_GRAB_DISTANCE_HOLD, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - - var renderStates = [ - {name: "half", path: halfPath, end: halfEnd}, - {name: "full", path: fullPath, end: fullEnd}, - {name: "hold", path: holdPath} - ]; - - var defaultRenderStates = [ - {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, - {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, - {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} - ]; - - - // triggered when stylus presses a web overlay/entity - var HAPTIC_STYLUS_STRENGTH = 1.0; - var HAPTIC_STYLUS_DURATION = 20.0; - - function distance2D(a, b) { - var dx = (a.x - b.x); - var dy = (a.y - b.y); - return Math.sqrt(dx * dx + dy * dy); - } - function OverlayLaserInput(hand) { this.hand = hand; - this.active = false; - this.previousLaserClickedTarget = false; - this.laserPressingTarget = false; - this.mode = "none"; - this.laserTarget = null; - this.pressEnterLaserTarget = null; - this.parameters = makeDispatcherModuleParameters( 120, this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], [], - 100); - - this.getOtherHandController = function() { - return (this.hand === RIGHT_HAND) ? Controller.Standard.LeftHand : Controller.Standard.RightHand; - }; - - this.getOtherModule = function() { - return (this.hand === RIGHT_HAND) ? leftOverlayLaserInput : rightOverlayLaserInput; - }; - - this.handToController = function() { - return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; - }; - - this.hasTouchFocus = function(laserTarget) { - return (laserTarget.overlayID === this.hoverOverlay); - }; - - this.requestTouchFocus = function(laserTarget) { - if (laserTarget.overlayID && - laserTarget.overlayID !== this.hoverOverlay) { - this.hoverOverlay = laserTarget.overlayID; - TouchEventUtils.sendHoverEnterEventToTouchTarget(this.hand, laserTarget); - } - }; - - this.relinquishTouchFocus = function() { - // send hover leave event. - if (this.hoverOverlay) { - var pointerEvent = { type: "Move", id: this.hand + 1 }; - Overlays.sendMouseMoveOnOverlay(this.hoverOverlay, pointerEvent); - Overlays.sendHoverOverOverlay(this.hoverOverlay, pointerEvent); - Overlays.sendHoverLeaveOverlay(this.hoverOverlay, pointerEvent); - this.hoverOverlay = null; - } - }; - - this.relinquishStylusTargetTouchFocus = function(laserTarget) { - var stylusModuleNames = ["LeftTabletStylusInput", "RightTabletStylusError"]; - for (var i = 0; i < stylusModuleNames.length; i++) { - var stylusModule = getEnabledModuleByName(stylusModuleNames[i]); - if (stylusModule) { - if (stylusModule.hoverOverlay === laserTarget.overlayID) { - stylusModule.relinquishTouchFocus(); - } - } - } - }; - - this.stealTouchFocus = function(laserTarget) { - if (laserTarget.overlayID === this.getOtherModule().hoverOverlay) { - this.getOtherModule().relinquishTouchFocus(); - } - - // If the focus target we want to request is the same of one of the stylus - // tell the stylus to relinquish it focus on our target - this.relinquishStylusTargetTouchFocus(laserTarget); - - this.requestTouchFocus(laserTarget); - }; - - this.updateLaserPointer = function(controllerData) { - LaserPointers.enableLaserPointer(this.laserPointer); - LaserPointers.setRenderState(this.laserPointer, this.mode); - - if (HMD.tabletID !== this.tabletID) { - this.tabletID = HMD.tabletID; - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID]); - } - }; - - this.processControllerTriggers = function(controllerData) { - if (controllerData.triggerClicks[this.hand]) { - this.mode = "full"; - } else if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { - this.mode = "half"; - } else { - this.mode = "none"; - } - }; - - this.laserPressEnter = function () { - this.stealTouchFocus(this.laserTarget); - TouchEventUtils.sendTouchStartEventToTouchTarget(this.hand, this.laserTarget); - Controller.triggerHapticPulse(HAPTIC_STYLUS_STRENGTH, HAPTIC_STYLUS_DURATION, this.hand); - - this.touchingEnterTimer = 0; - this.pressEnterLaserTarget = this.laserTarget; - this.deadspotExpired = false; - - var LASER_PRESS_TO_MOVE_DEADSPOT = 0.094; - this.deadspotRadius = Math.tan(LASER_PRESS_TO_MOVE_DEADSPOT) * this.laserTarget.distance; - }; - - this.laserPressExit = function () { - if (this.laserTarget === null) { - return; - } - - // special case to handle home button. - if (this.laserTarget.overlayID === HMD.homeButtonID) { - Messages.sendLocalMessage("home", this.laserTarget.overlayID); - } - - // send press event - if (this.deadspotExpired) { - TouchEventUtils.sendTouchEndEventToTouchTarget(this.hand, this.laserTarget); - } else { - TouchEventUtils.sendTouchEndEventToTouchTarget(this.hand, this.pressEnterLaserTarget); - } - }; - - this.laserPressing = function (controllerData, dt) { - this.touchingEnterTimer += dt; - - if (this.laserTarget) { - if (controllerData.triggerClicks[this.hand]) { - var POINTER_PRESS_TO_MOVE_DELAY = 0.33; // seconds - if (this.deadspotExpired || this.touchingEnterTimer > POINTER_PRESS_TO_MOVE_DELAY || - distance2D(this.laserTarget.position2D, - this.pressEnterLaserTarget.position2D) > this.deadspotRadius) { - TouchEventUtils.sendTouchMoveEventToTouchTarget(this.hand, this.laserTarget); - this.deadspotExpired = true; - } - } else { - this.laserPressingTarget = false; - } - } else { - this.laserPressingTarget = false; - } - }; + 100, + this.hand); this.processLaser = function(controllerData) { - if (this.shouldExit(controllerData) || this.getOtherModule().active) { - this.exitModule(); + if (this.shouldExit(controllerData)) { return false; } - var intersection = controllerData.rayPicks[this.hand]; - var laserTarget = TouchEventUtils.composeTouchTargetFromIntersection(intersection); - - if (controllerData.triggerClicks[this.hand]) { - this.laserTarget = laserTarget; - this.laserPressingTarget = true; - } else { - this.requestTouchFocus(laserTarget); - - if (!TouchEventUtils.touchTargetHasKeyboardFocus(laserTarget)) { - TouchEventUtils.setKeyboardFocusOnTouchTarget(laserTarget); - } - - if (this.hasTouchFocus(laserTarget) && !this.laserPressingTarget) { - TouchEventUtils.sendHoverOverEventToTouchTarget(this.hand, laserTarget); - } - } - - this.processControllerTriggers(controllerData); - this.updateLaserPointer(controllerData); - this.active = true; return true; }; @@ -303,23 +62,6 @@ Script.include("/~/system/libraries/controllers.js"); return offOverlay || grabbingOverlay || triggerOff; }; - this.exitModule = function() { - if (this.laserPressingTarget) { - this.deadspotExpired = true; - this.laserPressExit(); - this.laserPressingTarget = false; - } - this.relinquishTouchFocus(); - this.reset(); - this.updateLaserPointer(); - LaserPointers.disableLaserPointer(this.laserPointer); - }; - - this.reset = function() { - this.mode = "none"; - this.active = false; - }; - this.deleteContextOverlay = function() { var farGrabModule = getEnabledModuleByName(this.hand === RIGHT_HAND ? "RightFarActionGrabEntity" : "LeftFarActionGrabEntity"); if (farGrabModule) { @@ -340,41 +82,8 @@ Script.include("/~/system/libraries/controllers.js"); }; this.run = function (controllerData, deltaTime) { - if (!this.previousLaserClickedTarget && this.laserPressingTarget) { - this.laserPressEnter(); - } - if (this.previousLaserClickedTarget && !this.laserPressingTarget) { - this.laserPressExit(); - } - this.previousLaserClickedTarget = this.laserPressingTarget; - - if (this.laserPressingTarget) { - this.laserPressing(controllerData, deltaTime); - } - - if (this.processLaser(controllerData)) { - return makeRunningValues(true, [], []); - } else { - return makeRunningValues(false, [], []); - } + return this.isReady(controllerData); }; - - this.cleanup = function () { - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.removeLaserPointer(this.laserPointer); - }; - - this.laserPointer = LaserPointers.createLaserPointer({ - joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: Picks.PICK_OVERLAYS, - maxDistance: PICK_MAX_DISTANCE, - posOffset: getGrabPointSphereOffset(this.handToController(), true), - renderStates: renderStates, - faceAvatar: true, - defaultRenderStates: defaultRenderStates - }); - - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID]); } var leftOverlayLaserInput = new OverlayLaserInput(LEFT_HAND); @@ -383,11 +92,9 @@ Script.include("/~/system/libraries/controllers.js"); enableDispatcherModule("LeftOverlayLaserInput", leftOverlayLaserInput); enableDispatcherModule("RightOverlayLaserInput", rightOverlayLaserInput); - this.cleanup = function () { - leftOverlayLaserInput.cleanup(); - rightOverlayLaserInput.cleanup(); + function cleanup() { disableDispatcherModule("LeftOverlayLaserInput"); disableDispatcherModule("RightOverlayLaserInput"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/webEntityLaserInput.js b/scripts/system/controllers/controllerModules/webEntityLaserInput.js index 0ade79f46e..1bd683856e 100644 --- a/scripts/system/controllers/controllerModules/webEntityLaserInput.js +++ b/scripts/system/controllers/controllerModules/webEntityLaserInput.js @@ -10,370 +10,21 @@ /* global Script, Controller, LaserPointers, RayPick, RIGHT_HAND, LEFT_HAND, Vec3, Quat, getGrabPointSphereOffset, makeRunningValues, Entities, enableDispatcherModule, disableDispatcherModule, makeDispatcherModuleParameters, PICK_MAX_DISTANCE, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, - DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE, ZERO_VEC, Overlays + DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE, ZERO_VEC, Overlays, Picks */ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Script.include("/~/system/libraries/controllers.js"); (function() { - var END_RADIUS = 0.005; - var dim = { x: END_RADIUS, y: END_RADIUS, z: END_RADIUS }; - var halfPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var halfEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var fullPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var fullEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var holdPath = { - type: "line3d", - color: COLORS_GRAB_DISTANCE_HOLD, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - - var renderStates = [ - {name: "half", path: halfPath, end: halfEnd}, - {name: "full", path: fullPath, end: fullEnd}, - {name: "hold", path: holdPath} - ]; - - var defaultRenderStates = [ - {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, - {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, - {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} - ]; - - - // triggered when stylus presses a web overlay/entity - var HAPTIC_STYLUS_STRENGTH = 1.0; - var HAPTIC_STYLUS_DURATION = 20.0; - - function laserTargetHasKeyboardFocus(laserTarget) { - if (laserTarget && laserTarget !== Uuid.NULL) { - return Entities.keyboardFocusOverlay === laserTarget; - } - } - - function setKeyboardFocusOnLaserTarget(laserTarget) { - if (laserTarget && laserTarget !== Uuid.NULL) { - Entities.wantsHandControllerPointerEvents(laserTarget); - Overlays.keyboardFocusOverlay = Uuid.NULL; - Entities.keyboardFocusEntity = laserTarget; - } - } - - function sendHoverEnterEventToLaserTarget(hand, laserTarget) { - if (!laserTarget) { - return; - } - var pointerEvent = { - type: "Move", - id: hand + 1, // 0 is reserved for hardware mouse - pos2D: laserTarget.position2D, - pos3D: laserTarget.position, - normal: laserTarget.normal, - direction: Vec3.subtract(ZERO_VEC, laserTarget.normal), - button: "None" - }; - - if (laserTarget.entityID && laserTarget.entityID !== Uuid.NULL) { - Entities.sendHoverEnterEntity(laserTarget.entityID, pointerEvent); - } - } - - function sendHoverOverEventToLaserTarget(hand, laserTarget) { - - if (!laserTarget) { - return; - } - var pointerEvent = { - type: "Move", - id: hand + 1, // 0 is reserved for hardware mouse - pos2D: laserTarget.position2D, - pos3D: laserTarget.position, - normal: laserTarget.normal, - direction: Vec3.subtract(ZERO_VEC, laserTarget.normal), - button: "None" - }; - - if (laserTarget.entityID && laserTarget.entityID !== Uuid.NULL) { - Entities.sendMouseMoveOnEntity(laserTarget.entityID, pointerEvent); - Entities.sendHoverOverEntity(laserTarget.entityID, pointerEvent); - } - } - - - function sendTouchStartEventToLaserTarget(hand, laserTarget) { - var pointerEvent = { - type: "Press", - id: hand + 1, // 0 is reserved for hardware mouse - pos2D: laserTarget.position2D, - pos3D: laserTarget.position, - normal: laserTarget.normal, - direction: Vec3.subtract(ZERO_VEC, laserTarget.normal), - button: "Primary", - isPrimaryHeld: true - }; - - if (laserTarget.entityID && laserTarget.entityID !== Uuid.NULL) { - Entities.sendMousePressOnEntity(laserTarget.entityID, pointerEvent); - Entities.sendClickDownOnEntity(laserTarget.entityID, pointerEvent); - } - } - - function sendTouchEndEventToLaserTarget(hand, laserTarget) { - var pointerEvent = { - type: "Release", - id: hand + 1, // 0 is reserved for hardware mouse - pos2D: laserTarget.position2D, - pos3D: laserTarget.position, - normal: laserTarget.normal, - direction: Vec3.subtract(ZERO_VEC, laserTarget.normal), - button: "Primary" - }; - - if (laserTarget.entityID && laserTarget.entityID !== Uuid.NULL) { - Entities.sendMouseReleaseOnEntity(laserTarget.entityID, pointerEvent); - Entities.sendClickReleaseOnEntity(laserTarget.entityID, pointerEvent); - Entities.sendHoverLeaveEntity(laserTarget.entityID, pointerEvent); - } - } - - function sendTouchMoveEventToLaserTarget(hand, laserTarget) { - var pointerEvent = { - type: "Move", - id: hand + 1, // 0 is reserved for hardware mouse - pos2D: laserTarget.position2D, - pos3D: laserTarget.position, - normal: laserTarget.normal, - direction: Vec3.subtract(ZERO_VEC, laserTarget.normal), - button: "Primary", - isPrimaryHeld: true - }; - - if (laserTarget.entityID && laserTarget.entityID !== Uuid.NULL) { - Entities.sendMouseMoveOnEntity(laserTarget.entityID, pointerEvent); - Entities.sendHoldingClickOnEntity(laserTarget.entityID, pointerEvent); - } - } - - function calculateTargetFromEntity(intersection, props) { - if (props.rotation === undefined) { - // if rotation is missing from props object, then this entity has probably been deleted. - return null; - } - - // project stylus tip onto entity plane. - var normal = Vec3.multiplyQbyV(props.rotation, {x: 0, y: 0, z: 1}); - Vec3.multiplyQbyV(props.rotation, {x: 0, y: 1, z: 0}); - var distance = Vec3.dot(Vec3.subtract(intersection, props.position), normal); - var position = Vec3.subtract(intersection, Vec3.multiply(normal, distance)); - - // generate normalized coordinates - var invRot = Quat.inverse(props.rotation); - var localPos = Vec3.multiplyQbyV(invRot, Vec3.subtract(position, props.position)); - var invDimensions = { x: 1 / props.dimensions.x, y: 1 / props.dimensions.y, z: 1 / props.dimensions.z }; - var normalizedPosition = Vec3.sum(Vec3.multiplyVbyV(localPos, invDimensions), props.registrationPoint); - - // 2D position on entity plane in meters, relative to the bounding box upper-left hand corner. - var position2D = { - x: normalizedPosition.x * props.dimensions.x, - y: (1 - normalizedPosition.y) * props.dimensions.y // flip y-axis - }; - - return { - entityID: props.id, - entityProps: props, - overlayID: null, - distance: distance, - position: position, - position2D: position2D, - normal: normal, - normalizedPosition: normalizedPosition, - dimensions: props.dimensions, - valid: true - }; - } - - function distance2D(a, b) { - var dx = (a.x - b.x); - var dy = (a.y - b.y); - return Math.sqrt(dx * dx + dy * dy); - } - function WebEntityLaserInput(hand) { this.hand = hand; - this.active = false; - this.previousLaserClickedTarget = false; - this.laserPressingTarget = false; - this.hover = false; - this.mode = "none"; - this.pressEnterLaserTarget = null; - this.laserTarget = null; - this.laserTargetID = null; - this.lastValidTargetID = null; - - this.handToController = function() { - return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; - }; - - this.getOtherModule = function() { - return (this.hand === RIGHT_HAND) ? leftWebEntityLaserInput : rightWebEntityLaserInput; - }; - this.parameters = makeDispatcherModuleParameters( 550, this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], [], 100); - this.requestTouchFocus = function(laserTarget) { - if (laserTarget !== null || laserTarget !== undefined) { - sendHoverEnterEventToLaserTarget(this.hand, this.laserTarget); - this.lastValidTargetID = laserTarget; - } - }; - - this.relinquishTouchFocus = function() { - // send hover leave event. - var pointerEvent = { type: "Move", id: this.hand + 1 }; - Entities.sendMouseMoveOnEntity(this.lastValidTargetID, pointerEvent); - Entities.sendHoverOverEntity(this.lastValidTargetID, pointerEvent); - Entities.sendHoverLeaveEntity(this.lastValidID, pointerEvent); - }; - - this.updateLaserTargets = function(controllerData) { - var intersection = controllerData.rayPicks[this.hand]; - this.laserTargetID = intersection.objectID; - var props = Entities.getEntityProperties(intersection.objectID); - this.laserTarget = calculateTargetFromEntity(intersection.intersection, props); - }; - - this.processControllerTriggers = function(controllerData) { - if (controllerData.triggerClicks[this.hand]) { - this.mode = "full"; - this.laserPressingTarget = true; - this.hover = false; - } else if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { - this.mode = "half"; - this.laserPressingTarget = false; - this.hover = true; - this.requestTouchFocus(this.laserTargetID); - } else { - this.mode = "none"; - this.laserPressingTarget = false; - this.hover = false; - this.relinquishTouchFocus(); - - } - }; - - this.hovering = function() { - if (!laserTargetHasKeyboardFocus(this.laserTagetID)) { - setKeyboardFocusOnLaserTarget(this.laserTargetID); - } - sendHoverOverEventToLaserTarget(this.hand, this.laserTarget); - }; - - this.laserPressEnter = function () { - sendTouchStartEventToLaserTarget(this.hand, this.laserTarget); - Controller.triggerHapticPulse(HAPTIC_STYLUS_STRENGTH, HAPTIC_STYLUS_DURATION, this.hand); - - this.touchingEnterTimer = 0; - this.pressEnterLaserTarget = this.laserTarget; - this.deadspotExpired = false; - - var LASER_PRESS_TO_MOVE_DEADSPOT = 0.026; - this.deadspotRadius = Math.tan(LASER_PRESS_TO_MOVE_DEADSPOT) * this.laserTarget.distance; - }; - - this.laserPressExit = function () { - if (this.laserTarget === null) { - return; - } - - // send press event - if (this.deadspotExpired) { - sendTouchEndEventToLaserTarget(this.hand, this.laserTarget); - } else { - sendTouchEndEventToLaserTarget(this.hand, this.pressEnterLaserTarget); - } - }; - - this.laserPressing = function (controllerData, dt) { - this.touchingEnterTimer += dt; - - if (this.laserTarget) { - var POINTER_PRESS_TO_MOVE_DELAY = 0.33; // seconds - if (this.deadspotExpired || this.touchingEnterTimer > POINTER_PRESS_TO_MOVE_DELAY || - distance2D(this.laserTarget.position2D, - this.pressEnterLaserTarget.position2D) > this.deadspotRadius) { - sendTouchMoveEventToLaserTarget(this.hand, this.laserTarget); - this.deadspotExpired = true; - } - } else { - this.laserPressingTarget = false; - } - }; - - this.releaseTouchEvent = function() { - if (this.pressEnterLaserTarget === null) { - return; - } - - sendTouchEndEventToLaserTarget(this.hand, this.pressEnterLaserTarget); - }; - - this.updateLaserPointer = function(controllerData) { - LaserPointers.enableLaserPointer(this.laserPointer); - LaserPointers.setRenderState(this.laserPointer, this.mode); - }; - this.isPointingAtWebEntity = function(controllerData) { var intersection = controllerData.rayPicks[this.hand]; var entityProperty = Entities.getEntityProperties(intersection.objectID); @@ -385,90 +36,32 @@ Script.include("/~/system/libraries/controllers.js"); return false; }; - this.exitModule = function() { - this.releaseTouchEvent(); - this.relinquishTouchFocus(); - this.reset(); - this.updateLaserPointer(); - LaserPointers.disableLaserPointer(this.laserPointer); - }; - - this.reset = function() { - this.pressEnterLaserTarget = null; - this.laserTarget = null; - this.laserTargetID = null; - this.laserPressingTarget = false; - this.previousLaserClickedTarget = null; - this.mode = "none"; - this.active = false; - }; - this.isReady = function(controllerData) { var otherModule = this.getOtherModule(); if (this.isPointingAtWebEntity(controllerData) && !otherModule.active) { return makeRunningValues(true, [], []); } - return makeRunningValues(false, [], []); }; this.run = function(controllerData, deltaTime) { if (!this.isPointingAtWebEntity(controllerData)) { - this.exitModule(); return makeRunningValues(false, [], []); } - - this.updateLaserTargets(controllerData); - this.processControllerTriggers(controllerData); - this.updateLaserPointer(controllerData); - - if (!this.previousLaserClickedTarget && this.laserPressingTarget) { - this.laserPressEnter(); - } - if (this.previousLaserClickedTarget && !this.laserPressingTarget) { - this.laserPressExit(); - } - this.previousLaserClickedTarget = this.laserPressingTarget; - - if (this.laserPressingTarget) { - this.laserPressing(controllerData, deltaTime); - } - - if (this.hover) { - this.hovering(); - } return makeRunningValues(true, [], []); }; - - this.cleanup = function() { - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.removeLaserPointer(this.laserPointer); - }; - - this.laserPointer = LaserPointers.createLaserPointer({ - joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: Picks.PICK_ENTITIES, - maxDistance: PICK_MAX_DISTANCE, - posOffset: getGrabPointSphereOffset(this.handToController(), true), - renderStates: renderStates, - faceAvatar: true, - defaultRenderStates: defaultRenderStates - }); } - var leftWebEntityLaserInput = new WebEntityLaserInput(LEFT_HAND); var rightWebEntityLaserInput = new WebEntityLaserInput(RIGHT_HAND); enableDispatcherModule("LeftWebEntityLaserInput", leftWebEntityLaserInput); enableDispatcherModule("RightWebEntityLaserInput", rightWebEntityLaserInput); - this.cleanup = function() { - leftWebEntityLaserInput.cleanup(); - rightWebEntityLaserInput.cleanup(); + function cleanup() { disableDispatcherModule("LeftWebEntityLaserInput"); disableDispatcherModule("RightWebEntityLaserInput"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); From 3c779f1528cd0eeccd2e04d2ffbecaa88629eca8 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 31 Oct 2017 13:26:43 -0700 Subject: [PATCH 058/187] HUD events WIP, fix entity/overlay hover, no hover for empty renderState --- interface/src/Application.cpp | 6 ++ interface/src/raypick/LaserPointer.cpp | 2 + interface/src/raypick/LaserPointer.h | 3 + interface/src/ui/overlays/Overlays.cpp | 21 ++++++- interface/src/ui/overlays/Overlays.h | 1 + .../src/EntityTreeRenderer.cpp | 1 + .../pointers/src/pointers/PickManager.cpp | 1 + libraries/pointers/src/pointers/PickManager.h | 3 + libraries/pointers/src/pointers/Pointer.cpp | 32 +++++++++-- libraries/pointers/src/pointers/Pointer.h | 9 ++- .../pointers/src/pointers/PointerManager.h | 7 +++ libraries/shared/src/PointerEvent.cpp | 5 ++ libraries/shared/src/PointerEvent.h | 2 +- libraries/ui/CMakeLists.txt | 3 +- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 57 ++++++++++++++++--- libraries/ui/src/ui/OffscreenQmlSurface.h | 5 ++ 16 files changed, 138 insertions(+), 20 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0db422953f..6038ff6c9a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1811,6 +1811,12 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(&_myCamera, &Camera::modeUpdated, this, &Application::cameraModeChanged); DependencyManager::get()->setShouldPickHUDOperator([&]() { return DependencyManager::get()->isHMDMode(); }); + DependencyManager::get()->setCalculatePos2DFromHUDOperator([&](const glm::vec3& intersection) { + const glm::vec2 MARGIN(25.0f); + glm::vec2 maxPos = _controllerScriptingInterface->getViewportDimensions() - MARGIN; + glm::vec2 pos2D = DependencyManager::get()->overlayFromWorldPoint(intersection); + return glm::max(MARGIN, glm::min(pos2D, maxPos)); + }); // Setup the mouse ray pick and related operators DependencyManager::get()->setMouseRayPickID(DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared( diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 83e3757514..d2d829e579 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -301,6 +301,8 @@ PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const Q pos2D = projectOntoEntityXYPlane(target.objectID, intersection); } else if (target.type == OVERLAY) { pos2D = projectOntoOverlayXYPlane(target.objectID, intersection); + } else if (target.type == HUD) { + pos2D = DependencyManager::get()->calculatePos2DFromHUD(intersection); } return PointerEvent(PointerEvent::Move, id, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); } diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index bdd3f2ffa0..14b95d34d3 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -75,6 +75,9 @@ public: protected: PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const override; + bool shouldHover() override { return _currentRenderState != ""; } + bool shouldTrigger() override { return _currentRenderState != ""; } + private: PointerTriggers _triggers; float _laserLength { 0.0f }; diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index b37a376de3..5a7b1bd76c 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -46,7 +46,7 @@ extern void initOverlay3DPipelines(render::ShapePlumber& plumber, bool depthTest Overlays::Overlays() { auto pointerManager = DependencyManager::get(); connect(pointerManager.data(), &PointerManager::hoverBeginOverlay, this, &Overlays::hoverEnterOverlay); - connect(pointerManager.data(), &PointerManager::hoverContinueOverlay, this, &Overlays::hoverOverOverlay); + connect(pointerManager.data(), &PointerManager::hoverContinueOverlay, this, &Overlays::hoverOverPointerEvent); connect(pointerManager.data(), &PointerManager::hoverEndOverlay, this, &Overlays::hoverLeavePointerEvent); connect(pointerManager.data(), &PointerManager::triggerBeginOverlay, this, &Overlays::mousePressPointerEvent); connect(pointerManager.data(), &PointerManager::triggerContinueOverlay, this, &Overlays::mouseMovePointerEvent); @@ -745,7 +745,7 @@ void Overlays::sendHoverEnterOverlay(const OverlayID& overlayID, const PointerEv } void Overlays::sendHoverOverOverlay(const OverlayID& overlayID, const PointerEvent& event) { - emit hoverOverOverlay(overlayID, event); + hoverOverPointerEvent(overlayID, event); } void Overlays::sendHoverLeaveOverlay(const OverlayID& overlayID, const PointerEvent& event) { @@ -940,6 +940,21 @@ bool Overlays::mouseDoublePressEvent(QMouseEvent* event) { return false; } +void Overlays::hoverOverPointerEvent(const OverlayID& overlayID, const PointerEvent& event) { + // TODO: generalize this to allow any overlay to recieve events + std::shared_ptr thisOverlay; + if (getOverlayType(overlayID) == "web3d") { + thisOverlay = std::static_pointer_cast(getOverlay(overlayID)); + } + if (thisOverlay) { + // Send to web overlay + QMetaObject::invokeMethod(thisOverlay.get(), "handlePointerEvent", Q_ARG(PointerEvent, event)); + } + + // emit to scripts + emit hoverOverOverlay(overlayID, event); +} + void Overlays::hoverLeavePointerEvent(const OverlayID& overlayID, const PointerEvent& event) { // TODO: generalize this to allow any overlay to recieve events std::shared_ptr thisOverlay; @@ -1005,7 +1020,7 @@ bool Overlays::mouseMoveEvent(QMouseEvent* event) { } // Hover over current overlay. - emit hoverOverOverlay(rayPickResult.overlayID, pointerEvent); + hoverOverPointerEvent(rayPickResult.overlayID, pointerEvent); _currentHoverOverOverlayID = rayPickResult.overlayID; } else { diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index 8bcfa99aba..a5ad013246 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -308,6 +308,7 @@ public slots: void mousePressPointerEvent(const OverlayID& overlayID, const PointerEvent& event); void mouseMovePointerEvent(const OverlayID& overlayID, const PointerEvent& event); void mouseReleasePointerEvent(const OverlayID& overlayID, const PointerEvent& event); + void hoverOverPointerEvent(const OverlayID& overlayID, const PointerEvent& event); void hoverLeavePointerEvent(const OverlayID& overlayID, const PointerEvent& event); signals: diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index ef056b88ac..4dc5729c03 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -83,6 +83,7 @@ EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterf connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, this, handlePointerEvent); connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseReleaseOnEntity, this, handlePointerEvent); connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseMoveOnEntity, this, handlePointerEvent); + connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverOverEntity, this, handlePointerEvent); connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, this, [&](const EntityItemID& entityID, const PointerEvent& event) { std::shared_ptr thisEntity; auto entity = getEntity(entityID); diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp index 571f9f04cd..1c5025250a 100644 --- a/libraries/pointers/src/pointers/PickManager.cpp +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -9,6 +9,7 @@ PickManager::PickManager() { setShouldPickHUDOperator([]() { return false; }); + setCalculatePos2DFromHUDOperator([](const glm::vec3& intersection) { return glm::vec2(NAN); }); } QUuid PickManager::addPick(PickQuery::PickType type, const std::shared_ptr pick) { diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index b8abb077c7..e3b1d03080 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -34,9 +34,12 @@ public: void setIncludeItems(const QUuid& uid, const QVector& include) const; void setShouldPickHUDOperator(std::function shouldPickHUDOperator) { _shouldPickHUDOperator = shouldPickHUDOperator; } + void setCalculatePos2DFromHUDOperator(std::function calculatePos2DFromHUDOperator) { _calculatePos2DFromHUDOperator = calculatePos2DFromHUDOperator; } + glm::vec2 calculatePos2DFromHUD(const glm::vec3& intersection) { return _calculatePos2DFromHUDOperator(intersection); } protected: std::function _shouldPickHUDOperator; + std::function _calculatePos2DFromHUDOperator; std::shared_ptr findPick(const QUuid& uid) const; QHash>> _picks; diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 8796b1e47d..90518ed965 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -56,7 +56,7 @@ void Pointer::update() { } void Pointer::generatePointerEvents(const QVariantMap& pickResult) { - // TODO: avatars/HUD? + // TODO: avatars? auto pointerManager = DependencyManager::get(); // Hover events @@ -65,7 +65,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { hoveredEvent.setType(PointerEvent::Move); // TODO: set buttons on hover events hoveredEvent.setButton(PointerEvent::NoButtons); - if (_enabled && _hover) { + if (_enabled && _hover && shouldHover()) { if (hoveredObject.type == OVERLAY) { if (_prevHoveredObject.type == OVERLAY) { if (hoveredObject.objectID == _prevHoveredObject.objectID) { @@ -79,6 +79,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); if (_prevHoveredObject.type == ENTITY) { emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == HUD) { + emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); } } } @@ -97,6 +99,22 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); if (_prevHoveredObject.type == OVERLAY) { emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == HUD) { + emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); + } + } + } + + if (hoveredObject.type == HUD) { + if (_prevHoveredObject.type == HUD) { + // There's only one HUD + emit pointerManager->hoverContinueHUD(hoveredObject.objectID, hoveredEvent); + } else { + emit pointerManager->hoverBeginHUD(hoveredObject.objectID, hoveredEvent); + if (_prevHoveredObject.type == ENTITY) { + emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == OVERLAY) { + emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); } } } @@ -107,8 +125,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { Buttons newButtons; Buttons sameButtons; // NOTE: After this loop: _prevButtons = buttons that were removed - // If !_enabled, release all buttons - if (_enabled) { + // If switching to disabled or should stop triggering, release all buttons + if (_enabled && shouldTrigger()) { buttons = getPressedButtons(); for (const std::string& button : buttons) { if (_prevButtons.find(button) == _prevButtons.end()) { @@ -130,6 +148,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->triggerBeginEntity(hoveredObject.objectID, hoveredEvent); } else if (hoveredObject.type == OVERLAY) { emit pointerManager->triggerBeginOverlay(hoveredObject.objectID, hoveredEvent); + } else if (hoveredObject.type == HUD) { + emit pointerManager->triggerBeginHUD(hoveredObject.objectID, hoveredEvent); } _triggeredObjects[button] = hoveredObject; } @@ -143,6 +163,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->triggerContinueEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { emit pointerManager->triggerContinueOverlay(_triggeredObjects[button].objectID, triggeredEvent); + } else if (_triggeredObjects[button].type == HUD) { + emit pointerManager->triggerContinueHUD(_triggeredObjects[button].objectID, triggeredEvent); } } @@ -155,6 +177,8 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->triggerEndEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { emit pointerManager->triggerEndOverlay(_triggeredObjects[button].objectID, triggeredEvent); + } else if (_triggeredObjects[button].type == HUD) { + emit pointerManager->triggerEndHUD(_triggeredObjects[button].objectID, triggeredEvent); } _triggeredObjects.erase(button); } diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index ca35c38c7a..b8294cd2f6 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -71,9 +71,6 @@ public: using Buttons = std::unordered_set; - virtual PickedObject getHoveredObject(const QVariantMap& pickResult) = 0; - virtual Buttons getPressedButtons() = 0; - QUuid getRayUID() { return _pickUID; } protected: @@ -83,6 +80,12 @@ protected: virtual PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const = 0; + virtual PickedObject getHoveredObject(const QVariantMap& pickResult) = 0; + virtual Buttons getPressedButtons() = 0; + + virtual bool shouldHover() = 0; + virtual bool shouldTrigger() = 0; + private: PickedObject _prevHoveredObject; Buttons _prevButtons; diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 9f477d9eb2..574be8320a 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -58,6 +58,13 @@ signals: void hoverBeginEntity(const QUuid& id, const PointerEvent& pointerEvent); void hoverContinueEntity(const QUuid& id, const PointerEvent& pointerEvent); void hoverEndEntity(const QUuid& id, const PointerEvent& pointerEvent); + + void triggerBeginHUD(const QUuid& id, const PointerEvent& pointerEvent); + void triggerContinueHUD(const QUuid& id, const PointerEvent& pointerEvent); + void triggerEndHUD(const QUuid& id, const PointerEvent& pointerEvent); + void hoverBeginHUD(const QUuid& id, const PointerEvent& pointerEvent); + void hoverContinueHUD(const QUuid& id, const PointerEvent& pointerEvent); + void hoverEndHUD(const QUuid& id, const PointerEvent& pointerEvent); }; #endif // hifi_pointers_PointerManager_h diff --git a/libraries/shared/src/PointerEvent.cpp b/libraries/shared/src/PointerEvent.cpp index e35832391d..183b7c332a 100644 --- a/libraries/shared/src/PointerEvent.cpp +++ b/libraries/shared/src/PointerEvent.cpp @@ -41,6 +41,11 @@ PointerEvent::PointerEvent(EventType type, uint32_t id, ; } +void PointerEvent::setButton(Button button) { + _button = button; + _buttons |= button; +} + QScriptValue PointerEvent::toScriptValue(QScriptEngine* engine, const PointerEvent& event) { QScriptValue obj = engine->newObject(); diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index 074e5ab79b..d3b72f072c 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -58,7 +58,7 @@ public: bool shouldFocus() const { return _shouldFocus; } void setType(EventType type) { _type = type; } - void setButton(Button button) { _button = button; } + void setButton(Button button); void setShouldFocus(bool focus) { _shouldFocus = focus; } private: diff --git a/libraries/ui/CMakeLists.txt b/libraries/ui/CMakeLists.txt index f28157ff97..334cce97e5 100644 --- a/libraries/ui/CMakeLists.txt +++ b/libraries/ui/CMakeLists.txt @@ -1,6 +1,7 @@ set(TARGET_NAME ui) setup_hifi_library(OpenGL Network Qml Quick Script WebChannel WebEngine WebSockets XmlPatterns) -link_hifi_libraries(shared networking gl audio) +link_hifi_libraries(shared networking gl audio pointers) +include_hifi_library_headers(controllers) # Required for some low level GL interaction in the OffscreenQMLSurface target_opengl() diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index ecd07a5874..3363a47092 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -49,6 +49,8 @@ #include "Logging.h" +#include + Q_LOGGING_CATEGORY(trace_render_qml, "trace.render.qml") Q_LOGGING_CATEGORY(trace_render_qml_gl, "trace.render.qml.gl") Q_LOGGING_CATEGORY(offscreenFocus, "hifi.offscreen.focus") @@ -529,6 +531,13 @@ bool OffscreenQmlSurface::allowNewFrame(uint8_t fps) { } OffscreenQmlSurface::OffscreenQmlSurface() { + auto pointerManager = DependencyManager::get(); + connect(pointerManager.data(), &PointerManager::hoverBeginHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::hoverContinueHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::hoverEndHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerBeginHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerContinueHUD, this, &OffscreenQmlSurface::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerEndHUD, this, &OffscreenQmlSurface::handlePointerEvent); } OffscreenQmlSurface::~OffscreenQmlSurface() { @@ -932,14 +941,8 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even transformedPos, mouseEvent->screenPos(), mouseEvent->button(), mouseEvent->buttons(), mouseEvent->modifiers()); - if (event->type() == QEvent::MouseMove) { - // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install - // need to investigate into why this crash is happening. - //_qmlContext->setContextProperty("lastMousePosition", transformedPos); - } - mappedEvent.ignore(); - if (QCoreApplication::sendEvent(_quickWindow, &mappedEvent)) { - return mappedEvent.isAccepted(); + if (sendMouseEvent(mappedEvent)) { + return true; } break; } @@ -951,6 +954,44 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even return false; } +void OffscreenQmlSurface::handlePointerEvent(const QUuid& id, const PointerEvent& event) { + if (_paused) { + return; + } + + QEvent::Type type; + switch (event.getType()) { + case PointerEvent::Press: + type = QEvent::Type::MouseButtonPress; + break; + case PointerEvent::DoublePress: + type = QEvent::Type::MouseButtonDblClick; + break; + case PointerEvent::Release: + type = QEvent::Type::MouseButtonRelease; + break; + case PointerEvent::Move: + type = QEvent::Type::MouseMove; + break; + } + QPointF screenPos(event.getPos2D().x, event.getPos2D().y); + QMouseEvent mouseEvent(type, screenPos, Qt::MouseButton(event.getButton()), Qt::MouseButtons(event.getButtons()), event.getKeyboardModifiers()); + sendMouseEvent(mouseEvent); +} + +bool OffscreenQmlSurface::sendMouseEvent(QMouseEvent& mouseEvent) { + if (mouseEvent.type() == QEvent::MouseMove) { + // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install + // need to investigate into why this crash is happening. + //_qmlContext->setContextProperty("lastMousePosition", mouseEvent.localPos()); + } + mouseEvent.ignore(); + if (QCoreApplication::sendEvent(_quickWindow, &mouseEvent)) { + return mouseEvent.isAccepted(); + } + return false; +} + void OffscreenQmlSurface::pause() { _paused = true; } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 12ee9e59a1..3deab07411 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -30,6 +30,8 @@ class QQmlContext; class QQmlComponent; class QQuickWindow; class QQuickItem; +class QMouseEvent; +class PointerEvent; // GPU resources are typically buffered for one copy being used by the renderer, // one copy in flight, and one copy being used by the receiver @@ -135,6 +137,7 @@ private: private slots: void updateQuick(); void onFocusObjectChanged(QObject* newFocus); + void handlePointerEvent(const QUuid& id, const PointerEvent& event); private: QQuickWindow* _quickWindow { nullptr }; @@ -161,6 +164,8 @@ private: QWindow* _proxyWindow { nullptr }; QQuickItem* _currentFocusItem { nullptr }; + + bool sendMouseEvent(QMouseEvent& mouseEvent); }; #endif From f44025a8b1687ae727459a5578d75b24186db9e1 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 31 Oct 2017 15:57:57 -0700 Subject: [PATCH 059/187] completely removed non-need laserPointers --- .../controllers/controllerDispatcher.js | 52 ++++++-- .../controllerModules/hudOverlayPointer.js | 120 +----------------- .../controllerModules/webEntityLaserInput.js | 3 +- .../system/controllers/controllerScripts.js | 2 +- 4 files changed, 43 insertions(+), 134 deletions(-) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 1773e013e1..6f68edad07 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -128,8 +128,8 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); mouse: false }; - this.laserVisibleStatus = [false, false]; - this.laserLockStatus = [false, false]; + this.laserVisibleStatus = [false, false, false, false]; + this.laserLockStatus = [false, false, false, false]; this.slotsAreAvailableForPlugin = function (plugin) { for (var i = 0; i < plugin.parameters.activitySlots.length; i++) { @@ -256,6 +256,8 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); this.updateRenderStateForVisibleLasers = function() { // update left hand laser + + var HUD_LASER_OFFSET = 2; if (_this.laserVisibleStatus[LEFT_HAND]) { var laserLocked = _this.laserLockStatus[LEFT_HAND]; _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, laserLocked); @@ -270,6 +272,18 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } else { Pointers.setRenderState(_this.rightControllerPointer, ""); } + + if (_this.laserVisibleStatus[LEFT_HAND + HUD_LASER_OFFSET]) { + _this.updateLaserRenderState(_this.leftControllerHudRayPick, _this.leftTriggerClicked, false); + } else { + Pointers.setRenderState(_this.leftControllerHudRayPick, ""); + } + + if (_this.laserVisibleStatus[RIGHT_HAND + HUD_LASER_OFFSET]) { + _this.updateLaserRenderState(_this.rightControllerHudRayPick, _this.rightTriggerClicked, false); + } else { + Pointers.setRenderState(_this.rightControllerHudRayPick, ""); + } }; this.updateLaserRenderState = function(laser, triggerClicked, laserLocked) { @@ -375,8 +389,8 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Pointers.getPrevPickResult(_this.rightControllerPointer) ]; var hudRayPicks = [ - RayPick.getPrevRayPickResult(_this.leftControllerHudRayPick), - RayPick.getPrevRayPickResult(_this.rightControllerHudRayPick) + Pointers.getPrevPickResult(_this.leftControllerHudRayPick), + Pointers.getPrevPickResult(_this.rightControllerHudRayPick) ]; var mouseRayPick = RayPick.getPrevRayPickResult(_this.mouseRayPick); // if the pickray hit something very nearby, put it into the nearby entities list @@ -538,12 +552,15 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true), hover: true }); - this.leftControllerHudRayPick = RayPick.createRayPick({ + this.leftControllerHudRayPick = Pointers.createPointer(PickType.Ray, { joint: "_CONTROLLER_LEFTHAND", filter: Picks.PICK_HUD, - enabled: true, maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, - posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true) + renderStates: renderStates, + defaultRenderStates: defaultRenderStates, + posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true), + triggers: [{action: Controller.Standard.LTClick, button: "Focus"}, {action: Controller.Standard.LTClick, button: "Primary"}], + hover: true }); this.rightControllerPointer = Pointers.createPointer(PickType.Ray, { joint: "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND", @@ -554,12 +571,15 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true), hover: true }); - this.rightControllerHudRayPick = RayPick.createRayPick({ + this.rightControllerHudRayPick = Pointers.createPointer(PickType.Ray, { joint: "_CONTROLLER_RIGHTHAND", filter: Picks.PICK_HUD, - enabled: true, maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, - posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true) + renderStates: renderStates, + defaultRenderStates: defaultRenderStates, + posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true), + triggers: [{action: Controller.Standard.RTClick, button: "Focus"}, {action: Controller.Standard.RTClick, button: "Primary"}], + hover: true }); this.mouseRayPick = RayPick.createRayPick({ joint: "Mouse", @@ -568,9 +588,13 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); }); Pointers.setRenderState(this.leftControllerPointer, ""); + Pointers.setRenderState(this.leftControllerHudRayPick, ""); Pointers.setRenderState(this.rightControllerPointer, ""); + Pointers.setRenderState(this.rightControllerHudRayPick, ""); Pointers.enablePointer(this.leftControllerPointer); + Pointers.enablePointer(this.leftControllerHudRayPick); Pointers.enablePointer(this.rightControllerPointer); + Pointers.enablePointer(this.rightControllerHudRayPick); this.handleHandMessage = function(channel, message, sender) { var data; @@ -604,10 +628,10 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); this.cleanup = function () { Script.update.disconnect(_this.update); Controller.disableMapping(MAPPING_NAME); - RayPick.removeRayPick(_this.leftControllerRayPick); - RayPick.removeRayPick(_this.rightControllerRayPick); - RayPick.removeRayPick(_this.rightControllerHudRayPick); - RayPick.removeRayPick(_this.leftControllerHudRayPick); + Pointers.removePointer(_this.leftControllerPointer); + Pointers.removePointer(_this.rightControllerPointer); + Pointers.removePointer(_this.rightControllerHudRayPick); + Pointers.removePointer(_this.leftControllerHudRayPick); }; } diff --git a/scripts/system/controllers/controllerModules/hudOverlayPointer.js b/scripts/system/controllers/controllerModules/hudOverlayPointer.js index 191f7ed86f..b276bde027 100644 --- a/scripts/system/controllers/controllerModules/hudOverlayPointer.js +++ b/scripts/system/controllers/controllerModules/hudOverlayPointer.js @@ -22,79 +22,8 @@ (function() { Script.include("/~/system/libraries/controllers.js"); var ControllerDispatcherUtils = Script.require("/~/system/libraries/controllerDispatcherUtils.js"); - var END_RADIUS = 0.005; - var dim = { x: END_RADIUS, y: END_RADIUS, z: END_RADIUS }; - var halfPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawHUDLayer: true, - parentID: MyAvatar.SELF_ID - }; - var halfEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawHUDLayer: true, - visible: true - }; - var fullPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawHUDLayer: true, - parentID: MyAvatar.SELF_ID - }; - var fullEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawHUDLayer: true, - visible: true - }; - var holdPath = { - type: "line3d", - color: COLORS_GRAB_DISTANCE_HOLD, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawHUDLayer: true, - parentID: MyAvatar.SELF_ID - }; - - var renderStates = [ - {name: "half", path: halfPath, end: halfEnd}, - {name: "full", path: fullPath, end: fullEnd}, - {name: "hold", path: holdPath} - ]; - - var defaultRenderStates = [ - {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, - {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, - {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} - ]; - var MARGIN = 25; - + var HUD_LASER_OFFSET = 2; function HudOverlayPointer(hand) { var _this = this; this.hand = hand; @@ -102,14 +31,12 @@ this.reticleMaxX; this.reticleMinY = MARGIN; this.reticleMaxY; - this.clicked = false; - this.triggerClicked = 0; - this.movedAway = false; this.parameters = ControllerDispatcherUtils.makeDispatcherModuleParameters( 540, this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], [], - 100); + 100, + (this.hand + HUD_LASER_OFFSET)); this.getOtherHandController = function() { return (this.hand === RIGHT_HAND) ? Controller.Standard.LeftHand : Controller.Standard.RightHand; @@ -129,22 +56,6 @@ this.reticleMaxY = dims.y - MARGIN; }; - this.updateLaserPointer = function(controllerData) { - LaserPointers.enableLaserPointer(this.laserPointer); - LaserPointers.setRenderState(this.laserPointer, this.mode); - }; - - this.processControllerTriggers = function(controllerData) { - if (controllerData.triggerClicks[this.hand]) { - this.mode = "full"; - } else if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { - this.clicked = false; - this.mode = "half"; - } else { - this.mode = "none"; - } - }; - this.calculateNewReticlePosition = function(intersection) { this.updateRecommendedArea(); var point2d = HMD.overlayFromWorldPoint(intersection); @@ -166,28 +77,18 @@ var controllerLocation = controllerData.controllerLocations[this.hand]; if ((controllerData.triggerValues[this.hand] < ControllerDispatcherUtils.TRIGGER_ON_VALUE || !controllerLocation.valid) || this.pointingAtTablet(controllerData)) { - this.exitModule(); return false; } var hudRayPick = controllerData.hudRayPicks[this.hand]; var point2d = this.calculateNewReticlePosition(hudRayPick.intersection); if (!Window.isPointOnDesktopWindow(point2d) && !this.triggerClicked) { - this.exitModule(); return false; } - this.setReticlePosition(point2d); Reticle.visible = false; - this.movedAway = false; this.triggerClicked = controllerData.triggerClicks[this.hand]; - this.processControllerTriggers(controllerData); - this.updateLaserPointer(controllerData); return true; }; - this.exitModule = function() { - LaserPointers.disableLaserPointer(this.laserPointer); - }; - this.isReady = function (controllerData) { if (this.processLaser(controllerData)) { return ControllerDispatcherUtils.makeRunningValues(true, [], []); @@ -199,21 +100,6 @@ this.run = function (controllerData, deltaTime) { return this.isReady(controllerData); }; - - this.cleanup = function () { - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.removeLaserPointer(this.laserPointer); - }; - - this.laserPointer = LaserPointers.createLaserPointer({ - joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: Picks.PICK_HUD, - maxDistance: PICK_MAX_DISTANCE, - posOffset: getGrabPointSphereOffset(this.handToController(), true), - renderStates: renderStates, - enabled: true, - defaultRenderStates: defaultRenderStates - }); } diff --git a/scripts/system/controllers/controllerModules/webEntityLaserInput.js b/scripts/system/controllers/controllerModules/webEntityLaserInput.js index 1bd683856e..20bd272542 100644 --- a/scripts/system/controllers/controllerModules/webEntityLaserInput.js +++ b/scripts/system/controllers/controllerModules/webEntityLaserInput.js @@ -37,8 +37,7 @@ Script.include("/~/system/libraries/controllers.js"); }; this.isReady = function(controllerData) { - var otherModule = this.getOtherModule(); - if (this.isPointingAtWebEntity(controllerData) && !otherModule.active) { + if (this.isPointingAtWebEntity(controllerData)) { return makeRunningValues(true, [], []); } return makeRunningValues(false, [], []); diff --git a/scripts/system/controllers/controllerScripts.js b/scripts/system/controllers/controllerScripts.js index 83576bd9a4..09602b33eb 100644 --- a/scripts/system/controllers/controllerScripts.js +++ b/scripts/system/controllers/controllerScripts.js @@ -19,7 +19,7 @@ var CONTOLLER_SCRIPTS = [ "controllerModules/nearParentGrabOverlay.js", "controllerModules/nearActionGrabEntity.js", "controllerModules/farActionGrabEntity.js", - "controllerModules/tabletStylusInput.js", + //"controllerModules/tabletStylusInput.js", "controllerModules/equipEntity.js", "controllerModules/nearTrigger.js", "controllerModules/overlayLaserInput.js", From 64665c87b2886b36926ba8384d2988f32083f8aa Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 31 Oct 2017 17:07:48 -0700 Subject: [PATCH 060/187] replace ids with unsigned ints --- interface/src/Application.cpp | 4 +- interface/src/raypick/LaserPointer.cpp | 3 +- .../LaserPointerScriptingInterface.cpp | 8 ++-- .../raypick/LaserPointerScriptingInterface.h | 24 +++++----- .../src/raypick/PickScriptingInterface.cpp | 22 ++++----- .../src/raypick/PickScriptingInterface.h | 18 +++---- .../src/raypick/PointerScriptingInterface.cpp | 12 ++--- .../src/raypick/PointerScriptingInterface.h | 26 +++++----- .../src/raypick/RayPickScriptingInterface.cpp | 16 +++---- .../src/raypick/RayPickScriptingInterface.h | 16 +++---- .../src/EntityTreeRenderer.cpp | 4 +- .../src/EntityTreeRenderer.h | 12 ++--- .../src/pointers/PickCacheOptimizer.h | 4 +- .../pointers/src/pointers/PickManager.cpp | 30 +++++++----- libraries/pointers/src/pointers/PickManager.h | 25 +++++----- libraries/pointers/src/pointers/Pointer.cpp | 13 +++-- libraries/pointers/src/pointers/Pointer.h | 10 ++-- .../pointers/src/pointers/PointerManager.cpp | 47 ++++++++++--------- .../pointers/src/pointers/PointerManager.h | 30 ++++++------ libraries/shared/src/PointerEvent.h | 1 + libraries/ui/src/ui/OffscreenQmlSurface.cpp | 4 +- 21 files changed, 176 insertions(+), 153 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6038ff6c9a..8fe58ddc7c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1821,7 +1821,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Setup the mouse ray pick and related operators DependencyManager::get()->setMouseRayPickID(DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared( PickFilter(PickScriptingInterface::PICK_ENTITIES() | PickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true))); - DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { + DependencyManager::get()->setMouseRayPickResultOperator([&](unsigned int rayPickID) { RayToEntityIntersectionResult entityResult; entityResult.intersects = false; QVariantMap result = DependencyManager::get()->getPrevPickResult(rayPickID); @@ -1837,7 +1837,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } return entityResult; }); - DependencyManager::get()->setSetPrecisionPickingOperator([&](QUuid rayPickID, bool value) { + DependencyManager::get()->setSetPrecisionPickingOperator([&](unsigned int rayPickID, bool value) { DependencyManager::get()->setPrecisionPicking(rayPickID, value); }); diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index d2d829e579..2506c6222d 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -282,7 +282,6 @@ RenderState LaserPointer::buildRenderState(const QVariantMap& propMap) { } PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const { - uint32_t id = 0; glm::vec3 intersection = vec3FromVariant(pickResult["intersection"]); glm::vec3 surfaceNormal = vec3FromVariant(pickResult["surfaceNormal"]); QVariantMap searchRay = pickResult["searchRay"].toMap(); @@ -304,7 +303,7 @@ PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const Q } else if (target.type == HUD) { pos2D = DependencyManager::get()->calculatePos2DFromHUD(intersection); } - return PointerEvent(PointerEvent::Move, id, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); + return PointerEvent(PointerEvent::Move, 0, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); } glm::vec3 LaserPointer::intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const { diff --git a/interface/src/raypick/LaserPointerScriptingInterface.cpp b/interface/src/raypick/LaserPointerScriptingInterface.cpp index 533dffafb9..53ddd71969 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.cpp +++ b/interface/src/raypick/LaserPointerScriptingInterface.cpp @@ -14,17 +14,17 @@ #include "RegisteredMetaTypes.h" #include "PointerScriptingInterface.h" -void LaserPointerScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) const { +void LaserPointerScriptingInterface::setIgnoreItems(unsigned int uid, const QScriptValue& ignoreItems) const { DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); } -void LaserPointerScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) const { +void LaserPointerScriptingInterface::setIncludeItems(unsigned int uid, const QScriptValue& includeItems) const { DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } -QUuid LaserPointerScriptingInterface::createLaserPointer(const QVariant& properties) const { +unsigned int LaserPointerScriptingInterface::createLaserPointer(const QVariant& properties) const { return DependencyManager::get()->createLaserPointer(properties); } -void LaserPointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const { +void LaserPointerScriptingInterface::editRenderState(unsigned int uid, const QString& renderState, const QVariant& properties) const { DependencyManager::get()->editRenderState(uid, renderState, properties); } \ No newline at end of file diff --git a/interface/src/raypick/LaserPointerScriptingInterface.h b/interface/src/raypick/LaserPointerScriptingInterface.h index 1116da1528..da62f4eb12 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.h +++ b/interface/src/raypick/LaserPointerScriptingInterface.h @@ -21,20 +21,20 @@ class LaserPointerScriptingInterface : public QObject, public Dependency { SINGLETON_DEPENDENCY public slots: - Q_INVOKABLE QUuid createLaserPointer(const QVariant& properties) const; - Q_INVOKABLE void enableLaserPointer(const QUuid& uid) const { DependencyManager::get()->enablePointer(uid); } - Q_INVOKABLE void disableLaserPointer(const QUuid& uid) const { DependencyManager::get()->disablePointer(uid); } - Q_INVOKABLE void removeLaserPointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } - Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; - Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE QVariantMap getPrevRayPickResult(QUuid uid) const { return DependencyManager::get()->getPrevPickResult(uid); } + Q_INVOKABLE unsigned int createLaserPointer(const QVariant& properties) const; + Q_INVOKABLE void enableLaserPointer(unsigned int uid) const { DependencyManager::get()->enablePointer(uid); } + Q_INVOKABLE void disableLaserPointer(unsigned int uid) const { DependencyManager::get()->disablePointer(uid); } + Q_INVOKABLE void removeLaserPointer(unsigned int uid) const { DependencyManager::get()->removePointer(uid); } + Q_INVOKABLE void editRenderState(unsigned int uid, const QString& renderState, const QVariant& properties) const; + Q_INVOKABLE void setRenderState(unsigned int uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } + Q_INVOKABLE QVariantMap getPrevRayPickResult(unsigned int uid) const { return DependencyManager::get()->getPrevPickResult(uid); } - Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } - Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } - Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities) const; - Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities) const; + Q_INVOKABLE void setPrecisionPicking(unsigned int uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } + Q_INVOKABLE void setLaserLength(unsigned int uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } + Q_INVOKABLE void setIgnoreItems(unsigned int uid, const QScriptValue& ignoreEntities) const; + Q_INVOKABLE void setIncludeItems(unsigned int uid, const QScriptValue& includeEntities) const; - Q_INVOKABLE void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } + Q_INVOKABLE void setLockEndUUID(unsigned int uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } }; diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 40f898e65d..a59e96ccbf 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -20,16 +20,16 @@ #include #include -QUuid PickScriptingInterface::createPick(const PickQuery::PickType type, const QVariant& properties) { +unsigned int PickScriptingInterface::createPick(const PickQuery::PickType type, const QVariant& properties) { switch (type) { case PickQuery::PickType::Ray: return createRayPick(properties); default: - return QUuid(); + return 0; } } -QUuid PickScriptingInterface::createRayPick(const QVariant& properties) { +unsigned int PickScriptingInterface::createRayPick(const QVariant& properties) { QVariantMap propMap = properties.toMap(); bool enabled = false; @@ -78,34 +78,34 @@ QUuid PickScriptingInterface::createRayPick(const QVariant& properties) { return DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared(position, direction, filter, maxDistance, enabled)); } - return QUuid(); + return 0; } -void PickScriptingInterface::enablePick(const QUuid& uid) { +void PickScriptingInterface::enablePick(unsigned int uid) { DependencyManager::get()->enablePick(uid); } -void PickScriptingInterface::disablePick(const QUuid& uid) { +void PickScriptingInterface::disablePick(unsigned int uid) { DependencyManager::get()->disablePick(uid); } -void PickScriptingInterface::removePick(const QUuid& uid) { +void PickScriptingInterface::removePick(unsigned int uid) { DependencyManager::get()->removePick(uid); } -QVariantMap PickScriptingInterface::getPrevPickResult(const QUuid& uid) { +QVariantMap PickScriptingInterface::getPrevPickResult(unsigned int uid) { return DependencyManager::get()->getPrevPickResult(uid); } -void PickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { +void PickScriptingInterface::setPrecisionPicking(unsigned int uid, const bool precisionPicking) { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } -void PickScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) { +void PickScriptingInterface::setIgnoreItems(unsigned int uid, const QScriptValue& ignoreItems) { DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); } -void PickScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) { +void PickScriptingInterface::setIncludeItems(unsigned int uid, const QScriptValue& includeItems) { DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 7c2eeb1ffc..900fa2ef40 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -33,20 +33,20 @@ class PickScriptingInterface : public QObject, public Dependency { SINGLETON_DEPENDENCY public: - QUuid createRayPick(const QVariant& properties); + unsigned int createRayPick(const QVariant& properties); void registerMetaTypes(QScriptEngine* engine); public slots: - Q_INVOKABLE QUuid createPick(const PickQuery::PickType type, const QVariant& properties); - Q_INVOKABLE void enablePick(const QUuid& uid); - Q_INVOKABLE void disablePick(const QUuid& uid); - Q_INVOKABLE void removePick(const QUuid& uid); - Q_INVOKABLE QVariantMap getPrevPickResult(const QUuid& uid); + Q_INVOKABLE unsigned int createPick(const PickQuery::PickType type, const QVariant& properties); + Q_INVOKABLE void enablePick(unsigned int uid); + Q_INVOKABLE void disablePick(unsigned int uid); + Q_INVOKABLE void removePick(unsigned int uid); + Q_INVOKABLE QVariantMap getPrevPickResult(unsigned int uid); - Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, const bool precisionPicking); - Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities); - Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); + Q_INVOKABLE void setPrecisionPicking(unsigned int uid, const bool precisionPicking); + Q_INVOKABLE void setIgnoreItems(unsigned int uid, const QScriptValue& ignoreEntities); + Q_INVOKABLE void setIncludeItems(unsigned int uid, const QScriptValue& includeEntities); static constexpr unsigned int PICK_NOTHING() { return 0; } static constexpr unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index c3a4ac164a..b7211830a8 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -14,23 +14,23 @@ #include "Application.h" #include "LaserPointer.h" -void PointerScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) const { +void PointerScriptingInterface::setIgnoreItems(unsigned int uid, const QScriptValue& ignoreItems) const { DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); } -void PointerScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) const { +void PointerScriptingInterface::setIncludeItems(unsigned int uid, const QScriptValue& includeItems) const { DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } -QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) const { +unsigned int PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) const { switch (type) { case PickQuery::PickType::Ray: return createLaserPointer(properties); default: - return QUuid(); + return 0; } } -QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) const { +unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& properties) const { QVariantMap propertyMap = properties.toMap(); bool faceAvatar = false; @@ -114,7 +114,7 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled)); } -void PointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const { +void PointerScriptingInterface::editRenderState(unsigned int uid, const QString& renderState, const QVariant& properties) const { QVariantMap propMap = properties.toMap(); QVariant startProps; diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h index cc2ffbc3cc..722ba8cec5 100644 --- a/interface/src/raypick/PointerScriptingInterface.h +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -19,23 +19,23 @@ class PointerScriptingInterface : public QObject, public Dependency { SINGLETON_DEPENDENCY public: - QUuid createLaserPointer(const QVariant& properties) const; + unsigned int createLaserPointer(const QVariant& properties) const; public slots: - Q_INVOKABLE QUuid createPointer(const PickQuery::PickType& type, const QVariant& properties) const; - Q_INVOKABLE void enablePointer(const QUuid& uid) const { DependencyManager::get()->enablePointer(uid); } - Q_INVOKABLE void disablePointer(const QUuid& uid) const { DependencyManager::get()->disablePointer(uid); } - Q_INVOKABLE void removePointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } - Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; - Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE QVariantMap getPrevPickResult(const QUuid& uid) const { return DependencyManager::get()->getPrevPickResult(uid); } + Q_INVOKABLE unsigned int createPointer(const PickQuery::PickType& type, const QVariant& properties) const; + Q_INVOKABLE void enablePointer(unsigned int uid) const { DependencyManager::get()->enablePointer(uid); } + Q_INVOKABLE void disablePointer(unsigned int uid) const { DependencyManager::get()->disablePointer(uid); } + Q_INVOKABLE void removePointer(unsigned int uid) const { DependencyManager::get()->removePointer(uid); } + Q_INVOKABLE void editRenderState(unsigned int uid, const QString& renderState, const QVariant& properties) const; + Q_INVOKABLE void setRenderState(unsigned int uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } + Q_INVOKABLE QVariantMap getPrevPickResult(unsigned int uid) const { return DependencyManager::get()->getPrevPickResult(uid); } - Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } - Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } - Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities) const; - Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities) const; + Q_INVOKABLE void setPrecisionPicking(unsigned int uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } + Q_INVOKABLE void setLaserLength(unsigned int uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } + Q_INVOKABLE void setIgnoreItems(unsigned int uid, const QScriptValue& ignoreEntities) const; + Q_INVOKABLE void setIncludeItems(unsigned int uid, const QScriptValue& includeEntities) const; - Q_INVOKABLE void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } + Q_INVOKABLE void setLockEndUid(unsigned int uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } signals: void triggerBegin(const QUuid& id, const PointerEvent& pointerEvent); diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index 92bf3ec521..f9774dda31 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -20,34 +20,34 @@ #include "JointRayPick.h" #include "MouseRayPick.h" -QUuid RayPickScriptingInterface::createRayPick(const QVariant& properties) { +uint32_t RayPickScriptingInterface::createRayPick(const QVariant& properties) { return DependencyManager::get()->createRayPick(properties); } -void RayPickScriptingInterface::enableRayPick(const QUuid& uid) { +void RayPickScriptingInterface::enableRayPick(uint32_t uid) { DependencyManager::get()->enablePick(uid); } -void RayPickScriptingInterface::disableRayPick(const QUuid& uid) { +void RayPickScriptingInterface::disableRayPick(uint32_t uid) { DependencyManager::get()->disablePick(uid); } -void RayPickScriptingInterface::removeRayPick(const QUuid& uid) { +void RayPickScriptingInterface::removeRayPick(uint32_t uid) { DependencyManager::get()->removePick(uid); } -QVariantMap RayPickScriptingInterface::getPrevRayPickResult(const QUuid& uid) { +QVariantMap RayPickScriptingInterface::getPrevRayPickResult(uint32_t uid) { return DependencyManager::get()->getPrevPickResult(uid); } -void RayPickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { +void RayPickScriptingInterface::setPrecisionPicking(uint32_t uid, const bool precisionPicking) { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } -void RayPickScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) { +void RayPickScriptingInterface::setIgnoreItems(uint32_t uid, const QScriptValue& ignoreItems) { DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); } -void RayPickScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptValue& includeItems) { +void RayPickScriptingInterface::setIncludeItems(uint32_t uid, const QScriptValue& includeItems) { DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } diff --git a/interface/src/raypick/RayPickScriptingInterface.h b/interface/src/raypick/RayPickScriptingInterface.h index b0d36f482c..844add9012 100644 --- a/interface/src/raypick/RayPickScriptingInterface.h +++ b/interface/src/raypick/RayPickScriptingInterface.h @@ -37,15 +37,15 @@ class RayPickScriptingInterface : public QObject, public Dependency { SINGLETON_DEPENDENCY public slots: - Q_INVOKABLE QUuid createRayPick(const QVariant& properties); - Q_INVOKABLE void enableRayPick(const QUuid& uid); - Q_INVOKABLE void disableRayPick(const QUuid& uid); - Q_INVOKABLE void removeRayPick(const QUuid& uid); - Q_INVOKABLE QVariantMap getPrevRayPickResult(const QUuid& uid); + Q_INVOKABLE unsigned int createRayPick(const QVariant& properties); + Q_INVOKABLE void enableRayPick(unsigned int uid); + Q_INVOKABLE void disableRayPick(unsigned int uid); + Q_INVOKABLE void removeRayPick(unsigned int uid); + Q_INVOKABLE QVariantMap getPrevRayPickResult(unsigned int uid); - Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, const bool precisionPicking); - Q_INVOKABLE void setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreEntities); - Q_INVOKABLE void setIncludeItems(const QUuid& uid, const QScriptValue& includeEntities); + Q_INVOKABLE void setPrecisionPicking(unsigned int uid, const bool precisionPicking); + Q_INVOKABLE void setIgnoreItems(unsigned int uid, const QScriptValue& ignoreEntities); + Q_INVOKABLE void setIncludeItems(unsigned int uid, const QScriptValue& includeEntities); static unsigned int PICK_NOTHING() { return PickScriptingInterface::PICK_NOTHING(); } static unsigned int PICK_ENTITIES() { return PickScriptingInterface::PICK_ENTITIES(); } diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 4dc5729c03..3cccc31145 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -51,11 +51,11 @@ EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterf _displayModelBounds(false), _layeredZones(this) { - setMouseRayPickResultOperator([](QUuid rayPickID) { + setMouseRayPickResultOperator([](unsigned int rayPickID) { RayToEntityIntersectionResult entityResult; return entityResult; }); - setSetPrecisionPickingOperator([](QUuid rayPickID, bool value) {}); + setSetPrecisionPickingOperator([](unsigned int rayPickID, bool value) {}); EntityRenderer::initEntityRenderers(); _currentHoverOverEntityID = UNKNOWN_ENTITY_ID; _currentClickingOnEntityID = UNKNOWN_ENTITY_ID; diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index 1eb44f996a..52876fa90e 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -74,9 +74,9 @@ public: static float getEntityLoadingPriority(const EntityItem& item) { return _calculateEntityLoadingPriorityFunc(item); } static void setEntityLoadingPriorityFunction(CalculateEntityLoadingPriority fn) { _calculateEntityLoadingPriorityFunc = fn; } - void setMouseRayPickID(QUuid rayPickID) { _mouseRayPickID = rayPickID; } - void setMouseRayPickResultOperator(std::function getPrevRayPickResultOperator) { _getPrevRayPickResultOperator = getPrevRayPickResultOperator; } - void setSetPrecisionPickingOperator(std::function setPrecisionPickingOperator) { _setPrecisionPickingOperator = setPrecisionPickingOperator; } + void setMouseRayPickID(unsigned int rayPickID) { _mouseRayPickID = rayPickID; } + void setMouseRayPickResultOperator(std::function getPrevRayPickResultOperator) { _getPrevRayPickResultOperator = getPrevRayPickResultOperator; } + void setSetPrecisionPickingOperator(std::function setPrecisionPickingOperator) { _setPrecisionPickingOperator = setPrecisionPickingOperator; } void shutdown(); void update(bool simulate); @@ -182,9 +182,9 @@ private: QMultiMap _waitingOnPreload; - QUuid _mouseRayPickID; - std::function _getPrevRayPickResultOperator; - std::function _setPrecisionPickingOperator; + unsigned int _mouseRayPickID; + std::function _getPrevRayPickResultOperator; + std::function _setPrecisionPickingOperator; class LayeredZone { public: diff --git a/libraries/pointers/src/pointers/PickCacheOptimizer.h b/libraries/pointers/src/pointers/PickCacheOptimizer.h index c4bf96ab51..f3bdbb87b0 100644 --- a/libraries/pointers/src/pointers/PickCacheOptimizer.h +++ b/libraries/pointers/src/pointers/PickCacheOptimizer.h @@ -37,7 +37,7 @@ template class PickCacheOptimizer { public: - void update(QHash>& picks, bool shouldPickHUD); + void update(QHash>& picks, bool shouldPickHUD); protected: typedef std::unordered_map> PickCache; @@ -67,7 +67,7 @@ void PickCacheOptimizer::cacheResult(const bool intersects, const PickResultP } template -void PickCacheOptimizer::update(QHash>& picks, bool shouldPickHUD) { +void PickCacheOptimizer::update(QHash>& picks, bool shouldPickHUD) { PickCache results; for (const auto& uid : picks.keys()) { std::shared_ptr> pick = std::static_pointer_cast>(picks[uid]); diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp index 1c5025250a..903113d79d 100644 --- a/libraries/pointers/src/pointers/PickManager.cpp +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -12,16 +12,20 @@ PickManager::PickManager() { setCalculatePos2DFromHUDOperator([](const glm::vec3& intersection) { return glm::vec2(NAN); }); } -QUuid PickManager::addPick(PickQuery::PickType type, const std::shared_ptr pick) { - QUuid id = QUuid::createUuid(); +unsigned int PickManager::addPick(PickQuery::PickType type, const std::shared_ptr pick) { + unsigned int id = 0; withWriteLock([&] { - _picks[type][id] = pick; - _typeMap[id] = type; + // Don't let the pick IDs overflow + if (_nextPickID < UINT32_MAX) { + id = _nextPickID++; + _picks[type][id] = pick; + _typeMap[id] = type; + } }); return id; } -std::shared_ptr PickManager::findPick(const QUuid& uid) const { +std::shared_ptr PickManager::findPick(unsigned int uid) const { return resultWithReadLock>([&] { auto type = _typeMap.find(uid); if (type != _typeMap.end()) { @@ -31,7 +35,7 @@ std::shared_ptr PickManager::findPick(const QUuid& uid) const { }); } -void PickManager::removePick(const QUuid& uid) { +void PickManager::removePick(unsigned int uid) { withWriteLock([&] { auto type = _typeMap.find(uid); if (type != _typeMap.end()) { @@ -41,7 +45,7 @@ void PickManager::removePick(const QUuid& uid) { }); } -QVariantMap PickManager::getPrevPickResult(const QUuid& uid) const { +QVariantMap PickManager::getPrevPickResult(unsigned int uid) const { auto pick = findPick(uid); if (pick && pick->getPrevPickResult()) { return pick->getPrevPickResult()->toVariantMap(); @@ -49,35 +53,35 @@ QVariantMap PickManager::getPrevPickResult(const QUuid& uid) const { return QVariantMap(); } -void PickManager::enablePick(const QUuid& uid) const { +void PickManager::enablePick(unsigned int uid) const { auto pick = findPick(uid); if (pick) { pick->enable(); } } -void PickManager::disablePick(const QUuid& uid) const { +void PickManager::disablePick(unsigned int uid) const { auto pick = findPick(uid); if (pick) { pick->disable(); } } -void PickManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { +void PickManager::setPrecisionPicking(unsigned int uid, bool precisionPicking) const { auto pick = findPick(uid); if (pick) { pick->setPrecisionPicking(precisionPicking); } } -void PickManager::setIgnoreItems(const QUuid& uid, const QVector& ignore) const { +void PickManager::setIgnoreItems(unsigned int uid, const QVector& ignore) const { auto pick = findPick(uid); if (pick) { pick->setIgnoreItems(ignore); } } -void PickManager::setIncludeItems(const QUuid& uid, const QVector& include) const { +void PickManager::setIncludeItems(unsigned int uid, const QVector& include) const { auto pick = findPick(uid); if (pick) { pick->setIncludeItems(include); @@ -85,7 +89,7 @@ void PickManager::setIncludeItems(const QUuid& uid, const QVector& includ } void PickManager::update() { - QHash>> cachedPicks; + QHash>> cachedPicks; withReadLock([&] { cachedPicks = _picks; }); diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index e3b1d03080..7ff4fcc941 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -22,16 +22,16 @@ public: void update(); - QUuid addPick(PickQuery::PickType type, const std::shared_ptr pick); - void removePick(const QUuid& uid); - void enablePick(const QUuid& uid) const; - void disablePick(const QUuid& uid) const; + unsigned int addPick(PickQuery::PickType type, const std::shared_ptr pick); + void removePick(unsigned int uid); + void enablePick(unsigned int uid) const; + void disablePick(unsigned int uid) const; - QVariantMap getPrevPickResult(const QUuid& uid) const; + QVariantMap getPrevPickResult(unsigned int uid) const; - void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; - void setIgnoreItems(const QUuid& uid, const QVector& ignore) const; - void setIncludeItems(const QUuid& uid, const QVector& include) const; + void setPrecisionPicking(unsigned int uid, bool precisionPicking) const; + void setIgnoreItems(unsigned int uid, const QVector& ignore) const; + void setIncludeItems(unsigned int uid, const QVector& include) const; void setShouldPickHUDOperator(std::function shouldPickHUDOperator) { _shouldPickHUDOperator = shouldPickHUDOperator; } void setCalculatePos2DFromHUDOperator(std::function calculatePos2DFromHUDOperator) { _calculatePos2DFromHUDOperator = calculatePos2DFromHUDOperator; } @@ -41,9 +41,12 @@ protected: std::function _shouldPickHUDOperator; std::function _calculatePos2DFromHUDOperator; - std::shared_ptr findPick(const QUuid& uid) const; - QHash>> _picks; - QHash _typeMap; + std::shared_ptr findPick(unsigned int uid) const; + QHash>> _picks; + QHash _typeMap; + // 0 = invalid + const unsigned int FIRST_PICK_ID { 1 }; + unsigned int _nextPickID { FIRST_PICK_ID }; PickCacheOptimizer _rayPickCacheOptimizer; }; diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 90518ed965..f57bded5ad 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -46,16 +46,16 @@ void Pointer::setIncludeItems(const QVector& includeItems) const { DependencyManager::get()->setIncludeItems(_pickUID, includeItems); } -void Pointer::update() { +void Pointer::update(unsigned int pointerID) { // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts withReadLock([&] { QVariantMap pickResult = getPrevPickResult(); updateVisuals(pickResult); - generatePointerEvents(pickResult); + generatePointerEvents(pointerID, pickResult); }); } -void Pointer::generatePointerEvents(const QVariantMap& pickResult) { +void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& pickResult) { // TODO: avatars? auto pointerManager = DependencyManager::get(); @@ -63,6 +63,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { Pointer::PickedObject hoveredObject = getHoveredObject(pickResult); PointerEvent hoveredEvent = buildPointerEvent(hoveredObject, pickResult); hoveredEvent.setType(PointerEvent::Move); + hoveredEvent.setID(pointerID); // TODO: set buttons on hover events hoveredEvent.setButton(PointerEvent::NoButtons); if (_enabled && _hover && shouldHover()) { @@ -72,6 +73,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->hoverContinueOverlay(hoveredObject.objectID, hoveredEvent); } else { PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); + prevHoveredEvent.setID(pointerID); emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); } @@ -92,6 +94,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { emit pointerManager->hoverContinueEntity(hoveredObject.objectID, hoveredEvent); } else { PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); + prevHoveredEvent.setID(pointerID); emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); } @@ -153,10 +156,13 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { } _triggeredObjects[button] = hoveredObject; } + // We still want other trigger events for Focus buttons, but they only set focus on triggerBegin + hoveredEvent.setShouldFocus(false); // Trigger continue for (const std::string& button : sameButtons) { PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); + triggeredEvent.setID(pointerID); triggeredEvent.setType(PointerEvent::Move); hoveredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { @@ -171,6 +177,7 @@ void Pointer::generatePointerEvents(const QVariantMap& pickResult) { // Trigger end for (const std::string& button : _prevButtons) { PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); + triggeredEvent.setID(pointerID); triggeredEvent.setType(PointerEvent::Release); hoveredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index b8294cd2f6..fc43e121f0 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -38,7 +38,7 @@ using PointerTriggers = std::vector; class Pointer : protected ReadWriteLockable { public: - Pointer(const QUuid& uid, bool enabled, bool hover) : _pickUID(uid), _enabled(enabled), _hover(hover) {} + Pointer(unsigned int uid, bool enabled, bool hover) : _pickUID(uid), _enabled(enabled), _hover(hover) {} virtual ~Pointer(); @@ -57,9 +57,9 @@ public: virtual void setLength(float length) {} virtual void setLockEndUUID(const QUuid& objectID, bool isOverlay) {} - void update(); + void update(unsigned int pointerID); virtual void updateVisuals(const QVariantMap& pickResult) = 0; - void generatePointerEvents(const QVariantMap& pickResult); + void generatePointerEvents(unsigned int pointerID, const QVariantMap& pickResult); struct PickedObject { PickedObject() {} @@ -71,10 +71,10 @@ public: using Buttons = std::unordered_set; - QUuid getRayUID() { return _pickUID; } + unsigned int getRayUID() { return _pickUID; } protected: - const QUuid _pickUID; + const unsigned int _pickUID; bool _enabled; bool _hover; diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index 2d41543b6b..b6d826c6f1 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -8,7 +8,7 @@ #include "PointerManager.h" -std::shared_ptr PointerManager::find(const QUuid& uid) const { +std::shared_ptr PointerManager::find(unsigned int uid) const { return resultWithReadLock>([&] { auto itr = _pointers.find(uid); if (itr != _pointers.end()) { @@ -18,50 +18,55 @@ std::shared_ptr PointerManager::find(const QUuid& uid) const { }); } -QUuid PointerManager::addPointer(std::shared_ptr pointer) { - QUuid result; - if (!pointer->getRayUID().isNull()) { - result = QUuid::createUuid(); - withWriteLock([&] { _pointers[result] = pointer; }); +unsigned int PointerManager::addPointer(std::shared_ptr pointer) { + unsigned int result = 0; + if (pointer->getRayUID() > 0) { + withWriteLock([&] { + // Don't let the pointer IDs overflow + if (_nextPointerID < UINT32_MAX) { + result = _nextPointerID++; + _pointers[result] = pointer; + } + }); } return result; } -void PointerManager::removePointer(const QUuid& uid) { +void PointerManager::removePointer(unsigned int uid) { withWriteLock([&] { _pointers.remove(uid); }); } -void PointerManager::enablePointer(const QUuid& uid) const { +void PointerManager::enablePointer(unsigned int uid) const { auto pointer = find(uid); if (pointer) { pointer->enable(); } } -void PointerManager::disablePointer(const QUuid& uid) const { +void PointerManager::disablePointer(unsigned int uid) const { auto pointer = find(uid); if (pointer) { pointer->disable(); } } -void PointerManager::setRenderState(const QUuid& uid, const std::string& renderState) const { +void PointerManager::setRenderState(unsigned int uid, const std::string& renderState) const { auto pointer = find(uid); if (pointer) { pointer->setRenderState(renderState); } } -void PointerManager::editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const { +void PointerManager::editRenderState(unsigned int uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const { auto pointer = find(uid); if (pointer) { pointer->editRenderState(state, startProps, pathProps, endProps); } } -const QVariantMap PointerManager::getPrevPickResult(const QUuid& uid) const { +const QVariantMap PointerManager::getPrevPickResult(unsigned int uid) const { auto pointer = find(uid); if (pointer) { return pointer->getPrevPickResult(); @@ -70,44 +75,44 @@ const QVariantMap PointerManager::getPrevPickResult(const QUuid& uid) const { } void PointerManager::update() { - auto cachedPointers = resultWithReadLock>>([&] { - return _pointers.values(); + auto cachedPointers = resultWithReadLock>>([&] { + return _pointers; }); - for (const auto& pointer : cachedPointers) { - pointer->update(); + for (const auto& uid : cachedPointers.keys()) { + cachedPointers[uid]->update(uid); } } -void PointerManager::setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { +void PointerManager::setPrecisionPicking(unsigned int uid, bool precisionPicking) const { auto pointer = find(uid); if (pointer) { pointer->setPrecisionPicking(precisionPicking); } } -void PointerManager::setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const { +void PointerManager::setIgnoreItems(unsigned int uid, const QVector& ignoreEntities) const { auto pointer = find(uid); if (pointer) { pointer->setIgnoreItems(ignoreEntities); } } -void PointerManager::setIncludeItems(const QUuid& uid, const QVector& includeEntities) const { +void PointerManager::setIncludeItems(unsigned int uid, const QVector& includeEntities) const { auto pointer = find(uid); if (pointer) { pointer->setIncludeItems(includeEntities); } } -void PointerManager::setLength(const QUuid& uid, float length) const { +void PointerManager::setLength(unsigned int uid, float length) const { auto pointer = find(uid); if (pointer) { pointer->setLength(length); } } -void PointerManager::setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const { +void PointerManager::setLockEndUUID(unsigned int uid, const QUuid& objectID, bool isOverlay) const { auto pointer = find(uid); if (pointer) { pointer->setLockEndUUID(objectID, isOverlay); diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 574be8320a..fcb347fb82 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -23,26 +23,28 @@ class PointerManager : public QObject, public Dependency, protected ReadWriteLoc public: PointerManager() {} - QUuid addPointer(std::shared_ptr pointer); - void removePointer(const QUuid& uid); - void enablePointer(const QUuid& uid) const; - void disablePointer(const QUuid& uid) const; - void setRenderState(const QUuid& uid, const std::string& renderState) const; - void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; - const QVariantMap getPrevPickResult(const QUuid& uid) const; + unsigned int addPointer(std::shared_ptr pointer); + void removePointer(unsigned int uid); + void enablePointer(unsigned int uid) const; + void disablePointer(unsigned int uid) const; + void setRenderState(unsigned int uid, const std::string& renderState) const; + void editRenderState(unsigned int uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; + const QVariantMap getPrevPickResult(unsigned int uid) const; - void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; - void setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const; - void setIncludeItems(const QUuid& uid, const QVector& includeEntities) const; + void setPrecisionPicking(unsigned int uid, bool precisionPicking) const; + void setIgnoreItems(unsigned int uid, const QVector& ignoreEntities) const; + void setIncludeItems(unsigned int uid, const QVector& includeEntities) const; - void setLength(const QUuid& uid, float length) const; - void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const; + void setLength(unsigned int uid, float length) const; + void setLockEndUUID(unsigned int uid, const QUuid& objectID, bool isOverlay) const; void update(); private: - std::shared_ptr find(const QUuid& uid) const; - QHash> _pointers; + std::shared_ptr find(unsigned int uid) const; + QHash> _pointers; + // 0 = invalid, 1 = reserved for system mouse + unsigned int _nextPointerID { 2 }; signals: void triggerBeginOverlay(const QUuid& id, const PointerEvent& pointerEvent); diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index d3b72f072c..239e7c6e4e 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -57,6 +57,7 @@ public: Qt::KeyboardModifiers getKeyboardModifiers() const { return _keyboardModifiers; } bool shouldFocus() const { return _shouldFocus; } + void setID(uint32_t id) { _id = id; } void setType(EventType type) { _type = type; } void setButton(Button button); void setShouldFocus(bool focus) { _shouldFocus = focus; } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 3363a47092..204986090c 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -959,7 +959,7 @@ void OffscreenQmlSurface::handlePointerEvent(const QUuid& id, const PointerEvent return; } - QEvent::Type type; + QEvent::Type type = QEvent::Type::MouseMove; switch (event.getType()) { case PointerEvent::Press: type = QEvent::Type::MouseButtonPress; @@ -973,6 +973,8 @@ void OffscreenQmlSurface::handlePointerEvent(const QUuid& id, const PointerEvent case PointerEvent::Move: type = QEvent::Type::MouseMove; break; + default: + break; } QPointF screenPos(event.getPos2D().x, event.getPos2D().y); QMouseEvent mouseEvent(type, screenPos, Qt::MouseButton(event.getButton()), Qt::MouseButtons(event.getButtons()), event.getKeyboardModifiers()); From abb6f786fab6918b76774cf0fd63844603ca8e21 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 1 Nov 2017 11:03:48 -0700 Subject: [PATCH 061/187] added homebutton message and scripts cleanup --- scripts/system/controllers/controllerDispatcher.js | 11 +++++++++-- .../controllerModules/disableOtherModule.js | 8 ++++---- .../controllerModules/farActionGrabEntity.js | 4 ++-- .../controllerModules/nearActionGrabEntity.js | 4 ++-- .../controllerModules/nearParentGrabEntity.js | 4 ++-- .../controllerModules/nearParentGrabOverlay.js | 4 ++-- .../controllers/controllerModules/nearTrigger.js | 4 ++-- .../controllers/controllerModules/scaleEntity.js | 4 ++-- 8 files changed, 25 insertions(+), 18 deletions(-) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 6f68edad07..915d683724 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -168,7 +168,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); var pointer = (hand === RIGHT_HAND) ? _this.rightControllerPointer : _this.leftControllerPointer; var targetID = laserLockInfo.targetID; var targetIsOverlay = laserLockInfo.isOverlay; - Pointers.setLockEndUUID(pointer, targetID, targetIsOverlay); + Pointers.setLockEndUid(pointer, targetID, targetIsOverlay); _this.laserLockStatus[hand] = targetID; } } else { @@ -634,7 +634,14 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Pointers.removePointer(_this.leftControllerHudRayPick); }; } - + function mouseReleaseOnOverlay(overlayID, event) { + if (overlayID === HMD.homeButtonID) { + print(JSON.stringify(event)); + print("---------> go home <--------"); + Messages.sendLocalMessage("home", overlayID); + } + } + Overlays.mouseReleaseOnOverlay.connect(mouseReleaseOnOverlay); var controllerDispatcher = new ControllerDispatcher(); Messages.subscribe('Hifi-Hand-RayPick-Blacklist'); Messages.messageReceived.connect(controllerDispatcher.handleHandMessage); diff --git a/scripts/system/controllers/controllerModules/disableOtherModule.js b/scripts/system/controllers/controllerModules/disableOtherModule.js index 92784ec2ed..e873579ba7 100644 --- a/scripts/system/controllers/controllerModules/disableOtherModule.js +++ b/scripts/system/controllers/controllerModules/disableOtherModule.js @@ -53,7 +53,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); enableDispatcherModule("LeftDisableModules", leftDisableModules); enableDispatcherModule("RightDisableModules", rightDisableModules); - this.handleMessage = function(channel, message, sender) { + function handleMessage(channel, message, sender) { if (sender === MyAvatar.sessionUUID) { if (channel === 'Hifi-Hand-Disabler') { if (message === 'left') { @@ -76,10 +76,10 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); }; Messages.subscribe('Hifi-Hand-Disabler'); - this.cleanup = function() { + function cleanup() { disableDispatcherModule("LeftDisableModules"); disableDispatcherModule("RightDisableModules"); }; - Messages.messageReceived.connect(this.handleMessage); - Script.scriptEnding.connect(this.cleanup); + Messages.messageReceived.connect(handleMessage); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/farActionGrabEntity.js b/scripts/system/controllers/controllerModules/farActionGrabEntity.js index 6f818b8b1e..e0f8834e38 100644 --- a/scripts/system/controllers/controllerModules/farActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/farActionGrabEntity.js @@ -475,11 +475,11 @@ Script.include("/~/system/libraries/controllers.js"); enableDispatcherModule("LeftFarActionGrabEntity", leftFarActionGrabEntity); enableDispatcherModule("RightFarActionGrabEntity", rightFarActionGrabEntity); - this.cleanup = function () { + function cleanup() { leftFarActionGrabEntity.cleanup(); rightFarActionGrabEntity.cleanup(); disableDispatcherModule("LeftFarActionGrabEntity"); disableDispatcherModule("RightFarActionGrabEntity"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js index 6b2a986f0f..4fc192cc6b 100644 --- a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js @@ -256,11 +256,11 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); enableDispatcherModule("LeftNearActionGrabEntity", leftNearActionGrabEntity); enableDispatcherModule("RightNearActionGrabEntity", rightNearActionGrabEntity); - this.cleanup = function () { + function cleanup() { leftNearActionGrabEntity.cleanup(); rightNearActionGrabEntity.cleanup(); disableDispatcherModule("LeftNearActionGrabEntity"); disableDispatcherModule("RightNearActionGrabEntity"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js index 178d459b1d..1a5e82599d 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js @@ -338,11 +338,11 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); enableDispatcherModule("LeftNearParentingGrabEntity", leftNearParentingGrabEntity); enableDispatcherModule("RightNearParentingGrabEntity", rightNearParentingGrabEntity); - this.cleanup = function () { + function cleanup() { leftNearParentingGrabEntity.cleanup(); rightNearParentingGrabEntity.cleanup(); disableDispatcherModule("LeftNearParentingGrabEntity"); disableDispatcherModule("RightNearParentingGrabEntity"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js b/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js index 925c50df5e..5333196bd0 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js @@ -224,11 +224,11 @@ Script.include("/~/system/libraries/utils.js"); enableDispatcherModule("LeftNearParentingGrabOverlay", leftNearParentingGrabOverlay); enableDispatcherModule("RightNearParentingGrabOverlay", rightNearParentingGrabOverlay); - this.cleanup = function () { + function cleanup() { leftNearParentingGrabOverlay.cleanup(); rightNearParentingGrabOverlay.cleanup(); disableDispatcherModule("LeftNearParentingGrabOverlay"); disableDispatcherModule("RightNearParentingGrabOverlay"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearTrigger.js b/scripts/system/controllers/controllerModules/nearTrigger.js index 56a4e93495..a8aa72f1aa 100644 --- a/scripts/system/controllers/controllerModules/nearTrigger.js +++ b/scripts/system/controllers/controllerModules/nearTrigger.js @@ -110,11 +110,11 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); enableDispatcherModule("LeftNearTriggerEntity", leftNearTriggerEntity); enableDispatcherModule("RightNearTriggerEntity", rightNearTriggerEntity); - this.cleanup = function () { + function cleanup() { leftNearTriggerEntity.cleanup(); rightNearTriggerEntity.cleanup(); disableDispatcherModule("LeftNearTriggerEntity"); disableDispatcherModule("RightNearTriggerEntity"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/scaleEntity.js b/scripts/system/controllers/controllerModules/scaleEntity.js index 79b1d18db9..d45a4a5071 100644 --- a/scripts/system/controllers/controllerModules/scaleEntity.js +++ b/scripts/system/controllers/controllerModules/scaleEntity.js @@ -98,9 +98,9 @@ dispatcherUtils.enableDispatcherModule("LeftScaleEntity", leftScaleEntity); dispatcherUtils.enableDispatcherModule("RightScaleEntity", rightScaleEntity); - this.cleanup = function() { + function cleanup() { dispatcherUtils.disableDispatcherModule("LeftScaleEntity"); dispatcherUtils.disableDispatcherModule("RightScaleEntity"); }; - Script.scriptEnding.connect(this.cleanup); + Script.scriptEnding.connect(cleanup); })(); From f061b9c2da92d9a8f85376b8c272644ab63c8209 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 25 Oct 2017 15:11:18 -0700 Subject: [PATCH 062/187] Add stylus functionality to pointer manager --- interface/src/Application.cpp | 16 +- interface/src/raypick/JointRayPick.cpp | 2 +- interface/src/raypick/JointRayPick.h | 2 +- interface/src/raypick/LaserPointer.cpp | 44 +- interface/src/raypick/LaserPointer.h | 6 +- .../LaserPointerScriptingInterface.cpp | 6 +- .../raypick/LaserPointerScriptingInterface.h | 2 +- interface/src/raypick/MouseRayPick.cpp | 2 +- interface/src/raypick/MouseRayPick.h | 2 +- .../src/raypick/PickScriptingInterface.cpp | 7 +- .../src/raypick/PointerScriptingInterface.cpp | 41 +- .../src/raypick/PointerScriptingInterface.h | 5 +- interface/src/raypick/RayPick.h | 2 +- .../src/raypick/RayPickScriptingInterface.cpp | 7 +- interface/src/raypick/StaticRayPick.cpp | 2 +- interface/src/raypick/StaticRayPick.h | 2 +- interface/src/raypick/StylusPointer.cpp | 627 ++++++++++++++++++ interface/src/raypick/StylusPointer.h | 145 ++++ libraries/pointers/src/pointers/Pick.h | 4 +- .../src/pointers/PickCacheOptimizer.h | 16 +- .../pointers/src/pointers/PickManager.cpp | 9 +- libraries/pointers/src/pointers/PickManager.h | 8 +- libraries/pointers/src/pointers/Pointer.cpp | 10 +- libraries/pointers/src/pointers/Pointer.h | 16 +- .../pointers/src/pointers/PointerManager.cpp | 11 +- .../pointers/src/pointers/PointerManager.h | 4 +- libraries/script-engine/src/ScriptCache.cpp | 1 + libraries/shared/src/PointerEvent.h | 6 +- libraries/shared/src/RegisteredMetaTypes.h | 67 +- libraries/shared/src/shared/Bilateral.h | 21 +- scripts/defaultScripts.js | 2 +- .../controllerModules/tabletStylusInput.js | 454 +------------ 32 files changed, 1019 insertions(+), 530 deletions(-) create mode 100644 interface/src/raypick/StylusPointer.cpp create mode 100644 interface/src/raypick/StylusPointer.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 07962d838b..420c4e7ce6 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1819,14 +1819,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo DependencyManager::get()->setMouseRayPickResultOperator([&](QUuid rayPickID) { RayToEntityIntersectionResult entityResult; entityResult.intersects = false; - QVariantMap result = DependencyManager::get()->getPrevPickResult(rayPickID); - if (result["type"].isValid()) { - entityResult.intersects = result["type"] != PickScriptingInterface::INTERSECTED_NONE(); + auto pickResult = DependencyManager::get()->getPrevPickResultTyped(rayPickID); + if (pickResult) { + entityResult.intersects = pickResult->type != IntersectionType::NONE; if (entityResult.intersects) { - entityResult.intersection = vec3FromVariant(result["intersection"]); - entityResult.distance = result["distance"].toFloat(); - entityResult.surfaceNormal = vec3FromVariant(result["surfaceNormal"]); - entityResult.entityID = result["objectID"].toUuid(); + entityResult.intersection = pickResult->intersection; + entityResult.distance = pickResult->distance; + entityResult.surfaceNormal = pickResult->surfaceNormal; + entityResult.entityID = pickResult->objectID; entityResult.entity = DependencyManager::get()->getTree()->findEntityByID(entityResult.entityID); } } @@ -4957,7 +4957,7 @@ void Application::update(float deltaTime) { { PROFILE_RANGE(app, "PointerManager"); - DependencyManager::get()->update(); + DependencyManager::get()->update(deltaTime); } { diff --git a/interface/src/raypick/JointRayPick.cpp b/interface/src/raypick/JointRayPick.cpp index c2a7fb11e5..fdffb9796d 100644 --- a/interface/src/raypick/JointRayPick.cpp +++ b/interface/src/raypick/JointRayPick.cpp @@ -20,7 +20,7 @@ JointRayPick::JointRayPick(const std::string& jointName, const glm::vec3& posOff { } -const PickRay JointRayPick::getMathematicalPick() const { +PickRay JointRayPick::getMathematicalPick() const { auto myAvatar = DependencyManager::get()->getMyAvatar(); int jointIndex = myAvatar->getJointIndex(QString::fromStdString(_jointName)); bool useAvatarHead = _jointName == "Avatar"; diff --git a/interface/src/raypick/JointRayPick.h b/interface/src/raypick/JointRayPick.h index ab44bf67c8..0ef39d6336 100644 --- a/interface/src/raypick/JointRayPick.h +++ b/interface/src/raypick/JointRayPick.h @@ -18,7 +18,7 @@ class JointRayPick : public RayPick { public: JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getMathematicalPick() const override; + PickRay getMathematicalPick() const override; private: std::string _jointName; diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 83e3757514..bf1847e3f6 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -16,6 +16,7 @@ #include #include #include "PickScriptingInterface.h" +#include "RayPick.h" LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates, bool hover, const PointerTriggers& triggers, bool faceAvatar, bool centerEndY, bool lockEnd, bool distanceScaleEnd, bool enabled) : @@ -177,17 +178,20 @@ void LaserPointer::disableRenderState(const RenderState& renderState) { } } -void LaserPointer::updateVisuals(const QVariantMap& prevRayPickResult) { - IntersectionType type = IntersectionType(prevRayPickResult["type"].toInt()); - PickRay pickRay = PickRay(prevRayPickResult["searchRay"].toMap()); - QUuid uid = prevRayPickResult["objectID"].toUuid(); +void LaserPointer::updateVisuals(const PickResultPointer& pickResult) { + auto rayPickResult = std::static_pointer_cast(pickResult); + + IntersectionType type = rayPickResult ? rayPickResult->type : IntersectionType::NONE; if (_enabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() && (type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) { - float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult["distance"].toFloat(); + PickRay pickRay{ rayPickResult->pickVariant }; + QUuid uid = rayPickResult->objectID; + float distance = _laserLength > 0.0f ? _laserLength : rayPickResult->distance; updateRenderState(_renderStates[_currentRenderState], type, distance, uid, pickRay, false); disableRenderState(_defaultRenderStates[_currentRenderState].second); } else if (_enabled && !_currentRenderState.empty() && _defaultRenderStates.find(_currentRenderState) != _defaultRenderStates.end()) { disableRenderState(_renderStates[_currentRenderState]); + PickRay pickRay = rayPickResult ? PickRay(rayPickResult->pickVariant) : PickRay(); updateRenderState(_defaultRenderStates[_currentRenderState].second, IntersectionType::NONE, _defaultRenderStates[_currentRenderState].first, QUuid(), pickRay, true); } else if (!_currentRenderState.empty()) { disableRenderState(_renderStates[_currentRenderState]); @@ -195,8 +199,12 @@ void LaserPointer::updateVisuals(const QVariantMap& prevRayPickResult) { } } -Pointer::PickedObject LaserPointer::getHoveredObject(const QVariantMap& pickResult) { - return Pointer::PickedObject(pickResult["objectID"].toUuid(), IntersectionType(pickResult["type"].toUInt())); +Pointer::PickedObject LaserPointer::getHoveredObject(const PickResultPointer& pickResult) { + auto rayPickResult = std::static_pointer_cast(pickResult); + if (!rayPickResult) { + return PickedObject(); + } + return PickedObject(rayPickResult->objectID, rayPickResult->type); } Pointer::Buttons LaserPointer::getPressedButtons() { @@ -281,16 +289,22 @@ RenderState LaserPointer::buildRenderState(const QVariantMap& propMap) { return RenderState(startID, pathID, endID); } -PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const { +PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const { uint32_t id = 0; - glm::vec3 intersection = vec3FromVariant(pickResult["intersection"]); - glm::vec3 surfaceNormal = vec3FromVariant(pickResult["surfaceNormal"]); - QVariantMap searchRay = pickResult["searchRay"].toMap(); - glm::vec3 direction = vec3FromVariant(searchRay["direction"]); - QUuid pickedID = pickResult["objectID"].toUuid(); + QUuid pickedID; + glm::vec3 intersection, surfaceNormal, direction, origin; + if (target.type != NONE) { + auto rayPickResult = std::static_pointer_cast(pickResult); + intersection = rayPickResult->intersection; + surfaceNormal = rayPickResult->surfaceNormal; + const QVariantMap& searchRay = rayPickResult->pickVariant; + direction = vec3FromVariant(searchRay["direction"]); + origin = vec3FromVariant(searchRay["origin"]); + pickedID = rayPickResult->objectID;; + } + glm::vec2 pos2D; if (pickedID != target.objectID) { - glm::vec3 origin = vec3FromVariant(searchRay["origin"]); if (target.type == ENTITY) { intersection = intersectRayWithEntityXYPlane(target.objectID, origin, direction); } else if (target.type == OVERLAY) { @@ -355,4 +369,4 @@ glm::vec2 LaserPointer::projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec2 LaserPointer::projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos) const { auto props = DependencyManager::get()->getEntityProperties(entityID); return projectOntoXYPlane(worldPos, props.getPosition(), props.getRotation(), props.getDimensions(), props.getRegistrationPoint()); -} \ No newline at end of file +} diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index bdd3f2ffa0..9fbbadb475 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -65,15 +65,15 @@ public: void setLength(float length) override; void setLockEndUUID(const QUuid& objectID, bool isOverlay) override; - void updateVisuals(const QVariantMap& prevRayPickResult) override; + void updateVisuals(const PickResultPointer& prevRayPickResult) override; - PickedObject getHoveredObject(const QVariantMap& pickResult) override; + PickedObject getHoveredObject(const PickResultPointer& pickResult) override; Pointer::Buttons getPressedButtons() override; static RenderState buildRenderState(const QVariantMap& propMap); protected: - PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const override; + PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const override; private: PointerTriggers _triggers; diff --git a/interface/src/raypick/LaserPointerScriptingInterface.cpp b/interface/src/raypick/LaserPointerScriptingInterface.cpp index 533dffafb9..92ad837e7a 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.cpp +++ b/interface/src/raypick/LaserPointerScriptingInterface.cpp @@ -27,4 +27,8 @@ QUuid LaserPointerScriptingInterface::createLaserPointer(const QVariant& propert void LaserPointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const { DependencyManager::get()->editRenderState(uid, renderState, properties); -} \ No newline at end of file +} + +QVariantMap LaserPointerScriptingInterface::getPrevRayPickResult(const QUuid& uid) const { + return DependencyManager::get()->getPrevPickResult(uid); +} diff --git a/interface/src/raypick/LaserPointerScriptingInterface.h b/interface/src/raypick/LaserPointerScriptingInterface.h index 1116da1528..d1dd5499f4 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.h +++ b/interface/src/raypick/LaserPointerScriptingInterface.h @@ -27,7 +27,7 @@ public slots: Q_INVOKABLE void removeLaserPointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE QVariantMap getPrevRayPickResult(QUuid uid) const { return DependencyManager::get()->getPrevPickResult(uid); } + Q_INVOKABLE QVariantMap getPrevRayPickResult(const QUuid& uid) const; Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } diff --git a/interface/src/raypick/MouseRayPick.cpp b/interface/src/raypick/MouseRayPick.cpp index f691dafc01..1f39b61614 100644 --- a/interface/src/raypick/MouseRayPick.cpp +++ b/interface/src/raypick/MouseRayPick.cpp @@ -18,7 +18,7 @@ MouseRayPick::MouseRayPick(const PickFilter& filter, const float maxDistance, co { } -const PickRay MouseRayPick::getMathematicalPick() const { +PickRay MouseRayPick::getMathematicalPick() const { QVariant position = qApp->getApplicationCompositor().getReticleInterface()->getPosition(); if (position.isValid()) { QVariantMap posMap = position.toMap(); diff --git a/interface/src/raypick/MouseRayPick.h b/interface/src/raypick/MouseRayPick.h index e9eb3ccabf..81561d7459 100644 --- a/interface/src/raypick/MouseRayPick.h +++ b/interface/src/raypick/MouseRayPick.h @@ -18,7 +18,7 @@ class MouseRayPick : public RayPick { public: MouseRayPick(const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getMathematicalPick() const override; + PickRay getMathematicalPick() const override; }; #endif // hifi_MouseRayPick_h diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 40f898e65d..ac81bcf72f 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -94,7 +94,12 @@ void PickScriptingInterface::removePick(const QUuid& uid) { } QVariantMap PickScriptingInterface::getPrevPickResult(const QUuid& uid) { - return DependencyManager::get()->getPrevPickResult(uid); + QVariantMap result; + auto pickResult = DependencyManager::get()->getPrevPickResult(uid); + if (pickResult) { + result = pickResult->toVariantMap(); + } + return result; } void PickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index c3a4ac164a..74f207f793 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -10,9 +10,11 @@ #include #include +#include #include "Application.h" #include "LaserPointer.h" +#include "StylusPointer.h" void PointerScriptingInterface::setIgnoreItems(const QUuid& uid, const QScriptValue& ignoreItems) const { DependencyManager::get()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems)); @@ -21,15 +23,40 @@ void PointerScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptV DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } -QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) const { +QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) { + // Interaction with managers should always happen ont he main thread + if (QThread::currentThread() != qApp->thread()) { + QUuid result; + BLOCKING_INVOKE_METHOD(this, "createPointer", Q_RETURN_ARG(QUuid, result), Q_ARG(PickQuery::PickType, type), Q_ARG(QVariant, properties)); + return result; + } + switch (type) { case PickQuery::PickType::Ray: return createLaserPointer(properties); + case PickQuery::PickType::Stylus: + return createStylus(properties); default: return QUuid(); } } +QUuid PointerScriptingInterface::createStylus(const QVariant& properties) const { + bilateral::Side side = bilateral::Side::Invalid; + { + QVariant handVar = properties.toMap()["hand"]; + if (handVar.isValid()) { + side = bilateral::side(handVar.toInt()); + } + } + + if (bilateral::Side::Invalid == side) { + return QUuid(); + } + + return DependencyManager::get()->addPointer(std::make_shared(side)); +} + QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) const { QVariantMap propertyMap = properties.toMap(); @@ -133,4 +160,14 @@ void PointerScriptingInterface::editRenderState(const QUuid& uid, const QString& } DependencyManager::get()->editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps); -} \ No newline at end of file +} + +QVariantMap PointerScriptingInterface::getPrevPickResult(const QUuid& uid) const { + QVariantMap result; + auto pickResult = DependencyManager::get()->getPrevPickResult(uid); + if (pickResult) { + result = pickResult->toVariantMap(); + } + return result; +} + diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h index cc2ffbc3cc..0cba7e2a6d 100644 --- a/interface/src/raypick/PointerScriptingInterface.h +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -20,15 +20,16 @@ class PointerScriptingInterface : public QObject, public Dependency { public: QUuid createLaserPointer(const QVariant& properties) const; + QUuid createStylus(const QVariant& properties) const; public slots: - Q_INVOKABLE QUuid createPointer(const PickQuery::PickType& type, const QVariant& properties) const; + Q_INVOKABLE QUuid createPointer(const PickQuery::PickType& type, const QVariant& properties); Q_INVOKABLE void enablePointer(const QUuid& uid) const { DependencyManager::get()->enablePointer(uid); } Q_INVOKABLE void disablePointer(const QUuid& uid) const { DependencyManager::get()->disablePointer(uid); } Q_INVOKABLE void removePointer(const QUuid& uid) const { DependencyManager::get()->removePointer(uid); } Q_INVOKABLE void editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const; Q_INVOKABLE void setRenderState(const QUuid& uid, const QString& renderState) const { DependencyManager::get()->setRenderState(uid, renderState.toStdString()); } - Q_INVOKABLE QVariantMap getPrevPickResult(const QUuid& uid) const { return DependencyManager::get()->getPrevPickResult(uid); } + Q_INVOKABLE QVariantMap getPrevPickResult(const QUuid& uid) const; Q_INVOKABLE void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const { DependencyManager::get()->setPrecisionPicking(uid, precisionPicking); } Q_INVOKABLE void setLaserLength(const QUuid& uid, float laserLength) const { DependencyManager::get()->setLength(uid, laserLength); } diff --git a/interface/src/raypick/RayPick.h b/interface/src/raypick/RayPick.h index b5d7ea7c3e..1c2b3fbb80 100644 --- a/interface/src/raypick/RayPick.h +++ b/interface/src/raypick/RayPick.h @@ -53,7 +53,7 @@ public: bool doesIntersect() const override { return intersects; } bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return distance < maxDistance; } - PickResultPointer compareAndProcessNewResult(const PickResultPointer newRes) override { + PickResultPointer compareAndProcessNewResult(const PickResultPointer& newRes) override { auto newRayRes = std::static_pointer_cast(newRes); if (newRayRes->distance < distance) { return std::make_shared(*newRayRes); diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index 92bf3ec521..8cee02270d 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -37,7 +37,12 @@ void RayPickScriptingInterface::removeRayPick(const QUuid& uid) { } QVariantMap RayPickScriptingInterface::getPrevRayPickResult(const QUuid& uid) { - return DependencyManager::get()->getPrevPickResult(uid); + QVariantMap result; + auto pickResult = DependencyManager::get()->getPrevPickResult(uid); + if (pickResult) { + result = pickResult->toVariantMap(); + } + return result; } void RayPickScriptingInterface::setPrecisionPicking(const QUuid& uid, const bool precisionPicking) { diff --git a/interface/src/raypick/StaticRayPick.cpp b/interface/src/raypick/StaticRayPick.cpp index f7803aade6..c79f87ad0e 100644 --- a/interface/src/raypick/StaticRayPick.cpp +++ b/interface/src/raypick/StaticRayPick.cpp @@ -13,6 +13,6 @@ StaticRayPick::StaticRayPick(const glm::vec3& position, const glm::vec3& directi { } -const PickRay StaticRayPick::getMathematicalPick() const { +PickRay StaticRayPick::getMathematicalPick() const { return _pickRay; } \ No newline at end of file diff --git a/interface/src/raypick/StaticRayPick.h b/interface/src/raypick/StaticRayPick.h index 6dc0a809ae..ded57caf4e 100644 --- a/interface/src/raypick/StaticRayPick.h +++ b/interface/src/raypick/StaticRayPick.h @@ -15,7 +15,7 @@ class StaticRayPick : public RayPick { public: StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); - const PickRay getMathematicalPick() const override; + PickRay getMathematicalPick() const override; private: PickRay _pickRay; diff --git a/interface/src/raypick/StylusPointer.cpp b/interface/src/raypick/StylusPointer.cpp new file mode 100644 index 0000000000..4cc34f36d9 --- /dev/null +++ b/interface/src/raypick/StylusPointer.cpp @@ -0,0 +1,627 @@ +// +// Created by Bradley Austin Davis on 2017/10/24 +// Copyright 2013-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 +// +#include "StylusPointer.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Application.h" +#include "avatar/AvatarManager.h" +#include "avatar/MyAvatar.h" + +#include "scripting/HMDScriptingInterface.h" +#include "ui/overlays/Web3DOverlay.h" +#include "ui/overlays/Sphere3DOverlay.h" +#include "avatar/AvatarManager.h" +#include "InterfaceLogging.h" +#include "PickScriptingInterface.h" + +using namespace controller; +using namespace bilateral; + +static Setting::Handle USE_FINGER_AS_STYLUS("preferAvatarFingerOverStylus", false); +static const float WEB_STYLUS_LENGTH = 0.2f; +static const float WEB_TOUCH_Y_OFFSET = 0.105f; // how far forward (or back with a negative number) to slide stylus in hand +static const vec3 TIP_OFFSET{ 0.0f, WEB_STYLUS_LENGTH - WEB_TOUCH_Y_OFFSET, 0.0f }; +static const float TABLET_MIN_HOVER_DISTANCE = 0.01f; +static const float TABLET_MAX_HOVER_DISTANCE = 0.1f; +static const float TABLET_MIN_TOUCH_DISTANCE = -0.05f; +static const float TABLET_MAX_TOUCH_DISTANCE = TABLET_MIN_HOVER_DISTANCE; +static const float EDGE_BORDER = 0.075f; + +static const float HOVER_HYSTERESIS = 0.01f; +static const float NEAR_HYSTERESIS = 0.05f; +static const float TOUCH_HYSTERESIS = 0.002f; + +// triggered when stylus presses a web overlay/entity +static const float HAPTIC_STYLUS_STRENGTH = 1.0f; +static const float HAPTIC_STYLUS_DURATION = 20.0f; +static const float POINTER_PRESS_TO_MOVE_DELAY = 0.33f; // seconds + +static const float WEB_DISPLAY_STYLUS_DISTANCE = 0.5f; +static const float TOUCH_PRESS_TO_MOVE_DEADSPOT = 0.0481f; +static const float TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED = TOUCH_PRESS_TO_MOVE_DEADSPOT * TOUCH_PRESS_TO_MOVE_DEADSPOT; + +std::array STYLUSES; + +static OverlayID getHomeButtonID() { + return DependencyManager::get()->getCurrentHomeButtonID(); +} + +static OverlayID getTabletScreenID() { + return DependencyManager::get()->getCurrentTabletScreenID(); +} + +struct SideData { + QString avatarJoint; + QString cameraJoint; + controller::StandardPoseChannel channel; + controller::Hand hand; + vec3 grabPointSphereOffset; + + int getJointIndex(bool finger) { + const auto& jointName = finger ? avatarJoint : cameraJoint; + return DependencyManager::get()->getMyAvatar()->getJointIndex(jointName); + } +}; + +static const std::array SIDES{ { { "LeftHandIndex4", + "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", + StandardPoseChannel::LEFT_HAND, + Hand::LEFT, + { -0.04f, 0.13f, 0.039f } }, + { "RightHandIndex4", + "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND", + StandardPoseChannel::RIGHT_HAND, + Hand::RIGHT, + { 0.04f, 0.13f, 0.039f } } } }; + +static StylusTip getFingerWorldLocation(Side side) { + const auto& sideData = SIDES[index(side)]; + auto myAvatar = DependencyManager::get()->getMyAvatar(); + auto fingerJointIndex = myAvatar->getJointIndex(sideData.avatarJoint); + + if (-1 == fingerJointIndex) { + return StylusTip(); + } + + auto fingerPosition = myAvatar->getAbsoluteJointTranslationInObjectFrame(fingerJointIndex); + auto fingerRotation = myAvatar->getAbsoluteJointRotationInObjectFrame(fingerJointIndex); + auto avatarOrientation = myAvatar->getOrientation(); + auto avatarPosition = myAvatar->getPosition(); + StylusTip result; + result.side = side; + result.orientation = avatarOrientation * fingerRotation; + result.position = avatarPosition + (avatarOrientation * fingerPosition); + return result; +} + +// controllerWorldLocation is where the controller would be, in-world, with an added offset +static StylusTip getControllerWorldLocation(Side side, float sensorToWorldScale) { + static const std::array INPUTS{ { UserInputMapper::makeStandardInput(SIDES[0].channel), + UserInputMapper::makeStandardInput(SIDES[1].channel) } }; + const auto sideIndex = index(side); + const auto& input = INPUTS[sideIndex]; + + const auto pose = DependencyManager::get()->getPose(input); + const auto& valid = pose.valid; + StylusTip result; + if (valid) { + result.side = side; + const auto& sideData = SIDES[sideIndex]; + auto myAvatar = DependencyManager::get()->getMyAvatar(); + auto controllerJointIndex = myAvatar->getJointIndex(sideData.cameraJoint); + + const auto avatarOrientation = myAvatar->getOrientation(); + const auto avatarPosition = myAvatar->getPosition(); + result.orientation = avatarOrientation * myAvatar->getAbsoluteJointRotationInObjectFrame(controllerJointIndex); + result.position = + avatarPosition + (avatarOrientation * myAvatar->getAbsoluteJointTranslationInObjectFrame(controllerJointIndex)); + // add to the real position so the grab-point is out in front of the hand, a bit + result.position += result.orientation * (sideData.grabPointSphereOffset * sensorToWorldScale); + auto worldControllerPos = avatarPosition + avatarOrientation * pose.translation; + // compute tip velocity from hand controller motion, it is more accurate than computing it from previous positions. + auto worldControllerLinearVel = avatarOrientation * pose.velocity; + auto worldControllerAngularVel = avatarOrientation * pose.angularVelocity; + result.velocity = + worldControllerLinearVel + glm::cross(worldControllerAngularVel, result.position - worldControllerPos); + } + + return result; +} + +bool StylusPickResult::isNormalized() const { + return valid && (normalizedPosition == glm::clamp(normalizedPosition, vec3(0), vec3(1))); +} + +bool StylusPickResult::isNearNormal(float min, float max, float hystersis) const { + return valid && (distance == glm::clamp(distance, min - hystersis, max + hystersis)); +} + +bool StylusPickResult::isNear2D(float border, float hystersis) const { + return valid && position2D == glm::clamp(position2D, vec2(0) - border - hystersis, vec2(dimensions) + border + hystersis); +} + +bool StylusPickResult::isNear(float min, float max, float border, float hystersis) const { + // check to see if the projected stylusTip is within within the 2d border + return isNearNormal(min, max, hystersis) && isNear2D(border, hystersis); +} + +StylusPickResult::operator bool() const { + return valid; +} + +bool StylusPickResult::hasKeyboardFocus() const { + if (!overlayID.isNull()) { + return qApp->getOverlays().getKeyboardFocusOverlay() == overlayID; + } +#if 0 + if (!entityID.isNull()) { + return qApp->getKeyboardFocusEntity() == entityID; + } +#endif + return false; +} + +void StylusPickResult::setKeyboardFocus() const { + if (!overlayID.isNull()) { + qApp->getOverlays().setKeyboardFocusOverlay(overlayID); + qApp->setKeyboardFocusEntity(EntityItemID()); +#if 0 + } else if (!entityID.isNull()) { + qApp->getOverlays().setKeyboardFocusOverlay(OverlayID()); + qApp->setKeyboardFocusEntity(entityID); +#endif + } +} + +void StylusPickResult::sendHoverOverEvent() const { + if (!overlayID.isNull()) { + qApp->getOverlays().hoverOverOverlay(overlayID, PointerEvent{ PointerEvent::Move, deviceId(), position2D, position, + normal, -normal }); + } + // FIXME support entity +} + +void StylusPickResult::sendHoverEnterEvent() const { + if (!overlayID.isNull()) { + qApp->getOverlays().hoverEnterOverlay(overlayID, PointerEvent{ PointerEvent::Move, deviceId(), position2D, position, + normal, -normal }); + } + // FIXME support entity +} + +void StylusPickResult::sendTouchStartEvent() const { + if (!overlayID.isNull()) { + qApp->getOverlays().sendMousePressOnOverlay(overlayID, PointerEvent{ PointerEvent::Press, deviceId(), position2D, position, + normal, -normal, PointerEvent::PrimaryButton, + PointerEvent::PrimaryButton }); + } + // FIXME support entity +} + +void StylusPickResult::sendTouchEndEvent() const { + if (!overlayID.isNull()) { + qApp->getOverlays().sendMouseReleaseOnOverlay(overlayID, + PointerEvent{ PointerEvent::Release, deviceId(), position2D, position, normal, + -normal, PointerEvent::PrimaryButton }); + } + // FIXME support entity +} + +void StylusPickResult::sendTouchMoveEvent() const { + if (!overlayID.isNull()) { + qApp->getOverlays().sendMouseMoveOnOverlay(overlayID, PointerEvent{ PointerEvent::Move, deviceId(), position2D, position, + normal, -normal, PointerEvent::PrimaryButton, + PointerEvent::PrimaryButton }); + } + // FIXME support entity +} + +bool StylusPickResult::doesIntersect() const { + return true; +} + +// for example: if we want the closest result, compare based on distance +// if we want all results, combine them +// must return a new pointer +std::shared_ptr StylusPickResult::compareAndProcessNewResult(const std::shared_ptr& newRes) { + auto newStylusResult = std::static_pointer_cast(newRes); + if (newStylusResult && newStylusResult->distance < distance) { + return std::make_shared(*newStylusResult); + } else { + return std::make_shared(*this); + } +} + +// returns true if this result contains any valid results with distance < maxDistance +// can also filter out results with distance >= maxDistance +bool StylusPickResult::checkOrFilterAgainstMaxDistance(float maxDistance) { + return distance < maxDistance; +} + +uint32_t StylusPickResult::deviceId() const { + // 0 is reserved for hardware mouse + return index(tip.side) + 1; +} + +StylusPick::StylusPick(Side side) + : Pick(PickFilter(PickScriptingInterface::PICK_OVERLAYS()), FLT_MAX, true) + , _side(side) { +} + +StylusTip StylusPick::getMathematicalPick() const { + StylusTip result; + if (_useFingerInsteadOfStylus) { + result = getFingerWorldLocation(_side); + } else { + auto myAvatar = DependencyManager::get()->getMyAvatar(); + float sensorScaleFactor = myAvatar->getSensorToWorldScale(); + result = getControllerWorldLocation(_side, sensorScaleFactor); + result.position += result.orientation * (TIP_OFFSET * sensorScaleFactor); + } + return result; +} + +PickResultPointer StylusPick::getDefaultResult(const QVariantMap& pickVariant) const { + return std::make_shared(); +} + +PickResultPointer StylusPick::getEntityIntersection(const StylusTip& pick) { + return PickResultPointer(); +} + +PickResultPointer StylusPick::getOverlayIntersection(const StylusTip& pick) { + if (!getFilter().doesPickOverlays()) { + return PickResultPointer(); + } + + std::vector results; + for (const auto& target : getIncludeItems()) { + if (target.isNull()) { + continue; + } + + auto overlay = qApp->getOverlays().getOverlay(target); + // Don't interact with non-3D or invalid overlays + if (!overlay || !overlay->is3D()) { + continue; + } + + if (!overlay->getVisible() && !getFilter().doesPickInvisible()) { + continue; + } + + auto overlayType = overlay->getType(); + auto overlay3D = std::static_pointer_cast(overlay); + const auto overlayRotation = overlay3D->getRotation(); + const auto overlayPosition = overlay3D->getPosition(); + + StylusPickResult result; + result.tip = pick; + result.overlayID = target; + result.normal = overlayRotation * Vectors::UNIT_Z; + result.distance = glm::dot(pick.position - overlayPosition, result.normal); + result.position = pick.position - (result.normal * result.distance); + if (overlayType == Web3DOverlay::TYPE) { + result.dimensions = vec3(std::static_pointer_cast(overlay3D)->getSize(), 0.01f); + } else if (overlayType == Sphere3DOverlay::TYPE) { + result.dimensions = std::static_pointer_cast(overlay3D)->getDimensions(); + } else { + result.dimensions = vec3(0.01f); + } + auto tipRelativePosition = result.position - overlayPosition; + auto localPos = glm::inverse(overlayRotation) * tipRelativePosition; + auto normalizedPosition = localPos / result.dimensions; + result.normalizedPosition = normalizedPosition + 0.5f; + result.position2D = { result.normalizedPosition.x * result.dimensions.x, + (1.0f - result.normalizedPosition.y) * result.dimensions.y }; + result.valid = true; + results.push_back(result); + } + + StylusPickResult nearestTarget; + for (const auto& result : results) { + if (result && result.isNormalized() && result.distance < nearestTarget.distance) { + nearestTarget = result; + } + } + return std::make_shared(nearestTarget); +} + +PickResultPointer StylusPick::getAvatarIntersection(const StylusTip& pick) { + return PickResultPointer(); +} + +PickResultPointer StylusPick::getHUDIntersection(const StylusTip& pick) { + return PickResultPointer(); +} + +StylusPointer::StylusPointer(Side side) + : Pointer(DependencyManager::get()->addPick(PickQuery::Stylus, std::make_shared(side)), + false, + true) + , _side(side) + , _sideData(SIDES[index(side)]) { + setIncludeItems({ { getHomeButtonID(), getTabletScreenID() } }); + STYLUSES[index(_side)] = this; +} + +StylusPointer::~StylusPointer() { + if (!_stylusOverlay.isNull()) { + qApp->getOverlays().deleteOverlay(_stylusOverlay); + } + STYLUSES[index(_side)] = nullptr; +} + +StylusPointer* StylusPointer::getOtherStylus() { + return STYLUSES[((index(_side) + 1) % 2)]; +} + +void StylusPointer::enable() { + Parent::enable(); + withWriteLock([&] { _renderingEnabled = true; }); +} + +void StylusPointer::disable() { + Parent::disable(); + withWriteLock([&] { _renderingEnabled = false; }); +} + +void StylusPointer::updateStylusTarget() { + const float minNearDistance = TABLET_MIN_TOUCH_DISTANCE * _sensorScaleFactor; + const float maxNearDistance = WEB_DISPLAY_STYLUS_DISTANCE * _sensorScaleFactor; + const float edgeBorder = EDGE_BORDER * _sensorScaleFactor; + + auto pickResult = DependencyManager::get()->getPrevPickResultTyped(_pickUID); + + if (pickResult) { + _state.target = *pickResult; + float hystersis = 0.0f; + // If we're already near the target, add hystersis to ensure we don't rapidly toggle between near and not near + // but only for the current near target + if (_previousState.nearTarget && pickResult->overlayID == _previousState.target.overlayID) { + hystersis = _nearHysteresis; + } + _state.nearTarget = pickResult->isNear(minNearDistance, maxNearDistance, edgeBorder, hystersis); + } + + // Not near anything, short circuit the rest + if (!_state.nearTarget) { + relinquishTouchFocus(); + hide(); + return; + } + + show(); + + auto minTouchDistance = TABLET_MIN_TOUCH_DISTANCE * _sensorScaleFactor; + auto maxTouchDistance = TABLET_MAX_TOUCH_DISTANCE * _sensorScaleFactor; + auto maxHoverDistance = TABLET_MAX_HOVER_DISTANCE * _sensorScaleFactor; + + float hystersis = 0.0f; + if (_previousState.nearTarget && _previousState.target.overlayID == _previousState.target.overlayID) { + hystersis = _nearHysteresis; + } + + // If we're in hover distance (calculated as the normal distance from the XY plane of the overlay) + if ((getOtherStylus() && getOtherStylus()->_state.touchingTarget) || !_state.target.isNearNormal(minTouchDistance, maxHoverDistance, hystersis)) { + relinquishTouchFocus(); + return; + } + + requestTouchFocus(_state.target); + + if (!_state.target.hasKeyboardFocus()) { + _state.target.setKeyboardFocus(); + } + + if (hasTouchFocus(_state.target) && !_previousState.touchingTarget) { + _state.target.sendHoverOverEvent(); + } + + hystersis = 0.0f; + if (_previousState.touchingTarget && _previousState.target.overlayID == _state.target.overlayID) { + hystersis = _touchHysteresis; + } + + // If we're in touch distance + if (_state.target.isNearNormal(minTouchDistance, maxTouchDistance, _touchHysteresis) && _state.target.isNormalized()) { + _state.touchingTarget = true; + } +} + +void StylusPointer::update(float deltaTime) { + // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts + withReadLock([&] { + auto myAvatar = DependencyManager::get()->getMyAvatar(); + + // Store and reset the state + { + _previousState = _state; + _state = State(); + } + +#if 0 + // Update finger as stylus setting + { + useFingerInsteadOfStylus = (USE_FINGER_AS_STYLUS.get() && myAvatar->getJointIndex(sideData.avatarJoint) != -1); + } +#endif + + // Update scale factor + { + _sensorScaleFactor = myAvatar->getSensorToWorldScale(); + _hoverHysteresis = HOVER_HYSTERESIS * _sensorScaleFactor; + _nearHysteresis = NEAR_HYSTERESIS * _sensorScaleFactor; + _touchHysteresis = TOUCH_HYSTERESIS * _sensorScaleFactor; + } + + // Identify the current near or touching target + updateStylusTarget(); + + // If we stopped touching, or if the target overlay ID changed, send a touching exit to the previous touch target + if (_previousState.touchingTarget && + (!_state.touchingTarget || _state.target.overlayID != _previousState.target.overlayID)) { + stylusTouchingExit(); + } + + // Handle new or continuing touch + if (_state.touchingTarget) { + // If we were previously not touching, or we were touching a different overlay, add a touch enter + if (!_previousState.touchingTarget || _previousState.target.overlayID != _state.target.overlayID) { + stylusTouchingEnter(); + } else { + _touchingEnterTimer += deltaTime; + } + + stylusTouching(); + } + }); + + setIncludeItems({ { getHomeButtonID(), getTabletScreenID() } }); +} + +void StylusPointer::show() { + if (!_stylusOverlay.isNull()) { + return; + } + + auto myAvatar = DependencyManager::get()->getMyAvatar(); + // FIXME perhaps instantiate a stylus and use show / hide instead of create / destroy + // however, the current design doesn't really allow for this because it assumes that + // hide / show are idempotent and low cost, but constantly querying the visibility + QVariantMap overlayProperties; + overlayProperties["name"] = "stylus"; + overlayProperties["url"] = PathUtils::resourcesPath() + "/meshes/tablet-stylus-fat.fbx"; + overlayProperties["loadPriority"] = 10.0f; + overlayProperties["dimensions"] = vec3toVariant(_sensorScaleFactor * vec3(0.01f, 0.01f, WEB_STYLUS_LENGTH)); + overlayProperties["solid"] = true; + overlayProperties["visible"] = true; + overlayProperties["ignoreRayIntersection"] = true; + overlayProperties["drawInFront"] = false; + overlayProperties["parentID"] = AVATAR_SELF_ID; + overlayProperties["parentJointIndex"] = myAvatar->getJointIndex(_sideData.cameraJoint); + + static const glm::quat X_ROT_NEG_90{ 0.70710678f, -0.70710678f, 0.0f, 0.0f }; + auto modelOrientation = _state.target.tip.orientation * X_ROT_NEG_90; + auto modelPositionOffset = modelOrientation * (vec3(0.0f, 0.0f, -WEB_STYLUS_LENGTH / 2.0f) * _sensorScaleFactor); + overlayProperties["position"] = vec3toVariant(_state.target.tip.position + modelPositionOffset); + overlayProperties["rotation"] = quatToVariant(modelOrientation); + _stylusOverlay = qApp->getOverlays().addOverlay("model", overlayProperties); +} + +void StylusPointer::hide() { + if (_stylusOverlay.isNull()) { + return; + } + + qApp->getOverlays().deleteOverlay(_stylusOverlay); + _stylusOverlay = OverlayID(); +} +#if 0 + void pointFinger(bool value) { + static const QString HIFI_POINT_INDEX_MESSAGE_CHANNEL = "Hifi-Point-Index"; + static const std::array KEYS{ { "pointLeftIndex", "pointLeftIndex" } }; + if (fingerPointing != value) { + QString message = QJsonDocument(QJsonObject{ { KEYS[index(side)], value } }).toJson(); + DependencyManager::get()->sendMessage(HIFI_POINT_INDEX_MESSAGE_CHANNEL, message); + fingerPointing = value; + } + } +#endif +void StylusPointer::requestTouchFocus(const StylusPickResult& pickResult) { + if (!pickResult) { + return; + } + // send hover events to target if we can. + // record the entity or overlay we are hovering over. + if (!pickResult.overlayID.isNull() && pickResult.overlayID != _hoverOverlay && + getOtherStylus() && pickResult.overlayID != getOtherStylus()->_hoverOverlay) { + _hoverOverlay = pickResult.overlayID; + pickResult.sendHoverEnterEvent(); + } +} + +bool StylusPointer::hasTouchFocus(const StylusPickResult& pickResult) { + return (!pickResult.overlayID.isNull() && pickResult.overlayID == _hoverOverlay); +} + +void StylusPointer::relinquishTouchFocus() { + // send hover leave event. + if (!_hoverOverlay.isNull()) { + PointerEvent pointerEvent{ PointerEvent::Move, (uint32_t)(index(_side) + 1) }; + auto& overlays = qApp->getOverlays(); + overlays.sendMouseMoveOnOverlay(_hoverOverlay, pointerEvent); + overlays.sendHoverOverOverlay(_hoverOverlay, pointerEvent); + overlays.sendHoverLeaveOverlay(_hoverOverlay, pointerEvent); + _hoverOverlay = OverlayID(); + } +}; + +void StylusPointer::stealTouchFocus() { + // send hover events to target + if (getOtherStylus() && _state.target.overlayID == getOtherStylus()->_hoverOverlay) { + getOtherStylus()->relinquishTouchFocus(); + } + requestTouchFocus(_state.target); +} + +void StylusPointer::stylusTouchingEnter() { + stealTouchFocus(); + _state.target.sendTouchStartEvent(); + DependencyManager::get()->triggerHapticPulse(HAPTIC_STYLUS_STRENGTH, HAPTIC_STYLUS_DURATION, + _sideData.hand); + _touchingEnterTimer = 0; + _touchingEnterPosition = _state.target.position2D; + _deadspotExpired = false; +} + +void StylusPointer::stylusTouchingExit() { + if (!_previousState.target) { + return; + } + + // special case to handle home button. + if (_previousState.target.overlayID == getHomeButtonID()) { + DependencyManager::get()->sendLocalMessage("home", _previousState.target.overlayID.toString()); + } + + // send touch end event + _state.target.sendTouchEndEvent(); +} + +void StylusPointer::stylusTouching() { + qDebug() << "QQQ " << __FUNCTION__; + if (_state.target.overlayID.isNull()) { + return; + } + + if (!_deadspotExpired) { + _deadspotExpired = + (_touchingEnterTimer > POINTER_PRESS_TO_MOVE_DELAY) || + glm::distance2(_state.target.position2D, _touchingEnterPosition) > TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED; + } + + // Only send moves if the target moves more than the deadspot position or if we've timed out the deadspot + if (_deadspotExpired) { + _state.target.sendTouchMoveEvent(); + } +} diff --git a/interface/src/raypick/StylusPointer.h b/interface/src/raypick/StylusPointer.h new file mode 100644 index 0000000000..7e67a7398e --- /dev/null +++ b/interface/src/raypick/StylusPointer.h @@ -0,0 +1,145 @@ +// +// Created by Bradley Austin Davis on 2017/10/24 +// Copyright 2013-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 +// +#ifndef hifi_StylusPointer_h +#define hifi_StylusPointer_h + +#include +#include + +#include +#include +#include +#include +#include + +#include "ui/overlays/Overlay.h" + + +class StylusPick : public Pick { + using Side = bilateral::Side; +public: + StylusPick(Side side); + + StylusTip getMathematicalPick() const override; + PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override; + PickResultPointer getEntityIntersection(const StylusTip& pick) override; + PickResultPointer getOverlayIntersection(const StylusTip& pick) override; + PickResultPointer getAvatarIntersection(const StylusTip& pick) override; + PickResultPointer getHUDIntersection(const StylusTip& pick) override; + +private: + const Side _side; + const bool _useFingerInsteadOfStylus{ false }; +}; + +struct SideData; + +struct StylusPickResult : public PickResult { + using Side = bilateral::Side; + // FIXME make into a single ID + OverlayID overlayID; + // FIXME restore entity functionality +#if 0 + EntityItemID entityID; +#endif + StylusTip tip; + float distance{ FLT_MAX }; + vec3 position; + vec2 position2D; + vec3 normal; + vec3 normalizedPosition; + vec3 dimensions; + bool valid{ false }; + + virtual bool doesIntersect() const override; + virtual std::shared_ptr compareAndProcessNewResult(const std::shared_ptr& newRes) override; + virtual bool checkOrFilterAgainstMaxDistance(float maxDistance) override; + + bool isNormalized() const; + bool isNearNormal(float min, float max, float hystersis) const; + bool isNear2D(float border, float hystersis) const; + bool isNear(float min, float max, float border, float hystersis) const; + operator bool() const; + bool hasKeyboardFocus() const; + void setKeyboardFocus() const; + void sendHoverOverEvent() const; + void sendHoverEnterEvent() const; + void sendTouchStartEvent() const; + void sendTouchEndEvent() const; + void sendTouchMoveEvent() const; + +private: + uint32_t deviceId() const; +}; + + +class StylusPointer : public Pointer { + using Parent = Pointer; + using Side = bilateral::Side; + using Ptr = std::shared_ptr; + +public: + StylusPointer(Side side); + ~StylusPointer(); + + void enable() override; + void disable() override; + void update(float deltaTime) override; + +private: + + virtual void setRenderState(const std::string& state) override {} + virtual void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) override {} + virtual PickedObject getHoveredObject(const PickResultPointer& pickResult) override { return PickedObject(); } + virtual Buttons getPressedButtons() override { return {}; } + virtual PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const override { return PointerEvent(); } + + + StylusPointer* getOtherStylus(); + + void updateStylusTarget(); + void requestTouchFocus(const StylusPickResult& pickResult); + bool hasTouchFocus(const StylusPickResult& pickResult); + void relinquishTouchFocus(); + void stealTouchFocus(); + void stylusTouchingEnter(); + void stylusTouchingExit(); + void stylusTouching(); + void show(); + void hide(); + + struct State { + StylusPickResult target; + bool nearTarget{ false }; + bool touchingTarget{ false }; + }; + + State _state; + State _previousState; + + float _nearHysteresis{ 0.0f }; + float _touchHysteresis{ 0.0f }; + float _hoverHysteresis{ 0.0f }; + + float _sensorScaleFactor{ 1.0f }; + float _touchingEnterTimer{ 0 }; + vec2 _touchingEnterPosition; + bool _deadspotExpired{ false }; + + bool _renderingEnabled; + OverlayID _stylusOverlay; + OverlayID _hoverOverlay; + const Side _side; + const SideData& _sideData; +}; + +#endif // hifi_StylusPointer_h + + + + diff --git a/libraries/pointers/src/pointers/Pick.h b/libraries/pointers/src/pointers/Pick.h index 9ab17f87d8..791238d601 100644 --- a/libraries/pointers/src/pointers/Pick.h +++ b/libraries/pointers/src/pointers/Pick.h @@ -118,7 +118,7 @@ public: // for example: if we want the closest result, compare based on distance // if we want all results, combine them // must return a new pointer - virtual std::shared_ptr compareAndProcessNewResult(const std::shared_ptr newRes) = 0; + virtual std::shared_ptr compareAndProcessNewResult(const std::shared_ptr& newRes) = 0; // returns true if this result contains any valid results with distance < maxDistance // can also filter out results with distance >= maxDistance @@ -198,7 +198,7 @@ class Pick : public PickQuery { public: Pick(const PickFilter& filter, const float maxDistance, const bool enabled) : PickQuery(filter, maxDistance, enabled) {} - virtual const T getMathematicalPick() const = 0; + virtual T getMathematicalPick() const = 0; virtual PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const = 0; virtual PickResultPointer getEntityIntersection(const T& pick) = 0; virtual PickResultPointer getOverlayIntersection(const T& pick) = 0; diff --git a/libraries/pointers/src/pointers/PickCacheOptimizer.h b/libraries/pointers/src/pointers/PickCacheOptimizer.h index c4bf96ab51..58c3ac9098 100644 --- a/libraries/pointers/src/pointers/PickCacheOptimizer.h +++ b/libraries/pointers/src/pointers/PickCacheOptimizer.h @@ -87,7 +87,9 @@ void PickCacheOptimizer::update(QHash>& pic PickCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { PickResultPointer entityRes = pick->getEntityIntersection(mathematicalPick); - cacheResult(entityRes->doesIntersect(), entityRes, entityKey, res, mathematicalPick, results, pick); + if (entityRes) { + cacheResult(entityRes->doesIntersect(), entityRes, entityKey, res, mathematicalPick, results, pick); + } } } @@ -95,7 +97,9 @@ void PickCacheOptimizer::update(QHash>& pic PickCacheKey overlayKey = { pick->getFilter().getOverlayFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, overlayKey)) { PickResultPointer overlayRes = pick->getOverlayIntersection(mathematicalPick); - cacheResult(overlayRes->doesIntersect(), overlayRes, overlayKey, res, mathematicalPick, results, pick); + if (overlayRes) { + cacheResult(overlayRes->doesIntersect(), overlayRes, overlayKey, res, mathematicalPick, results, pick); + } } } @@ -103,7 +107,9 @@ void PickCacheOptimizer::update(QHash>& pic PickCacheKey avatarKey = { pick->getFilter().getAvatarFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, avatarKey)) { PickResultPointer avatarRes = pick->getAvatarIntersection(mathematicalPick); - cacheResult(avatarRes->doesIntersect(), avatarRes, avatarKey, res, mathematicalPick, results, pick); + if (avatarRes) { + cacheResult(avatarRes->doesIntersect(), avatarRes, avatarKey, res, mathematicalPick, results, pick); + } } } @@ -112,7 +118,9 @@ void PickCacheOptimizer::update(QHash>& pic PickCacheKey hudKey = { pick->getFilter().getHUDFlags(), QVector(), QVector() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, hudKey)) { PickResultPointer hudRes = pick->getHUDIntersection(mathematicalPick); - cacheResult(true, hudRes, hudKey, res, mathematicalPick, results, pick); + if (hudRes) { + cacheResult(true, hudRes, hudKey, res, mathematicalPick, results, pick); + } } } diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp index 571f9f04cd..385115d732 100644 --- a/libraries/pointers/src/pointers/PickManager.cpp +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -40,12 +40,12 @@ void PickManager::removePick(const QUuid& uid) { }); } -QVariantMap PickManager::getPrevPickResult(const QUuid& uid) const { +PickResultPointer PickManager::getPrevPickResult(const QUuid& uid) const { auto pick = findPick(uid); - if (pick && pick->getPrevPickResult()) { - return pick->getPrevPickResult()->toVariantMap(); + if (pick) { + return pick->getPrevPickResult(); } - return QVariantMap(); + return PickResultPointer(); } void PickManager::enablePick(const QUuid& uid) const { @@ -91,4 +91,5 @@ void PickManager::update() { bool shouldPickHUD = _shouldPickHUDOperator(); _rayPickCacheOptimizer.update(cachedPicks[PickQuery::Ray], shouldPickHUD); + _stylusPickCacheOptimizer.update(cachedPicks[PickQuery::Stylus], false); } \ No newline at end of file diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index b8abb077c7..5c3ed6ef25 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -27,7 +27,12 @@ public: void enablePick(const QUuid& uid) const; void disablePick(const QUuid& uid) const; - QVariantMap getPrevPickResult(const QUuid& uid) const; + PickResultPointer getPrevPickResult(const QUuid& uid) const; + + template + std::shared_ptr getPrevPickResultTyped(const QUuid& uid) const { + return std::static_pointer_cast(getPrevPickResult(uid)); + } void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; void setIgnoreItems(const QUuid& uid, const QVector& ignore) const; @@ -43,6 +48,7 @@ protected: QHash _typeMap; PickCacheOptimizer _rayPickCacheOptimizer; + PickCacheOptimizer _stylusPickCacheOptimizer; }; #endif // hifi_PickManager_h \ No newline at end of file diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 8796b1e47d..8551f29dd9 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -30,7 +30,7 @@ void Pointer::disable() { DependencyManager::get()->disablePick(_pickUID); } -const QVariantMap Pointer::getPrevPickResult() { +PickResultPointer Pointer::getPrevPickResult() { return DependencyManager::get()->getPrevPickResult(_pickUID); } @@ -46,16 +46,16 @@ void Pointer::setIncludeItems(const QVector& includeItems) const { DependencyManager::get()->setIncludeItems(_pickUID, includeItems); } -void Pointer::update() { +void Pointer::update(float deltaTime) { // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts withReadLock([&] { - QVariantMap pickResult = getPrevPickResult(); + auto pickResult = getPrevPickResult(); updateVisuals(pickResult); generatePointerEvents(pickResult); }); } -void Pointer::generatePointerEvents(const QVariantMap& pickResult) { +void Pointer::generatePointerEvents(const PickResultPointer& pickResult) { // TODO: avatars/HUD? auto pointerManager = DependencyManager::get(); @@ -176,4 +176,4 @@ PointerEvent::Button Pointer::chooseButton(const std::string& button) { } else { return PointerEvent::NoButtons; } -} \ No newline at end of file +} diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index ca35c38c7a..fa09442c83 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -16,6 +16,7 @@ #include #include +#include "Pick.h" #include #include "PointerEvent.h" @@ -44,7 +45,7 @@ public: virtual void enable(); virtual void disable(); - virtual const QVariantMap getPrevPickResult(); + virtual PickResultPointer getPrevPickResult(); virtual void setRenderState(const std::string& state) = 0; virtual void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) = 0; @@ -57,13 +58,12 @@ public: virtual void setLength(float length) {} virtual void setLockEndUUID(const QUuid& objectID, bool isOverlay) {} - void update(); - virtual void updateVisuals(const QVariantMap& pickResult) = 0; - void generatePointerEvents(const QVariantMap& pickResult); + virtual void update(float deltaTime); + virtual void updateVisuals(const PickResultPointer& pickResult) {} + void generatePointerEvents(const PickResultPointer& pickResult); struct PickedObject { - PickedObject() {} - PickedObject(const QUuid& objectID, IntersectionType type) : objectID(objectID), type(type) {} + PickedObject(const QUuid& objectID = QUuid(), IntersectionType type = IntersectionType::NONE) : objectID(objectID), type(type) {} QUuid objectID; IntersectionType type; @@ -71,7 +71,7 @@ public: using Buttons = std::unordered_set; - virtual PickedObject getHoveredObject(const QVariantMap& pickResult) = 0; + virtual PickedObject getHoveredObject(const PickResultPointer& pickResult) = 0; virtual Buttons getPressedButtons() = 0; QUuid getRayUID() { return _pickUID; } @@ -81,7 +81,7 @@ protected: bool _enabled; bool _hover; - virtual PointerEvent buildPointerEvent(const PickedObject& target, const QVariantMap& pickResult) const = 0; + virtual PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const = 0; private: PickedObject _prevHoveredObject; diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index 2d41543b6b..cd1273900d 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -61,21 +61,22 @@ void PointerManager::editRenderState(const QUuid& uid, const std::string& state, } } -const QVariantMap PointerManager::getPrevPickResult(const QUuid& uid) const { +PickResultPointer PointerManager::getPrevPickResult(const QUuid& uid) const { + PickResultPointer result; auto pointer = find(uid); if (pointer) { - return pointer->getPrevPickResult(); + result = pointer->getPrevPickResult(); } - return QVariantMap(); + return result; } -void PointerManager::update() { +void PointerManager::update(float deltaTime) { auto cachedPointers = resultWithReadLock>>([&] { return _pointers.values(); }); for (const auto& pointer : cachedPointers) { - pointer->update(); + pointer->update(deltaTime); } } diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index 9f477d9eb2..a9c0a47b17 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -29,7 +29,7 @@ public: void disablePointer(const QUuid& uid) const; void setRenderState(const QUuid& uid, const std::string& renderState) const; void editRenderState(const QUuid& uid, const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) const; - const QVariantMap getPrevPickResult(const QUuid& uid) const; + PickResultPointer getPrevPickResult(const QUuid& uid) const; void setPrecisionPicking(const QUuid& uid, bool precisionPicking) const; void setIgnoreItems(const QUuid& uid, const QVector& ignoreEntities) const; @@ -38,7 +38,7 @@ public: void setLength(const QUuid& uid, float length) const; void setLockEndUUID(const QUuid& uid, const QUuid& objectID, bool isOverlay) const; - void update(); + void update(float deltaTime); private: std::shared_ptr find(const QUuid& uid) const; diff --git a/libraries/script-engine/src/ScriptCache.cpp b/libraries/script-engine/src/ScriptCache.cpp index dba2db0458..8e3cebfbf2 100644 --- a/libraries/script-engine/src/ScriptCache.cpp +++ b/libraries/script-engine/src/ScriptCache.cpp @@ -69,6 +69,7 @@ void ScriptCache::getScriptContents(const QString& scriptOrURL, contentAvailable #ifdef THREAD_DEBUGGING qCDebug(scriptengine) << "ScriptCache::getScriptContents() on thread [" << QThread::currentThread() << "] expected thread [" << thread() << "]"; #endif + forceDownload = true; QUrl unnormalizedURL(scriptOrURL); QUrl url = DependencyManager::get()->normalizeURL(unnormalizedURL); diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index 074e5ab79b..73e37c7509 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -37,9 +37,9 @@ public: PointerEvent(); PointerEvent(EventType type, uint32_t id, - const glm::vec2& pos2D, const glm::vec3& pos3D, - const glm::vec3& normal, const glm::vec3& direction, - Button button, uint32_t buttons = NoButtons, Qt::KeyboardModifiers keyboardModifiers = Qt::KeyboardModifier::NoModifier); + const glm::vec2& pos2D = glm::vec2(), const glm::vec3& pos3D = glm::vec3(), + const glm::vec3& normal = glm::vec3(), const glm::vec3& direction = glm::vec3(), + Button button = NoButtons, uint32_t buttons = NoButtons, Qt::KeyboardModifiers keyboardModifiers = Qt::KeyboardModifier::NoModifier); static QScriptValue toScriptValue(QScriptEngine* engine, const PointerEvent& event); static void fromScriptValue(const QScriptValue& object, PointerEvent& event); diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index a716c9231e..c4ac7aba14 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -21,6 +21,7 @@ #include "AACube.h" #include "SharedUtil.h" +#include "shared/Bilateral.h" class QColor; class QUrl; @@ -152,17 +153,73 @@ public: return pickRay; } }; + +struct StylusTip : public MathPick { + bilateral::Side side{ bilateral::Side::Invalid }; + glm::vec3 position; + glm::quat orientation; + glm::vec3 velocity; + virtual operator bool() const override { return side != bilateral::Side::Invalid; } + QVariantMap toVariantMap() const override { + QVariantMap pickRay; + pickRay["position"] = vec3toVariant(position); + pickRay["orientation"] = quatToVariant(orientation); + pickRay["velocity"] = vec3toVariant(velocity); + return pickRay; + } +}; + + namespace std { + inline void hash_combine(std::size_t& seed) { } + + template + inline void hash_combine(std::size_t& seed, const T& v, Rest... rest) { + std::hash hasher; + seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2); + hash_combine(seed, rest...); + } + template <> - struct hash { - size_t operator()(const glm::vec3& a) const { - return ((hash()(a.x) ^ (hash()(a.y) << 1)) >> 1) ^ (hash()(a.z) << 1); + struct hash { + size_t operator()(const bilateral::Side& a) const { + return std::hash()((int)a); } }; - template <> + + template <> + struct hash { + size_t operator()(const glm::vec3& a) const { + size_t result = 0; + hash_combine(result, a.x, a.y, a.z); + return result; + } + }; + + template <> + struct hash { + size_t operator()(const glm::quat& a) const { + size_t result = 0; + hash_combine(result, a.x, a.y, a.z, a.w); + return result; + } + }; + + template <> struct hash { size_t operator()(const PickRay& a) const { - return (hash()(a.origin) ^ (hash()(a.direction) << 1)); + size_t result = 0; + hash_combine(result, a.origin, a.direction); + return result; + } + }; + + template <> + struct hash { + size_t operator()(const StylusTip& a) const { + size_t result = 0; + hash_combine(result, a.side, a.position, a.orientation, a.velocity); + return result; } }; } diff --git a/libraries/shared/src/shared/Bilateral.h b/libraries/shared/src/shared/Bilateral.h index edcaa49540..1ecc7f3d48 100644 --- a/libraries/shared/src/shared/Bilateral.h +++ b/libraries/shared/src/shared/Bilateral.h @@ -11,7 +11,8 @@ namespace bilateral { enum class Side { Left = 0, - Right = 1 + Right = 1, + Invalid = -1 }; using Indices = Side; @@ -27,8 +28,10 @@ namespace bilateral { return 0x01; case Side::Right: return 0x02; + default: + break; } - return std::numeric_limits::max(); + return 0x00; } inline uint8_t index(Side side) { @@ -37,10 +40,24 @@ namespace bilateral { return 0; case Side::Right: return 1; + default: + break; } return std::numeric_limits::max(); } + inline Side side(int index) { + switch (index) { + case 0: + return Side::Left; + case 1: + return Side::Right; + default: + break; + } + return Side::Invalid; + } + template void for_each_side(F f) { f(Side::Left); diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 1243ed28e2..61e520af21 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -32,7 +32,7 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/tablet-ui/tabletUI.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ - //"system/controllers/controllerScripts.js" + "system/controllers/controllerScripts.js" // "system/chat.js" ]; diff --git a/scripts/system/controllers/controllerModules/tabletStylusInput.js b/scripts/system/controllers/controllerModules/tabletStylusInput.js index 46b630d023..dc41a5453e 100644 --- a/scripts/system/controllers/controllerModules/tabletStylusInput.js +++ b/scripts/system/controllers/controllerModules/tabletStylusInput.js @@ -16,256 +16,16 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Script.include("/~/system/libraries/controllers.js"); (function() { - var TouchEventUtils = Script.require("/~/system/libraries/touchEventUtils.js"); - // triggered when stylus presses a web overlay/entity - var HAPTIC_STYLUS_STRENGTH = 1.0; - var HAPTIC_STYLUS_DURATION = 20.0; - - var WEB_DISPLAY_STYLUS_DISTANCE = 0.5; - var WEB_STYLUS_LENGTH = 0.2; - var WEB_TOUCH_Y_OFFSET = 0.105; // how far forward (or back with a negative number) to slide stylus in hand - - function isNearStylusTarget(stylusTargets, edgeBorder, minNormalDistance, maxNormalDistance) { - for (var i = 0; i < stylusTargets.length; i++) { - var stylusTarget = stylusTargets[i]; - - // check to see if the projected stylusTip is within within the 2d border - var borderMin = {x: -edgeBorder, y: -edgeBorder}; - var borderMax = {x: stylusTarget.dimensions.x + edgeBorder, y: stylusTarget.dimensions.y + edgeBorder}; - if (stylusTarget.distance >= minNormalDistance && stylusTarget.distance <= maxNormalDistance && - stylusTarget.position2D.x >= borderMin.x && stylusTarget.position2D.y >= borderMin.y && - stylusTarget.position2D.x <= borderMax.x && stylusTarget.position2D.y <= borderMax.y) { - return true; - } - } - return false; - } - - function calculateNearestStylusTarget(stylusTargets) { - var nearestStylusTarget; - - for (var i = 0; i < stylusTargets.length; i++) { - var stylusTarget = stylusTargets[i]; - - if ((!nearestStylusTarget || stylusTarget.distance < nearestStylusTarget.distance) && - stylusTarget.normalizedPosition.x >= 0 && stylusTarget.normalizedPosition.y >= 0 && - stylusTarget.normalizedPosition.x <= 1 && stylusTarget.normalizedPosition.y <= 1) { - nearestStylusTarget = stylusTarget; - } - } - - return nearestStylusTarget; - } - - function getFingerWorldLocation(hand) { - var fingerJointName = (hand === RIGHT_HAND) ? "RightHandIndex4" : "LeftHandIndex4"; - - var fingerJointIndex = MyAvatar.getJointIndex(fingerJointName); - var fingerPosition = MyAvatar.getAbsoluteJointTranslationInObjectFrame(fingerJointIndex); - var fingerRotation = MyAvatar.getAbsoluteJointRotationInObjectFrame(fingerJointIndex); - var worldFingerRotation = Quat.multiply(MyAvatar.orientation, fingerRotation); - var worldFingerPosition = Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, fingerPosition)); - - return { - position: worldFingerPosition, - orientation: worldFingerRotation, - rotation: worldFingerRotation, - valid: true - }; - } - - function distance2D(a, b) { - var dx = (a.x - b.x); - var dy = (a.y - b.y); - return Math.sqrt(dx * dx + dy * dy); - } - - function TabletStylusInput(hand) { + function TabletStylusInput(hand) { this.hand = hand; - this.previousStylusTouchingTarget = false; - this.stylusTouchingTarget = false; - - this.useFingerInsteadOfStylus = false; - this.fingerPointing = false; - - // initialize stylus tip - var DEFAULT_STYLUS_TIP = { - position: {x: 0, y: 0, z: 0}, - orientation: {x: 0, y: 0, z: 0, w: 0}, - rotation: {x: 0, y: 0, z: 0, w: 0}, - velocity: {x: 0, y: 0, z: 0}, - valid: false - }; - this.stylusTip = DEFAULT_STYLUS_TIP; - this.parameters = makeDispatcherModuleParameters( 100, this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], [], 100); - - this.getOtherHandController = function() { - return (this.hand === RIGHT_HAND) ? leftTabletStylusInput : rightTabletStylusInput; - }; - - this.handToController = function() { - return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; - }; - - this.updateFingerAsStylusSetting = function () { - var DEFAULT_USE_FINGER_AS_STYLUS = false; - var USE_FINGER_AS_STYLUS = Settings.getValue("preferAvatarFingerOverStylus"); - if (USE_FINGER_AS_STYLUS === "") { - USE_FINGER_AS_STYLUS = DEFAULT_USE_FINGER_AS_STYLUS; - } - if (USE_FINGER_AS_STYLUS && MyAvatar.getJointIndex("LeftHandIndex4") !== -1) { - this.useFingerInsteadOfStylus = true; - } else { - this.useFingerInsteadOfStylus = false; - } - }; - - this.updateStylusTip = function() { - if (this.useFingerInsteadOfStylus) { - this.stylusTip = getFingerWorldLocation(this.hand); - } else { - this.stylusTip = getControllerWorldLocation(this.handToController(), true); - - // translate tip forward according to constant. - var TIP_OFFSET = Vec3.multiply(MyAvatar.sensorToWorldScale, {x: 0, y: WEB_STYLUS_LENGTH - WEB_TOUCH_Y_OFFSET, z: 0}); - this.stylusTip.position = Vec3.sum(this.stylusTip.position, - Vec3.multiplyQbyV(this.stylusTip.orientation, TIP_OFFSET)); - } - - // compute tip velocity from hand controller motion, it is more accurate than computing it from previous positions. - var pose = Controller.getPoseValue(this.handToController()); - if (pose.valid) { - var worldControllerPos = Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, pose.translation)); - var worldControllerLinearVel = Vec3.multiplyQbyV(MyAvatar.orientation, pose.velocity); - var worldControllerAngularVel = Vec3.multiplyQbyV(MyAvatar.orientation, pose.angularVelocity); - var tipVelocity = Vec3.sum(worldControllerLinearVel, Vec3.cross(worldControllerAngularVel, - Vec3.subtract(this.stylusTip.position, worldControllerPos))); - this.stylusTip.velocity = tipVelocity; - } else { - this.stylusTip.velocity = {x: 0, y: 0, z: 0}; - } - }; - - this.showStylus = function() { - if (this.stylus) { - var X_ROT_NEG_90 = { x: -0.70710678, y: 0, z: 0, w: 0.70710678 }; - var modelOrientation = Quat.multiply(this.stylusTip.orientation, X_ROT_NEG_90); - var modelOrientationAngles = Quat.safeEulerAngles(modelOrientation); - - var rotation = Overlays.getProperty(this.stylus, "rotation"); - var rotationAngles = Quat.safeEulerAngles(rotation); - - if(!Vec3.withinEpsilon(modelOrientationAngles, rotationAngles, 1)) { - var modelPositionOffset = Vec3.multiplyQbyV(modelOrientation, { x: 0, y: 0, z: MyAvatar.sensorToWorldScale * -WEB_STYLUS_LENGTH / 2 }); - - var updatedStylusProperties = { - position: Vec3.sum(this.stylusTip.position, modelPositionOffset), - rotation: modelOrientation, - dimensions: Vec3.multiply(MyAvatar.sensorToWorldScale, { x: 0.01, y: 0.01, z: WEB_STYLUS_LENGTH }), - }; - - Overlays.editOverlay(this.stylus, updatedStylusProperties); - } - - return; - } - - var X_ROT_NEG_90 = { x: -0.70710678, y: 0, z: 0, w: 0.70710678 }; - var modelOrientation = Quat.multiply(this.stylusTip.orientation, X_ROT_NEG_90); - var modelPositionOffset = Vec3.multiplyQbyV(modelOrientation, { x: 0, y: 0, z: MyAvatar.sensorToWorldScale * -WEB_STYLUS_LENGTH / 2 }); - - var stylusProperties = { - name: "stylus", - url: Script.resourcesPath() + "meshes/tablet-stylus-fat.fbx", - loadPriority: 10.0, - position: Vec3.sum(this.stylusTip.position, modelPositionOffset), - rotation: modelOrientation, - dimensions: Vec3.multiply(MyAvatar.sensorToWorldScale, { x: 0.01, y: 0.01, z: WEB_STYLUS_LENGTH }), - solid: true, - visible: true, - ignoreRayIntersection: true, - drawInFront: false, - parentID: MyAvatar.SELF_ID, - parentJointIndex: MyAvatar.getJointIndex(this.hand === RIGHT_HAND ? - "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND" : - "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND") - }; - this.stylus = Overlays.addOverlay("model", stylusProperties); - }; - - this.hideStylus = function() { - if (!this.stylus) { - return; - } - Overlays.deleteOverlay(this.stylus); - this.stylus = null; - }; - - this.stealTouchFocus = function(stylusTarget) { - // send hover events to target - // record the entity or overlay we are hovering over. - if ((stylusTarget.entityID === this.getOtherHandController().hoverEntity) || - (stylusTarget.overlayID === this.getOtherHandController().hoverOverlay)) { - this.getOtherHandController().relinquishTouchFocus(); - } - this.requestTouchFocus(stylusTarget); - }; - - this.requestTouchFocus = function(stylusTarget) { - - // send hover events to target if we can. - // record the entity or overlay we are hovering over. - if (stylusTarget.entityID && - stylusTarget.entityID !== this.hoverEntity && - stylusTarget.entityID !== this.getOtherHandController().hoverEntity) { - this.hoverEntity = stylusTarget.entityID; - TouchEventUtils.sendHoverEnterEventToTouchTarget(this.hand, stylusTarget); - } else if (stylusTarget.overlayID && - stylusTarget.overlayID !== this.hoverOverlay && - stylusTarget.overlayID !== this.getOtherHandController().hoverOverlay) { - this.hoverOverlay = stylusTarget.overlayID; - TouchEventUtils.sendHoverEnterEventToTouchTarget(this.hand, stylusTarget); - } - }; - - this.hasTouchFocus = function(stylusTarget) { - return ((stylusTarget.entityID && stylusTarget.entityID === this.hoverEntity) || - (stylusTarget.overlayID && stylusTarget.overlayID === this.hoverOverlay)); - }; - - this.relinquishTouchFocus = function() { - // send hover leave event. - var pointerEvent = { type: "Move", id: this.hand + 1 }; - if (this.hoverEntity) { - Entities.sendHoverLeaveEntity(this.hoverEntity, pointerEvent); - this.hoverEntity = null; - } else if (this.hoverOverlay) { - Overlays.sendMouseMoveOnOverlay(this.hoverOverlay, pointerEvent); - Overlays.sendHoverOverOverlay(this.hoverOverlay, pointerEvent); - Overlays.sendHoverLeaveOverlay(this.hoverOverlay, pointerEvent); - this.hoverOverlay = null; - } - }; - - this.pointFinger = function(value) { - var HIFI_POINT_INDEX_MESSAGE_CHANNEL = "Hifi-Point-Index"; - if (this.fingerPointing !== value) { - var message; - if (this.hand === RIGHT_HAND) { - message = { pointRightIndex: value }; - } else { - message = { pointLeftIndex: value }; - } - Messages.sendMessage(HIFI_POINT_INDEX_MESSAGE_CHANNEL, JSON.stringify(message), true); - this.fingerPointing = value; - } - }; + + this.pointer = Pointers.createPointer(PickType.Stylus, { hand: this.hand }); this.otherModuleNeedsToRun = function(controllerData) { var grabOverlayModuleName = this.hand === RIGHT_HAND ? "RightNearParentingGrabOverlay" : "LeftNearParentingGrabOverlay"; @@ -277,189 +37,6 @@ Script.include("/~/system/libraries/controllers.js"); return grabOverlayModuleReady.active || farGrabModuleReady.active; }; - this.processStylus = function(controllerData) { - this.updateStylusTip(); - - if (!this.stylusTip.valid || this.overlayLaserActive(controllerData) || this.otherModuleNeedsToRun(controllerData)) { - this.pointFinger(false); - this.hideStylus(); - this.stylusTouchingTarget = false; - this.relinquishTouchFocus(); - return false; - } - - if (this.useFingerInsteadOfStylus) { - this.hideStylus(); - } - - // build list of stylus targets, near the stylusTip - var stylusTargets = []; - var candidateEntities = controllerData.nearbyEntityProperties; - var i, props, stylusTarget; - for (i = 0; i < candidateEntities.length; i++) { - props = candidateEntities[i]; - if (props && props.type === "Web") { - stylusTarget = TouchEventUtils.calculateTouchTargetFromEntity(this.stylusTip, candidateEntities[i]); - if (stylusTarget) { - stylusTargets.push(stylusTarget); - } - } - } - - // add the tabletScreen, if it is valid - if (HMD.tabletScreenID && HMD.tabletScreenID !== Uuid.NULL && - Overlays.getProperty(HMD.tabletScreenID, "visible")) { - stylusTarget = TouchEventUtils.calculateTouchTargetFromOverlay(this.stylusTip, HMD.tabletScreenID); - if (stylusTarget) { - stylusTargets.push(stylusTarget); - } - } - - // add the tablet home button. - if (HMD.homeButtonID && HMD.homeButtonID !== Uuid.NULL && - Overlays.getProperty(HMD.homeButtonID, "visible")) { - stylusTarget = TouchEventUtils.calculateTouchTargetFromOverlay(this.stylusTip, HMD.homeButtonID); - if (stylusTarget) { - stylusTargets.push(stylusTarget); - } - } - - var TABLET_MIN_HOVER_DISTANCE = 0.01; - var TABLET_MAX_HOVER_DISTANCE = 0.1; - var TABLET_MIN_TOUCH_DISTANCE = -0.05; - var TABLET_MAX_TOUCH_DISTANCE = TABLET_MIN_HOVER_DISTANCE; - var EDGE_BORDER = 0.075; - - var hysteresisOffset = 0.0; - if (this.isNearStylusTarget) { - hysteresisOffset = 0.05; - } - - var sensorScaleFactor = MyAvatar.sensorToWorldScale; - this.isNearStylusTarget = isNearStylusTarget(stylusTargets, - (EDGE_BORDER + hysteresisOffset) * sensorScaleFactor, - (TABLET_MIN_TOUCH_DISTANCE - hysteresisOffset) * sensorScaleFactor, - (WEB_DISPLAY_STYLUS_DISTANCE + hysteresisOffset) * sensorScaleFactor); - - if (this.isNearStylusTarget) { - if (!this.useFingerInsteadOfStylus) { - this.showStylus(); - } else { - this.pointFinger(true); - } - } else { - this.hideStylus(); - this.pointFinger(false); - } - - var nearestStylusTarget = calculateNearestStylusTarget(stylusTargets); - - var SCALED_TABLET_MIN_TOUCH_DISTANCE = TABLET_MIN_TOUCH_DISTANCE * sensorScaleFactor; - var SCALED_TABLET_MAX_TOUCH_DISTANCE = TABLET_MAX_TOUCH_DISTANCE * sensorScaleFactor; - var SCALED_TABLET_MAX_HOVER_DISTANCE = TABLET_MAX_HOVER_DISTANCE * sensorScaleFactor; - - if (nearestStylusTarget && nearestStylusTarget.distance > SCALED_TABLET_MIN_TOUCH_DISTANCE && - nearestStylusTarget.distance < SCALED_TABLET_MAX_HOVER_DISTANCE && !this.getOtherHandController().stylusTouchingTarget) { - - this.requestTouchFocus(nearestStylusTarget); - - if (!TouchEventUtils.touchTargetHasKeyboardFocus(nearestStylusTarget)) { - TouchEventUtils.setKeyboardFocusOnTouchTarget(nearestStylusTarget); - } - - if (this.hasTouchFocus(nearestStylusTarget) && !this.stylusTouchingTarget) { - TouchEventUtils.sendHoverOverEventToTouchTarget(this.hand, nearestStylusTarget); - } - - // filter out presses when tip is moving away from tablet. - // ensure that stylus is within bounding box by checking normalizedPosition - if (nearestStylusTarget.valid && nearestStylusTarget.distance > SCALED_TABLET_MIN_TOUCH_DISTANCE && - nearestStylusTarget.distance < SCALED_TABLET_MAX_TOUCH_DISTANCE && - Vec3.dot(this.stylusTip.velocity, nearestStylusTarget.normal) < 0 && - nearestStylusTarget.normalizedPosition.x >= 0 && nearestStylusTarget.normalizedPosition.x <= 1 && - nearestStylusTarget.normalizedPosition.y >= 0 && nearestStylusTarget.normalizedPosition.y <= 1) { - - this.stylusTarget = nearestStylusTarget; - this.stylusTouchingTarget = true; - } - } else { - this.relinquishTouchFocus(); - } - - this.homeButtonTouched = false; - - if (this.isNearStylusTarget) { - return true; - } else { - this.pointFinger(false); - this.hideStylus(); - return false; - } - }; - - this.stylusTouchingEnter = function () { - this.stealTouchFocus(this.stylusTarget); - TouchEventUtils.sendTouchStartEventToTouchTarget(this.hand, this.stylusTarget); - Controller.triggerHapticPulse(HAPTIC_STYLUS_STRENGTH, HAPTIC_STYLUS_DURATION, this.hand); - - this.touchingEnterTimer = 0; - this.touchingEnterStylusTarget = this.stylusTarget; - this.deadspotExpired = false; - - var TOUCH_PRESS_TO_MOVE_DEADSPOT = 0.0481; - this.deadspotRadius = TOUCH_PRESS_TO_MOVE_DEADSPOT; - }; - - this.stylusTouchingExit = function () { - - if (this.stylusTarget === undefined) { - return; - } - - // special case to handle home button. - if (this.stylusTarget.overlayID === HMD.homeButtonID) { - Messages.sendLocalMessage("home", this.stylusTarget.overlayID); - } - - // send press event - if (this.deadspotExpired) { - TouchEventUtils.sendTouchEndEventToTouchTarget(this.hand, this.stylusTarget); - } else { - TouchEventUtils.sendTouchEndEventToTouchTarget(this.hand, this.touchingEnterStylusTarget); - } - }; - - this.stylusTouching = function (controllerData, dt) { - - this.touchingEnterTimer += dt; - - if (this.stylusTarget.entityID) { - this.stylusTarget = TouchEventUtils.calculateTouchTargetFromEntity(this.stylusTip, this.stylusTarget.entityProps); - } else if (this.stylusTarget.overlayID) { - this.stylusTarget = TouchEventUtils.calculateTouchTargetFromOverlay(this.stylusTip, this.stylusTarget.overlayID); - } - - var TABLET_MIN_TOUCH_DISTANCE = -0.1; - var TABLET_MAX_TOUCH_DISTANCE = 0.01; - - if (this.stylusTarget) { - if (this.stylusTarget.distance > TABLET_MIN_TOUCH_DISTANCE && - this.stylusTarget.distance < TABLET_MAX_TOUCH_DISTANCE) { - var POINTER_PRESS_TO_MOVE_DELAY = 0.33; // seconds - if (this.deadspotExpired || this.touchingEnterTimer > POINTER_PRESS_TO_MOVE_DELAY || - distance2D(this.stylusTarget.position2D, - this.touchingEnterStylusTarget.position2D) > this.deadspotRadius) { - TouchEventUtils.sendTouchMoveEventToTouchTarget(this.hand, this.stylusTarget); - this.deadspotExpired = true; - } - } else { - this.stylusTouchingTarget = false; - } - } else { - this.stylusTouchingTarget = false; - } - }; - this.overlayLaserActive = function(controllerData) { var rightOverlayLaserModule = getEnabledModuleByName("RightOverlayLaserInput"); var leftOverlayLaserModule = getEnabledModuleByName("LeftOverlayLaserInput"); @@ -469,7 +46,7 @@ Script.include("/~/system/libraries/controllers.js"); }; this.isReady = function (controllerData) { - if (this.processStylus(controllerData)) { + if (!this.overlayLaserActive(controllerData) && !this.otherModuleNeedsToRun(controllerData)) { return makeRunningValues(true, [], []); } else { return makeRunningValues(false, [], []); @@ -477,28 +54,11 @@ Script.include("/~/system/libraries/controllers.js"); }; this.run = function (controllerData, deltaTime) { - this.updateFingerAsStylusSetting(); - - if (!this.previousStylusTouchingTarget && this.stylusTouchingTarget) { - this.stylusTouchingEnter(); - } - if (this.previousStylusTouchingTarget && !this.stylusTouchingTarget) { - this.stylusTouchingExit(); - } - this.previousStylusTouchingTarget = this.stylusTouchingTarget; - - if (this.stylusTouchingTarget) { - this.stylusTouching(controllerData, deltaTime); - } - if (this.processStylus(controllerData)) { - return makeRunningValues(true, [], []); - } else { - return makeRunningValues(false, [], []); - } + return this.isReady(controllerData); }; - + this.cleanup = function () { - this.hideStylus(); + Pointers.createPointer(this.pointer); }; } From 66f07cb21b7460126bf3353c0929daeceea9065d Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 1 Nov 2017 11:36:36 -0700 Subject: [PATCH 063/187] eslint controller modules --- .../controllers/controllerDispatcher.js | 13 +++++------ .../controllerModules/disableOtherModule.js | 4 ++-- .../controllerModules/equipEntity.js | 2 +- .../controllerModules/farActionGrabEntity.js | 7 +++--- .../controllerModules/farTrigger.js | 2 +- .../controllerModules/inEditMode.js | 4 ++-- .../controllerModules/nearActionGrabEntity.js | 2 +- .../controllerModules/nearParentGrabEntity.js | 2 +- .../nearParentGrabOverlay.js | 2 +- .../controllerModules/nearTrigger.js | 2 +- .../controllerModules/overlayLaserInput.js | 2 +- .../controllerModules/scaleAvatar.js | 5 ++--- .../controllerModules/scaleEntity.js | 6 ++--- .../controllers/controllerModules/teleport.js | 22 +++++++++---------- .../controllerModules/webEntityLaserInput.js | 2 +- 15 files changed, 36 insertions(+), 41 deletions(-) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 915d683724..933ca1e2b1 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -10,7 +10,8 @@ /* global Script, Entities, Overlays, Controller, Vec3, Quat, getControllerWorldLocation, RayPick, controllerDispatcherPlugins:true, controllerDispatcherPluginsNeedSort:true, LEFT_HAND, RIGHT_HAND, NEAR_GRAB_PICK_RADIUS, DEFAULT_SEARCH_SPHERE_DISTANCE, DISPATCHER_PROPERTIES, - getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities + getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities, Pointers, PickType, COLORS_GRAB_SEARCHING_HALF_SQUEEZE + COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, Picks */ controllerDispatcherPlugins = {}; @@ -157,7 +158,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); var handLaser = plugin.parameters.handLaser; if (handLaser !== undefined) { _this.laserVisibleStatus[handLaser] = false; - _this.laserLockStatus[handLaser] = false; + _this.laserLockStatus[handLaser] = false; } }; @@ -258,16 +259,16 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); // update left hand laser var HUD_LASER_OFFSET = 2; + var laserLocked; if (_this.laserVisibleStatus[LEFT_HAND]) { - var laserLocked = _this.laserLockStatus[LEFT_HAND]; + laserLocked = _this.laserLockStatus[LEFT_HAND]; _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, laserLocked); } else { Pointers.setRenderState(_this.leftControllerPointer, ""); } - //update right hand laser if (_this.laserVisibleStatus[RIGHT_HAND]) { - var laserLocked = _this.laserLockStatus[RIGHT_HAND]; + laserLocked = _this.laserLockStatus[RIGHT_HAND]; _this.updateLaserRenderState(_this.rightControllerPointer, _this.rightTriggerClicked, laserLocked); } else { Pointers.setRenderState(_this.rightControllerPointer, ""); @@ -636,8 +637,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } function mouseReleaseOnOverlay(overlayID, event) { if (overlayID === HMD.homeButtonID) { - print(JSON.stringify(event)); - print("---------> go home <--------"); Messages.sendLocalMessage("home", overlayID); } } diff --git a/scripts/system/controllers/controllerModules/disableOtherModule.js b/scripts/system/controllers/controllerModules/disableOtherModule.js index e873579ba7..0928b29d5d 100644 --- a/scripts/system/controllers/controllerModules/disableOtherModule.js +++ b/scripts/system/controllers/controllerModules/disableOtherModule.js @@ -73,13 +73,13 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } } } - }; + } Messages.subscribe('Hifi-Hand-Disabler'); function cleanup() { disableDispatcherModule("LeftDisableModules"); disableDispatcherModule("RightDisableModules"); - }; + } Messages.messageReceived.connect(handleMessage); Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/equipEntity.js b/scripts/system/controllers/controllerModules/equipEntity.js index 7843f3a18a..b8c20d5bd6 100644 --- a/scripts/system/controllers/controllerModules/equipEntity.js +++ b/scripts/system/controllers/controllerModules/equipEntity.js @@ -773,6 +773,6 @@ EquipHotspotBuddy.prototype.update = function(deltaTime, timestamp, controllerDa disableDispatcherModule("LeftEquipEntity"); disableDispatcherModule("RightEquipEntity"); clearAttachPoints(); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/farActionGrabEntity.js b/scripts/system/controllers/controllerModules/farActionGrabEntity.js index e0f8834e38..5403b4742f 100644 --- a/scripts/system/controllers/controllerModules/farActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/farActionGrabEntity.js @@ -14,14 +14,13 @@ PICK_MAX_DISTANCE, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_OFF_VALUE, TRIGGER_ON_VALUE, ZERO_VEC, ensureDynamic, getControllerWorldLocation, projectOntoEntityXYPlane, ContextOverlay, HMD, Reticle, Overlays, isPointingAtUI - + Picks, makeLaserLockInfo */ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Script.include("/~/system/libraries/controllers.js"); (function() { - var PICK_WITH_HAND_RAY = true; var GRABBABLE_PROPERTIES = [ "position", "registrationPoint", @@ -249,7 +248,7 @@ Script.include("/~/system/libraries/controllers.js"); this.grabbedThingID = null; }; - this.updateRecommendedArea = function() { + this.updateRecommendedArea = function() { var dims = Controller.getViewportDimensions(); this.reticleMaxX = dims.x - MARGIN; this.reticleMaxY = dims.y - MARGIN; @@ -480,6 +479,6 @@ Script.include("/~/system/libraries/controllers.js"); rightFarActionGrabEntity.cleanup(); disableDispatcherModule("LeftFarActionGrabEntity"); disableDispatcherModule("RightFarActionGrabEntity"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/farTrigger.js b/scripts/system/controllers/controllerModules/farTrigger.js index 4a4c83a9d2..24f336d581 100644 --- a/scripts/system/controllers/controllerModules/farTrigger.js +++ b/scripts/system/controllers/controllerModules/farTrigger.js @@ -99,6 +99,6 @@ Script.include("/~/system/libraries/controllers.js"); function cleanup() { disableDispatcherModule("LeftFarTriggerEntity"); disableDispatcherModule("RightFarTriggerEntity"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index cfa1f0a9e3..c4c53b4d97 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -10,7 +10,7 @@ /* global Script, Controller, RIGHT_HAND, LEFT_HAND, enableDispatcherModule, disableDispatcherModule, makeRunningValues, Messages, makeDispatcherModuleParameters, HMD, getGrabPointSphereOffset, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE, - getEnabledModuleByName, PICK_MAX_DISTANCE, isInEditMode, LaserPointers, RayPick + getEnabledModuleByName, PICK_MAX_DISTANCE, isInEditMode, LaserPointers, RayPick, Picks */ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); @@ -128,7 +128,7 @@ Script.include("/~/system/libraries/utils.js"); rightHandInEditMode.cleanup(); disableDispatcherModule("LeftHandInEditMode"); disableDispatcherModule("RightHandInEditMode"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js index 4fc192cc6b..147d6b807f 100644 --- a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js @@ -261,6 +261,6 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); rightNearActionGrabEntity.cleanup(); disableDispatcherModule("LeftNearActionGrabEntity"); disableDispatcherModule("RightNearActionGrabEntity"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js index 1a5e82599d..ff20d0bbde 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js @@ -343,6 +343,6 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); rightNearParentingGrabEntity.cleanup(); disableDispatcherModule("LeftNearParentingGrabEntity"); disableDispatcherModule("RightNearParentingGrabEntity"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js b/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js index 5333196bd0..fa0fe31de2 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js @@ -229,6 +229,6 @@ Script.include("/~/system/libraries/utils.js"); rightNearParentingGrabOverlay.cleanup(); disableDispatcherModule("LeftNearParentingGrabOverlay"); disableDispatcherModule("RightNearParentingGrabOverlay"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/nearTrigger.js b/scripts/system/controllers/controllerModules/nearTrigger.js index a8aa72f1aa..42db3d6f61 100644 --- a/scripts/system/controllers/controllerModules/nearTrigger.js +++ b/scripts/system/controllers/controllerModules/nearTrigger.js @@ -115,6 +115,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); rightNearTriggerEntity.cleanup(); disableDispatcherModule("LeftNearTriggerEntity"); disableDispatcherModule("RightNearTriggerEntity"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/overlayLaserInput.js b/scripts/system/controllers/controllerModules/overlayLaserInput.js index 6c9258ead7..3997dcaab1 100644 --- a/scripts/system/controllers/controllerModules/overlayLaserInput.js +++ b/scripts/system/controllers/controllerModules/overlayLaserInput.js @@ -95,6 +95,6 @@ Script.include("/~/system/libraries/controllers.js"); function cleanup() { disableDispatcherModule("LeftOverlayLaserInput"); disableDispatcherModule("RightOverlayLaserInput"); - }; + } Script.scriptEnding.connect(cleanup); }()); diff --git a/scripts/system/controllers/controllerModules/scaleAvatar.js b/scripts/system/controllers/controllerModules/scaleAvatar.js index de0434258c..8dbdb90824 100644 --- a/scripts/system/controllers/controllerModules/scaleAvatar.js +++ b/scripts/system/controllers/controllerModules/scaleAvatar.js @@ -8,7 +8,6 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html /* global Script, Vec3, MyAvatar, RIGHT_HAND */ -/* eslint indent: ["error", 4, { "outerIIFEBody": 0 }] */ (function () { var dispatcherUtils = Script.require("/~/system/libraries/controllerDispatcherUtils.js"); @@ -59,7 +58,7 @@ if (this.hand === dispatcherUtils.RIGHT_HAND) { var scalingCurrentDistance = Vec3.length(Vec3.subtract(controllerData.controllerLocations[this.hand].position, - controllerData.controllerLocations[this.otherHand()].position)); + controllerData.controllerLocations[this.otherHand()].position)); var newAvatarScale = (scalingCurrentDistance / this.scalingStartDistance) * this.scalingStartAvatarScale; MyAvatar.scale = newAvatarScale; @@ -79,6 +78,6 @@ function cleanup() { dispatcherUtils.disableDispatcherModule("LeftScaleAvatar"); dispatcherUtils.disableDispatcherModule("RightScaleAvatar"); - }; + } Script.scriptEnding.connect(cleanup); })(); diff --git a/scripts/system/controllers/controllerModules/scaleEntity.js b/scripts/system/controllers/controllerModules/scaleEntity.js index d45a4a5071..9d54eef98e 100644 --- a/scripts/system/controllers/controllerModules/scaleEntity.js +++ b/scripts/system/controllers/controllerModules/scaleEntity.js @@ -8,11 +8,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html /* global Script, Vec3, MyAvatar, RIGHT_HAND */ -/* eslint indent: ["error", 4, { "outerIIFEBody": 0 }] */ (function() { var dispatcherUtils = Script.require("/~/system/libraries/controllerDispatcherUtils.js"); - function ScaleEntity(hand) { this.hand = hand; this.grabbedThingID = false; @@ -81,7 +79,7 @@ if (this.hand === dispatcherUtils.RIGHT_HAND) { var scalingCurrentDistance = Vec3.length(Vec3.subtract(controllerData.controllerLocations[this.hand].position, - controllerData.controllerLocations[this.otherHand()].position)); + controllerData.controllerLocations[this.otherHand()].position)); var currentRescale = scalingCurrentDistance / this.scalingStartDistance; var newDimensions = Vec3.multiply(currentRescale, this.scalingStartDimensions); Entities.editEntity(this.grabbedThingID, { dimensions: newDimensions }); @@ -101,6 +99,6 @@ function cleanup() { dispatcherUtils.disableDispatcherModule("LeftScaleEntity"); dispatcherUtils.disableDispatcherModule("RightScaleEntity"); - }; + } Script.scriptEnding.connect(cleanup); })(); diff --git a/scripts/system/controllers/controllerModules/teleport.js b/scripts/system/controllers/controllerModules/teleport.js index c207ba56ae..6d6d93d640 100644 --- a/scripts/system/controllers/controllerModules/teleport.js +++ b/scripts/system/controllers/controllerModules/teleport.js @@ -12,7 +12,7 @@ /* global Script, Entities, MyAvatar, Controller, RIGHT_HAND, LEFT_HAND, getControllerJointIndex, enableDispatcherModule, disableDispatcherModule, Messages, makeDispatcherModuleParameters, makeRunningValues, Vec3, - LaserPointers, RayPick, HMD, Uuid, AvatarList + LaserPointers, RayPick, HMD, Uuid, AvatarList, Picks */ Script.include("/~/system/libraries/Xform.js"); @@ -109,8 +109,8 @@ Script.include("/~/system/libraries/controllers.js"); var teleportRenderStates = [{name: "cancel", path: cancelPath, end: cancelEnd}, - {name: "teleport", path: teleportPath, end: teleportEnd}, - {name: "seat", path: seatPath, end: seatEnd}]; + {name: "teleport", path: teleportPath, end: teleportEnd}, + {name: "seat", path: seatPath, end: seatEnd}]; var DEFAULT_DISTANCE = 50; var teleportDefaultRenderStates = [{name: "cancel", distance: DEFAULT_DISTANCE, path: cancelPath}]; @@ -127,18 +127,18 @@ Script.include("/~/system/libraries/controllers.js"); }; var TARGET = { - NONE: 'none', // Not currently targetting anything - INVISIBLE: 'invisible', // The current target is an invvsible surface - INVALID: 'invalid', // The current target is invalid (wall, ceiling, etc.) - SURFACE: 'surface', // The current target is a valid surface - SEAT: 'seat' // The current target is a seat + NONE: 'none', // Not currently targetting anything + INVISIBLE: 'invisible', // The current target is an invvsible surface + INVALID: 'invalid', // The current target is invalid (wall, ceiling, etc.) + SURFACE: 'surface', // The current target is a valid surface + SEAT: 'seat' // The current target is a seat }; function Teleporter(hand) { var _this = this; this.hand = hand; this.buttonValue = 0; - this.disabled = false; // used by the 'Hifi-Teleport-Disabler' message handler + this.disabled = false; // used by the 'Hifi-Teleport-Disabler' message handler this.active = false; this.state = TELEPORTER_STATES.IDLE; this.currentTarget = TARGET.INVALID; @@ -218,8 +218,8 @@ Script.include("/~/system/libraries/controllers.js"); seatEnd.dimensions = AVATAR_PROPORTIONAL_TARGET_MODEL_DIMENSIONS; teleportRenderStates = [{name: "cancel", path: cancelPath, end: cancelEnd}, - {name: "teleport", path: teleportPath, end: teleportEnd}, - {name: "seat", path: seatPath, end: seatEnd}]; + {name: "teleport", path: teleportPath, end: teleportEnd}, + {name: "seat", path: seatPath, end: seatEnd}]; LaserPointers.editRenderState(this.teleportRayHandVisible, "cancel", teleportRenderStates[0]); LaserPointers.editRenderState(this.teleportRayHandInvisible, "cancel", teleportRenderStates[0]); diff --git a/scripts/system/controllers/controllerModules/webEntityLaserInput.js b/scripts/system/controllers/controllerModules/webEntityLaserInput.js index 20bd272542..9b6e0cc4f7 100644 --- a/scripts/system/controllers/controllerModules/webEntityLaserInput.js +++ b/scripts/system/controllers/controllerModules/webEntityLaserInput.js @@ -60,7 +60,7 @@ Script.include("/~/system/libraries/controllers.js"); function cleanup() { disableDispatcherModule("LeftWebEntityLaserInput"); disableDispatcherModule("RightWebEntityLaserInput"); - }; + } Script.scriptEnding.connect(cleanup); }()); From 0580e2368666a0977b39eeb40338cdf627501e14 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 1 Nov 2017 15:16:02 -0700 Subject: [PATCH 064/187] fixed edit mode and allow to scroll off tablet --- .../controllers/controllerDispatcher.js | 27 ++++---- .../controllerModules/inEditMode.js | 7 +- .../controllerModules/overlayLaserInput.js | 38 ++++++----- .../controllerModules/webEntityLaserInput.js | 66 ------------------- .../system/controllers/controllerScripts.js | 1 - 5 files changed, 40 insertions(+), 99 deletions(-) delete mode 100644 scripts/system/controllers/controllerModules/webEntityLaserInput.js diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 933ca1e2b1..cd52caae38 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -11,7 +11,7 @@ controllerDispatcherPlugins:true, controllerDispatcherPluginsNeedSort:true, LEFT_HAND, RIGHT_HAND, NEAR_GRAB_PICK_RADIUS, DEFAULT_SEARCH_SPHERE_DISTANCE, DISPATCHER_PROPERTIES, getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities, Pointers, PickType, COLORS_GRAB_SEARCHING_HALF_SQUEEZE - COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, Picks + COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, Picks, TRIGGER_ON_VALUE */ controllerDispatcherPlugins = {}; @@ -262,41 +262,40 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); var laserLocked; if (_this.laserVisibleStatus[LEFT_HAND]) { laserLocked = _this.laserLockStatus[LEFT_HAND]; - _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, laserLocked); + _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, _this.leftTriggerValue, laserLocked); } else { Pointers.setRenderState(_this.leftControllerPointer, ""); } if (_this.laserVisibleStatus[RIGHT_HAND]) { laserLocked = _this.laserLockStatus[RIGHT_HAND]; - _this.updateLaserRenderState(_this.rightControllerPointer, _this.rightTriggerClicked, laserLocked); + _this.updateLaserRenderState(_this.rightControllerPointer, _this.rightTriggerClicked, _this.rightTriggerValue, laserLocked); } else { Pointers.setRenderState(_this.rightControllerPointer, ""); } if (_this.laserVisibleStatus[LEFT_HAND + HUD_LASER_OFFSET]) { - _this.updateLaserRenderState(_this.leftControllerHudRayPick, _this.leftTriggerClicked, false); + _this.updateLaserRenderState(_this.leftControllerHudRayPick, _this.leftTriggerClicked, _this.leftTriggerValue, false); } else { Pointers.setRenderState(_this.leftControllerHudRayPick, ""); } if (_this.laserVisibleStatus[RIGHT_HAND + HUD_LASER_OFFSET]) { - _this.updateLaserRenderState(_this.rightControllerHudRayPick, _this.rightTriggerClicked, false); + _this.updateLaserRenderState(_this.rightControllerHudRayPick, _this.rightTriggerClicked, _this.rightTriggerValue, false); } else { Pointers.setRenderState(_this.rightControllerHudRayPick, ""); } }; - this.updateLaserRenderState = function(laser, triggerClicked, laserLocked) { - var mode = "hold"; - if (!laserLocked) { - if (triggerClicked) { - mode = "full"; - } else { - mode = "half"; - } + this.updateLaserRenderState = function(laser, triggerClicked, triggerValue, laserLocked) { + var mode = ""; + if (laserLocked) { + mode = "hold"; + } else if (triggerClicked) { + mode = "full"; + } else if (triggerValue > TRIGGER_ON_VALUE) { + mode = "half"; } - Pointers.setRenderState(laser, mode); }; diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index c4c53b4d97..10c2f049d4 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -26,7 +26,8 @@ Script.include("/~/system/libraries/utils.js"); 160, this.hand === RIGHT_HAND ? ["rightHand", "rightHandEquip", "rightHandTrigger"] : ["leftHand", "leftHandEquip", "leftHandTrigger"], [], - 100); + 100, + this.hand); this.nearTablet = function(overlays) { for (var i = 0; i < overlays.length; i++) { @@ -69,6 +70,10 @@ Script.include("/~/system/libraries/utils.js"); } }; + this.exitModule = function() { + return makeRunningValues(false, [], []); + }; + this.isReady = function(controllerData) { if (isInEditMode()) { this.triggerClicked = false; diff --git a/scripts/system/controllers/controllerModules/overlayLaserInput.js b/scripts/system/controllers/controllerModules/overlayLaserInput.js index 3997dcaab1..10235a63e9 100644 --- a/scripts/system/controllers/controllerModules/overlayLaserInput.js +++ b/scripts/system/controllers/controllerModules/overlayLaserInput.js @@ -26,13 +26,6 @@ Script.include("/~/system/libraries/controllers.js"); 100, this.hand); - this.processLaser = function(controllerData) { - if (this.shouldExit(controllerData)) { - return false; - } - return true; - }; - this.grabModuleWantsNearbyOverlay = function(controllerData) { if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { var nearGrabName = this.hand === RIGHT_HAND ? "RightNearParentingGrabOverlay" : "LeftNearParentingGrabOverlay"; @@ -51,15 +44,19 @@ Script.include("/~/system/libraries/controllers.js"); return false; }; - this.shouldExit = function(controllerData) { + this.isPointingAtWebEntity = function(controllerData) { var intersection = controllerData.rayPicks[this.hand]; - var offOverlay = (intersection.type !== Picks.INTERSECTED_OVERLAY); - var triggerOff = (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE); - if (triggerOff) { - this.deleteContextOverlay(); + var entityProperty = Entities.getEntityProperties(intersection.objectID); + var entityType = entityProperty.type; + if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web")) { + return true; } - var grabbingOverlay = this.grabModuleWantsNearbyOverlay(controllerData); - return offOverlay || grabbingOverlay || triggerOff; + return false; + }; + + this.isPointingAtOverlay = function(controllerData) { + var intersection = controllerData.rayPicks[this.hand]; + return intersection.type === Picks.INTERSECTED_OVERLAY; }; this.deleteContextOverlay = function() { @@ -75,14 +72,21 @@ Script.include("/~/system/libraries/controllers.js"); }; this.isReady = function (controllerData) { - if (this.processLaser(controllerData)) { - return makeRunningValues(true, [], []); + if (this.isPointingAtOverlay(controllerData) || this.isPointingAtWebEntity(controllerData)) { + if (controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE) { + return makeRunningValues(true, [], []); + } } return makeRunningValues(false, [], []); }; this.run = function (controllerData, deltaTime) { - return this.isReady(controllerData); + var grabModuleNeedsToRun = this.grabModuleWantsNearbyOverlay(controllerData); + if (controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE && !grabModuleNeedsToRun) { + return makeRunningValues(true, [], []); + } + this.deleteContextOverlay(); + return makeRunningValues(false, [], []); }; } diff --git a/scripts/system/controllers/controllerModules/webEntityLaserInput.js b/scripts/system/controllers/controllerModules/webEntityLaserInput.js deleted file mode 100644 index 9b6e0cc4f7..0000000000 --- a/scripts/system/controllers/controllerModules/webEntityLaserInput.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; - -// webEntityLaserInput.js -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html - -/* jslint bitwise: true */ - -/* global Script, Controller, LaserPointers, RayPick, RIGHT_HAND, LEFT_HAND, Vec3, Quat, getGrabPointSphereOffset, - makeRunningValues, Entities, enableDispatcherModule, disableDispatcherModule, makeDispatcherModuleParameters, - PICK_MAX_DISTANCE, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, - DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE, ZERO_VEC, Overlays, Picks -*/ - -Script.include("/~/system/libraries/controllerDispatcherUtils.js"); -Script.include("/~/system/libraries/controllers.js"); - -(function() { - function WebEntityLaserInput(hand) { - this.hand = hand; - this.parameters = makeDispatcherModuleParameters( - 550, - this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], - [], - 100); - - this.isPointingAtWebEntity = function(controllerData) { - var intersection = controllerData.rayPicks[this.hand]; - var entityProperty = Entities.getEntityProperties(intersection.objectID); - var entityType = entityProperty.type; - - if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web")) { - return true; - } - return false; - }; - - this.isReady = function(controllerData) { - if (this.isPointingAtWebEntity(controllerData)) { - return makeRunningValues(true, [], []); - } - return makeRunningValues(false, [], []); - }; - - this.run = function(controllerData, deltaTime) { - if (!this.isPointingAtWebEntity(controllerData)) { - return makeRunningValues(false, [], []); - } - return makeRunningValues(true, [], []); - }; - } - - var leftWebEntityLaserInput = new WebEntityLaserInput(LEFT_HAND); - var rightWebEntityLaserInput = new WebEntityLaserInput(RIGHT_HAND); - - enableDispatcherModule("LeftWebEntityLaserInput", leftWebEntityLaserInput); - enableDispatcherModule("RightWebEntityLaserInput", rightWebEntityLaserInput); - - function cleanup() { - disableDispatcherModule("LeftWebEntityLaserInput"); - disableDispatcherModule("RightWebEntityLaserInput"); - } - Script.scriptEnding.connect(cleanup); - -}()); diff --git a/scripts/system/controllers/controllerScripts.js b/scripts/system/controllers/controllerScripts.js index 09602b33eb..7ab5a88948 100644 --- a/scripts/system/controllers/controllerScripts.js +++ b/scripts/system/controllers/controllerScripts.js @@ -23,7 +23,6 @@ var CONTOLLER_SCRIPTS = [ "controllerModules/equipEntity.js", "controllerModules/nearTrigger.js", "controllerModules/overlayLaserInput.js", - "controllerModules/webEntityLaserInput.js", "controllerModules/inEditMode.js", "controllerModules/inVREditMode.js", "controllerModules/disableOtherModule.js", From c834cf1cf3f442be3ad34da09066e65e5a9e07cc Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Wed, 1 Nov 2017 21:55:31 -0700 Subject: [PATCH 065/187] Comments and corrections --- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 114 ++++++++++++-------- libraries/ui/src/ui/OffscreenQmlSurface.h | 1 - 2 files changed, 70 insertions(+), 45 deletions(-) diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index b7f717db04..8232c6a064 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -117,6 +117,69 @@ uint64_t uvec2ToUint64(const uvec2& v) { return result; } +// Class to handle changing QML audio output device using another thread +class AudioHandler : public QObject, QRunnable { + Q_OBJECT +public: + AudioHandler(QObject* container, const QString& deviceName, int runDelayMs = 0, QObject* parent = nullptr) : QObject(parent) { + _container = container; + _newTargetDevice = deviceName; + _runDelayMs = runDelayMs; + setAutoDelete(true); + QThreadPool::globalInstance()->start(this); + } + virtual ~AudioHandler() { + qDebug() << "Audio Handler Destroyed"; + } + void run() override { + if (_newTargetDevice.isEmpty()) { + return; + } + if (_runDelayMs > 0) { + QThread::msleep(_runDelayMs); + } + auto audioIO = DependencyManager::get(); + QString deviceName = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); + for (auto player : _container->findChildren()) { + auto mediaState = player->state(); + QMediaService *svc = player->service(); + if (nullptr == svc) { + return; + } + QAudioOutputSelectorControl *out = qobject_cast + (svc->requestControl(QAudioOutputSelectorControl_iid)); + if (nullptr == out) { + return; + } + QString deviceOuput; + auto outputs = out->availableOutputs(); + for (int i = 0; i < outputs.size(); i++) { + QString output = outputs[i]; + QString description = out->outputDescription(output); + if (description == deviceName) { + deviceOuput = output; + break; + } + } + out->setActiveOutput(deviceOuput); + svc->releaseControl(out); + // if multimedia was paused, it will start playing automatically after changing audio device + // this will reset it back to a paused state + if (mediaState == QMediaPlayer::State::PausedState) { + player->pause(); + } else if (mediaState == QMediaPlayer::State::StoppedState) { + player->stop(); + } + } + qDebug() << "QML Audio changed to " << deviceName; + } + +private: + QString _newTargetDevice; + QObject* _container; + int _runDelayMs; +}; + class OffscreenTextures { public: GLuint getNextTexture(const uvec2& size) { @@ -604,7 +667,7 @@ void OffscreenQmlSurface::create() { auto audioIO = DependencyManager::get(); connect(audioIO.data(), &AudioClient::deviceChanged, this, [&](QAudio::Mode mode, const QAudioDeviceInfo& device) { if (mode == QAudio::Mode::AudioOutput) { - QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::DirectConnection, Q_ARG(QString, device.deviceName())); + QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::QueuedConnection, Q_ARG(QString, device.deviceName())); } }); @@ -619,7 +682,7 @@ void OffscreenQmlSurface::create() { void OffscreenQmlSurface::changeAudioOutputDevice(const QString& deviceName, bool isHtmlUpdate) { if (_rootItem != nullptr && !isHtmlUpdate) { - QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::DirectConnection); + QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::QueuedConnection); } emit audioOutputDeviceChanged(deviceName); } @@ -627,7 +690,7 @@ void OffscreenQmlSurface::changeAudioOutputDevice(const QString& deviceName, boo void OffscreenQmlSurface::forceHtmlAudioOutputDeviceUpdate() { auto audioIO = DependencyManager::get(); QString deviceName = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); - QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::DirectConnection, + QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::QueuedConnection, Q_ARG(QString, deviceName), Q_ARG(bool, true)); } @@ -635,51 +698,14 @@ void OffscreenQmlSurface::forceQmlAudioOutputDeviceUpdate() { if (QThread::currentThread() != qApp->thread()) { QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::QueuedConnection); } else { + auto audioIO = DependencyManager::get(); + QString deviceName = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); int waitForAudioQmlMs = 500; - QTimer::singleShot(waitForAudioQmlMs, this, [this] { - updateQmlAudio(); - }); + // The audio device need to be change using oth + new AudioHandler(_rootItem, deviceName, waitForAudioQmlMs); } } -void OffscreenQmlSurface::updateQmlAudio() { - auto audioIO = DependencyManager::get(); - QString deviceName = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); - for (auto player : _rootItem->findChildren()) { - auto mediaState = player->state(); - QMediaService *svc = player->service(); - if (nullptr == svc) { - return; - } - QAudioOutputSelectorControl *out = qobject_cast - (svc->requestControl(QAudioOutputSelectorControl_iid)); - if (nullptr == out) { - return; - } - QString deviceOuput; - auto outputs = out->availableOutputs(); - for (int i = 0; i < outputs.size(); i++) { - QString output = outputs[i]; - QString description = out->outputDescription(output); - if (description == deviceName) { - deviceOuput = output; - break; - } - } - out->setActiveOutput(deviceOuput); - svc->releaseControl(out); - // if multimedia was paused, it will start playing automatically after changing audio device - // this will reset it back to a paused state - if (mediaState == QMediaPlayer::State::PausedState) { - player->pause(); - } - else if (mediaState == QMediaPlayer::State::StoppedState) { - player->stop(); - } - } - qDebug() << "QML Audio changed to " << deviceName; -} - static uvec2 clampSize(const uvec2& size, uint32_t maxDimension) { return glm::clamp(size, glm::uvec2(1), glm::uvec2(maxDimension)); } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 0d053b373d..2d64ae12b5 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -108,7 +108,6 @@ public slots: void changeAudioOutputDevice(const QString& deviceName, bool isHtmlUpdate = false); void forceHtmlAudioOutputDeviceUpdate(); void forceQmlAudioOutputDeviceUpdate(); - void updateQmlAudio(); signals: void audioOutputDeviceChanged(const QString& deviceName); From b6e32621640631a97e69e82f62648f19a63b7933 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 2 Nov 2017 11:31:13 -0700 Subject: [PATCH 066/187] removing the last remaining laserPointers --- .../controllers/controllerModules/teleport.js | 90 +++++++++---------- scripts/system/controllers/grab.js | 18 ++-- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/scripts/system/controllers/controllerModules/teleport.js b/scripts/system/controllers/controllerModules/teleport.js index 6d6d93d640..44ee822505 100644 --- a/scripts/system/controllers/controllerModules/teleport.js +++ b/scripts/system/controllers/controllerModules/teleport.js @@ -12,7 +12,7 @@ /* global Script, Entities, MyAvatar, Controller, RIGHT_HAND, LEFT_HAND, getControllerJointIndex, enableDispatcherModule, disableDispatcherModule, Messages, makeDispatcherModuleParameters, makeRunningValues, Vec3, - LaserPointers, RayPick, HMD, Uuid, AvatarList, Picks + RayPick, HMD, Uuid, AvatarList, Picks, Pointers, PickType */ Script.include("/~/system/libraries/Xform.js"); @@ -149,7 +149,7 @@ Script.include("/~/system/libraries/controllers.js"); return otherModule; }; - this.teleportRayHandVisible = LaserPointers.createLaserPointer({ + this.teleportRayHandVisible = Pointers.createPointer(PickType.Ray, { joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand", filter: Picks.PICK_ENTITIES, faceAvatar: true, @@ -157,14 +157,14 @@ Script.include("/~/system/libraries/controllers.js"); renderStates: teleportRenderStates, defaultRenderStates: teleportDefaultRenderStates }); - this.teleportRayHandInvisible = LaserPointers.createLaserPointer({ + this.teleportRayHandInvisible = Pointers.createPointer(PickType.Ray, { joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand", filter: Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_INVISIBLE, faceAvatar: true, centerEndY: false, renderStates: teleportRenderStates }); - this.teleportRayHeadVisible = LaserPointers.createLaserPointer({ + this.teleportRayHeadVisible = Pointers.createPointer(PickType.Ray, { joint: "Avatar", filter: Picks.PICK_ENTITIES, faceAvatar: true, @@ -172,7 +172,7 @@ Script.include("/~/system/libraries/controllers.js"); renderStates: teleportRenderStates, defaultRenderStates: teleportDefaultRenderStates }); - this.teleportRayHeadInvisible = LaserPointers.createLaserPointer({ + this.teleportRayHeadInvisible = Pointers.createPointer(PickType.Ray, { joint: "Avatar", filter: Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_INVISIBLE, faceAvatar: true, @@ -181,10 +181,10 @@ Script.include("/~/system/libraries/controllers.js"); }); this.cleanup = function() { - LaserPointers.removeLaserPointer(this.teleportRayHandVisible); - LaserPointers.removeLaserPointer(this.teleportRayHandInvisible); - LaserPointers.removeLaserPointer(this.teleportRayHeadVisible); - LaserPointers.removeLaserPointer(this.teleportRayHeadInvisible); + Pointers.removePointer(this.teleportRayHandVisible); + Pointers.removePointer(this.teleportRayHandInvisible); + Pointers.removePointer(this.teleportRayHeadVisible); + Pointers.removePointer(this.teleportRayHeadInvisible); }; this.buttonPress = function(value) { @@ -221,20 +221,20 @@ Script.include("/~/system/libraries/controllers.js"); {name: "teleport", path: teleportPath, end: teleportEnd}, {name: "seat", path: seatPath, end: seatEnd}]; - LaserPointers.editRenderState(this.teleportRayHandVisible, "cancel", teleportRenderStates[0]); - LaserPointers.editRenderState(this.teleportRayHandInvisible, "cancel", teleportRenderStates[0]); - LaserPointers.editRenderState(this.teleportRayHeadVisible, "cancel", teleportRenderStates[0]); - LaserPointers.editRenderState(this.teleportRayHeadInvisible, "cancel", teleportRenderStates[0]); + Pointers.editRenderState(this.teleportRayHandVisible, "cancel", teleportRenderStates[0]); + Pointers.editRenderState(this.teleportRayHandInvisible, "cancel", teleportRenderStates[0]); + Pointers.editRenderState(this.teleportRayHeadVisible, "cancel", teleportRenderStates[0]); + Pointers.editRenderState(this.teleportRayHeadInvisible, "cancel", teleportRenderStates[0]); - LaserPointers.editRenderState(this.teleportRayHandVisible, "teleport", teleportRenderStates[1]); - LaserPointers.editRenderState(this.teleportRayHandInvisible, "teleport", teleportRenderStates[1]); - LaserPointers.editRenderState(this.teleportRayHeadVisible, "teleport", teleportRenderStates[1]); - LaserPointers.editRenderState(this.teleportRayHeadInvisible, "teleport", teleportRenderStates[1]); + Pointers.editRenderState(this.teleportRayHandVisible, "teleport", teleportRenderStates[1]); + Pointers.editRenderState(this.teleportRayHandInvisible, "teleport", teleportRenderStates[1]); + Pointers.editRenderState(this.teleportRayHeadVisible, "teleport", teleportRenderStates[1]); + Pointers.editRenderState(this.teleportRayHeadInvisible, "teleport", teleportRenderStates[1]); - LaserPointers.editRenderState(this.teleportRayHandVisible, "seat", teleportRenderStates[2]); - LaserPointers.editRenderState(this.teleportRayHandInvisible, "seat", teleportRenderStates[2]); - LaserPointers.editRenderState(this.teleportRayHeadVisible, "seat", teleportRenderStates[2]); - LaserPointers.editRenderState(this.teleportRayHeadInvisible, "seat", teleportRenderStates[2]); + Pointers.editRenderState(this.teleportRayHandVisible, "seat", teleportRenderStates[2]); + Pointers.editRenderState(this.teleportRayHandInvisible, "seat", teleportRenderStates[2]); + Pointers.editRenderState(this.teleportRayHeadVisible, "seat", teleportRenderStates[2]); + Pointers.editRenderState(this.teleportRayHeadInvisible, "seat", teleportRenderStates[2]); } }; @@ -254,15 +254,15 @@ Script.include("/~/system/libraries/controllers.js"); var pose = Controller.getPoseValue(handInfo[(_this.hand === RIGHT_HAND) ? 'right' : 'left'].controllerInput); var mode = pose.valid ? _this.hand : 'head'; if (!pose.valid) { - LaserPointers.disableLaserPointer(_this.teleportRayHandVisible); - LaserPointers.disableLaserPointer(_this.teleportRayHandInvisible); - LaserPointers.enableLaserPointer(_this.teleportRayHeadVisible); - LaserPointers.enableLaserPointer(_this.teleportRayHeadInvisible); + Pointers.disablePointer(_this.teleportRayHandVisible); + Pointers.disablePointer(_this.teleportRayHandInvisible); + Pointers.enablePointer(_this.teleportRayHeadVisible); + Pointers.enablePointer(_this.teleportRayHeadInvisible); } else { - LaserPointers.enableLaserPointer(_this.teleportRayHandVisible); - LaserPointers.enableLaserPointer(_this.teleportRayHandInvisible); - LaserPointers.disableLaserPointer(_this.teleportRayHeadVisible); - LaserPointers.disableLaserPointer(_this.teleportRayHeadInvisible); + Pointers.enablePointer(_this.teleportRayHandVisible); + Pointers.enablePointer(_this.teleportRayHandInvisible); + Pointers.disablePointer(_this.teleportRayHeadVisible); + Pointers.disablePointer(_this.teleportRayHeadInvisible); } // We do up to 2 ray picks to find a teleport location. @@ -276,17 +276,17 @@ Script.include("/~/system/libraries/controllers.js"); // var result; if (mode === 'head') { - result = LaserPointers.getPrevRayPickResult(_this.teleportRayHeadInvisible); + result = Pointers.getPrevPickResult(_this.teleportRayHeadInvisible); } else { - result = LaserPointers.getPrevRayPickResult(_this.teleportRayHandInvisible); + result = Pointers.getPrevPickResult(_this.teleportRayHandInvisible); } var teleportLocationType = getTeleportTargetType(result); if (teleportLocationType === TARGET.INVISIBLE) { if (mode === 'head') { - result = LaserPointers.getPrevRayPickResult(_this.teleportRayHeadVisible); + result = Pointers.getPrevPickResult(_this.teleportRayHeadVisible); } else { - result = LaserPointers.getPrevRayPickResult(_this.teleportRayHandVisible); + result = Pointers.getPrevPickResult(_this.teleportRayHandVisible); } teleportLocationType = getTeleportTargetType(result); } @@ -332,27 +332,27 @@ Script.include("/~/system/libraries/controllers.js"); }; this.disableLasers = function() { - LaserPointers.disableLaserPointer(_this.teleportRayHandVisible); - LaserPointers.disableLaserPointer(_this.teleportRayHandInvisible); - LaserPointers.disableLaserPointer(_this.teleportRayHeadVisible); - LaserPointers.disableLaserPointer(_this.teleportRayHeadInvisible); + Pointers.disablePointer(_this.teleportRayHandVisible); + Pointers.disablePointer(_this.teleportRayHandInvisible); + Pointers.disablePointer(_this.teleportRayHeadVisible); + Pointers.disablePointer(_this.teleportRayHeadInvisible); }; this.setTeleportState = function(mode, visibleState, invisibleState) { if (mode === 'head') { - LaserPointers.setRenderState(_this.teleportRayHeadVisible, visibleState); - LaserPointers.setRenderState(_this.teleportRayHeadInvisible, invisibleState); + Pointers.setRenderState(_this.teleportRayHeadVisible, visibleState); + Pointers.setRenderState(_this.teleportRayHeadInvisible, invisibleState); } else { - LaserPointers.setRenderState(_this.teleportRayHandVisible, visibleState); - LaserPointers.setRenderState(_this.teleportRayHandInvisible, invisibleState); + Pointers.setRenderState(_this.teleportRayHandVisible, visibleState); + Pointers.setRenderState(_this.teleportRayHandInvisible, invisibleState); } }; this.setIgnoreEntities = function(entitiesToIgnore) { - LaserPointers.setIgnoreItems(this.teleportRayHandVisible, entitiesToIgnore); - LaserPointers.setIgnoreItems(this.teleportRayHandInvisible, entitiesToIgnore); - LaserPointers.setIgnoreItems(this.teleportRayHeadVisible, entitiesToIgnore); - LaserPointers.setIgnoreItems(this.teleportRayHeadInvisible, entitiesToIgnore); + Pointers.setIgnoreItems(this.teleportRayHandVisible, entitiesToIgnore); + Pointers.setIgnoreItems(this.teleportRayHandInvisible, entitiesToIgnore); + Pointers.setIgnoreItems(this.teleportRayHeadVisible, entitiesToIgnore); + Pointers.setIgnoreItems(this.teleportRayHeadInvisible, entitiesToIgnore); }; } diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index 7e575e38b0..7a6b190d44 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -15,7 +15,7 @@ // /* global MyAvatar, Entities, Script, Camera, Vec3, Reticle, Overlays, getEntityCustomData, Messages, Quat, Controller, - isInEditMode, HMD entityIsGrabbable*/ + isInEditMode, HMD entityIsGrabbable, Pointers, PickType RayPick*/ (function() { // BEGIN LOCAL_SCOPE @@ -265,7 +265,7 @@ function Grabber() { }); RayPick.setIncludeItems(this.mouseRayOverlays, [HMD.tabletID, HMD.tabletScreenID, HMD.homeButtonID]); var renderStates = [{name: "grabbed", end: beacon}]; - this.mouseRayEntities = LaserPointers.createLaserPointer({ + this.mouseRayEntities = Pointers.createPointer(PickType.Ray, { joint: "Mouse", filter: Picks.PICK_ENTITIES, faceAvatar: true, @@ -325,9 +325,9 @@ Grabber.prototype.pressEvent = function(event) { return; } - var pickResults = LaserPointers.getPrevRayPickResult(this.mouseRayEntities); + var pickResults = Pointers.getPrevPickResult(this.mouseRayEntities); if (pickResults.type == Picks.INTERSECTED_NONE) { - LaserPointers.setRenderState(this.mouseRayEntities, ""); + Pointers.setRenderState(this.mouseRayEntities, ""); return; } @@ -344,8 +344,8 @@ Grabber.prototype.pressEvent = function(event) { return; } - LaserPointers.setRenderState(this.mouseRayEntities, "grabbed"); - LaserPointers.setLockEndUUID(this.mouseRayEntities, pickResults.objectID, false); + Pointers.setRenderState(this.mouseRayEntities, "grabbed"); + Pointers.setLockEndUid(this.mouseRayEntities, pickResults.objectID, false); mouse.startDrag(event); @@ -358,7 +358,7 @@ Grabber.prototype.pressEvent = function(event) { var objectBoundingDiameter = Vec3.length(entityProperties.dimensions); beacon.dimensions.y = objectBoundingDiameter; - LaserPointers.editRenderState(this.mouseRayEntities, "grabbed", {end: beacon}); + Pointers.editRenderState(this.mouseRayEntities, "grabbed", {end: beacon}); this.maxDistance = objectBoundingDiameter / MAX_SOLID_ANGLE; if (Vec3.distance(this.startPosition, cameraPosition) > this.maxDistance) { // don't allow grabs of things far away @@ -435,7 +435,7 @@ Grabber.prototype.releaseEvent = function(event) { this.actionID = null; - LaserPointers.setRenderState(this.mouseRayEntities, ""); + Pointers.setRenderState(this.mouseRayEntities, ""); var args = "mouse"; Entities.callEntityMethod(this.entityID, "releaseGrab", args); @@ -590,7 +590,7 @@ Grabber.prototype.keyPressEvent = function(event) { }; Grabber.prototype.cleanup = function() { - LaserPointers.removeLaserPointer(this.mouseRayEntities); + Pointers.removePointer(this.mouseRayEntities); RayPick.removeRayPick(this.mouseRayOverlays); }; From 53c6eeb58bdf5082bccf686fb91c0852b3cf1f43 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 2 Nov 2017 15:58:50 -0700 Subject: [PATCH 067/187] updatePosition now setPosition --- libraries/entities/src/EntityItem.cpp | 6 +++--- libraries/entities/src/EntityItem.h | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 2ab960ef81..e4f88f6856 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -735,7 +735,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef // reasons and the contract is that the client handles them in an idempotent manner. auto customUpdatePositionFromNetwork = [this, shouldUpdate, lastEdited](glm::vec3 value){ if (shouldUpdate(_lastUpdatedPositionTimestamp, value != _lastUpdatedPositionValue)) { - updatePosition(value); + setPosition(value); _lastUpdatedPositionTimestamp = lastEdited; _lastUpdatedPositionValue = value; } @@ -1316,7 +1316,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { // these affect TerseUpdate properties SET_ENTITY_PROPERTY_FROM_PROPERTIES(simulationOwner, setSimulationOwner); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(position, updatePosition); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(position, setPosition); SET_ENTITY_PROPERTY_FROM_PROPERTIES(rotation, setRotation); SET_ENTITY_PROPERTY_FROM_PROPERTIES(velocity, setVelocity); SET_ENTITY_PROPERTY_FROM_PROPERTIES(angularVelocity, setAngularVelocity); @@ -1691,7 +1691,7 @@ void EntityItem::setRegistrationPoint(const glm::vec3& value) { } } -void EntityItem::updatePosition(const glm::vec3& value) { +void EntityItem::setPosition(const glm::vec3& value) { if (getLocalPosition() != value) { setLocalPosition(value); diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 80fe1b3352..a57e4fefda 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -347,8 +347,7 @@ public: virtual void setCollisionShape(const btCollisionShape* shape) {} - // updateFoo() methods to be used when changes need to be accumulated in the _dirtyFlags - void updatePosition(const glm::vec3& value); + void setPosition(const glm::vec3& value); virtual void setParentID(const QUuid& parentID); virtual void setRotation(glm::quat orientation); virtual void setVelocity(const glm::vec3& velocity); From 68e9ec9b23862e00295c4dbe084a09cd1a44449d Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Thu, 2 Nov 2017 16:36:45 -0700 Subject: [PATCH 068/187] Use qCDebug instead of qDebug in audio-mixer --- assignment-client/src/audio/AudioMixer.cpp | 34 +++++++++---------- .../src/audio/AudioMixerClientData.cpp | 17 +++++----- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index 9ed6c7fdbc..7f088d8183 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -29,6 +29,7 @@ #include #include +#include "AudioLogging.h" #include "AudioHelpers.h" #include "AudioRingBuffer.h" #include "AudioMixerClientData.h" @@ -130,7 +131,7 @@ void AudioMixer::queueReplicatedAudioPacket(QSharedPointer mess PacketType rewrittenType = PacketTypeEnum::getReplicatedPacketMapping().key(message->getType()); if (rewrittenType == PacketType::Unknown) { - qDebug() << "Cannot unwrap replicated packet type not present in REPLICATED_PACKET_WRAPPING"; + qCDebug(audio) << "Cannot unwrap replicated packet type not present in REPLICATED_PACKET_WRAPPING"; } auto replicatedMessage = QSharedPointer::create(audioData, rewrittenType, @@ -345,7 +346,7 @@ void AudioMixer::sendStatsPacket() { void AudioMixer::run() { - qDebug() << "Waiting for connection to domain to request settings from domain-server."; + qCDebug(audio) << "Waiting for connection to domain to request settings from domain-server."; // wait until we have the domain-server settings, otherwise we bail DomainHandler& domainHandler = DependencyManager::get()->getDomainHandler(); @@ -502,14 +503,14 @@ void AudioMixer::throttle(std::chrono::microseconds duration, int frame) { int proportionalTerm = 1 + (_trailingMixRatio - TARGET) / 0.1f; _throttlingRatio += THROTTLE_RATE * proportionalTerm; _throttlingRatio = std::min(_throttlingRatio, 1.0f); - qDebug("audio-mixer is struggling (%f mix/sleep) - throttling %f of streams", - (double)_trailingMixRatio, (double)_throttlingRatio); + qCDebug(audio) << "audio-mixer is struggling (" << _trailingMixRatio << "mix/sleep) - throttling" + << _throttlingRatio << "of streams"; } else if (_throttlingRatio > 0.0f && _trailingMixRatio <= BACKOFF_TARGET) { int proportionalTerm = 1 + (TARGET - _trailingMixRatio) / 0.2f; _throttlingRatio -= BACKOFF_RATE * proportionalTerm; _throttlingRatio = std::max(_throttlingRatio, 0.0f); - qDebug("audio-mixer is recovering (%f mix/sleep) - throttling %f of streams", - (double)_trailingMixRatio, (double)_throttlingRatio); + qCDebug(audio) << "audio-mixer is recovering (" << _trailingMixRatio << "mix/sleep) - throttling" + << _throttlingRatio << "of streams"; } } } @@ -534,7 +535,7 @@ void AudioMixer::clearDomainSettings() { } void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { - qDebug() << "AVX2 Support:" << (cpuSupportsAVX2() ? "enabled" : "disabled"); + qCDebug(audio) << "AVX2 Support:" << (cpuSupportsAVX2() ? "enabled" : "disabled"); if (settingsObject.contains(AUDIO_THREADING_GROUP_KEY)) { QJsonObject audioThreadingGroupObject = settingsObject[AUDIO_THREADING_GROUP_KEY].toObject(); @@ -557,7 +558,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { const QString DYNAMIC_JITTER_BUFFER_JSON_KEY = "dynamic_jitter_buffer"; bool enableDynamicJitterBuffer = audioBufferGroupObject[DYNAMIC_JITTER_BUFFER_JSON_KEY].toBool(); if (enableDynamicJitterBuffer) { - qDebug() << "Enabling dynamic jitter buffers."; + qCDebug(audio) << "Enabling dynamic jitter buffers."; bool ok; const QString DESIRED_JITTER_BUFFER_FRAMES_KEY = "static_desired_jitter_buffer_frames"; @@ -565,9 +566,9 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { if (!ok) { _numStaticJitterFrames = InboundAudioStream::DEFAULT_STATIC_JITTER_FRAMES; } - qDebug() << "Static desired jitter buffer frames:" << _numStaticJitterFrames; + qCDebug(audio) << "Static desired jitter buffer frames:" << _numStaticJitterFrames; } else { - qDebug() << "Disabling dynamic jitter buffers."; + qCDebug(audio) << "Disabling dynamic jitter buffers."; _numStaticJitterFrames = DISABLE_STATIC_JITTER_FRAMES; } @@ -621,7 +622,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { if (audioEnvGroupObject[CODEC_PREFERENCE_ORDER].isString()) { QString codecPreferenceOrder = audioEnvGroupObject[CODEC_PREFERENCE_ORDER].toString(); _codecPreferenceOrder = codecPreferenceOrder.split(","); - qDebug() << "Codec preference order changed to" << _codecPreferenceOrder; + qCDebug(audio) << "Codec preference order changed to" << _codecPreferenceOrder; } const QString ATTENATION_PER_DOULING_IN_DISTANCE = "attenuation_per_doubling_in_distance"; @@ -630,7 +631,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { float attenuation = audioEnvGroupObject[ATTENATION_PER_DOULING_IN_DISTANCE].toString().toFloat(&ok); if (ok) { _attenuationPerDoublingInDistance = attenuation; - qDebug() << "Attenuation per doubling in distance changed to" << _attenuationPerDoublingInDistance; + qCDebug(audio) << "Attenuation per doubling in distance changed to" << _attenuationPerDoublingInDistance; } } @@ -640,7 +641,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { float noiseMutingThreshold = audioEnvGroupObject[NOISE_MUTING_THRESHOLD].toString().toFloat(&ok); if (ok) { _noiseMutingThreshold = noiseMutingThreshold; - qDebug() << "Noise muting threshold changed to" << _noiseMutingThreshold; + qCDebug(audio) << "Noise muting threshold changed to" << _noiseMutingThreshold; } } @@ -680,8 +681,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { glm::vec3 dimensions(xMax - xMin, yMax - yMin, zMax - zMin); AABox zoneAABox(corner, dimensions); _audioZones.insert(zone, zoneAABox); - qDebug() << "Added zone:" << zone << "(corner:" << corner - << ", dimensions:" << dimensions << ")"; + qCDebug(audio) << "Added zone:" << zone << "(corner:" << corner << ", dimensions:" << dimensions << ")"; } } } @@ -712,7 +712,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { _audioZones.contains(settings.source) && _audioZones.contains(settings.listener)) { _zoneSettings.push_back(settings); - qDebug() << "Added Coefficient:" << settings.source << settings.listener << settings.coefficient; + qCDebug(audio) << "Added Coefficient:" << settings.source << settings.listener << settings.coefficient; } } } @@ -745,7 +745,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) { _zoneReverbSettings.push_back(settings); - qDebug() << "Added Reverb:" << zone << reverbTime << wetLevel; + qCDebug(audio) << "Added Reverb:" << zone << reverbTime << wetLevel; } } } diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index 3b3d6549ee..49453c6fc6 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -19,6 +19,7 @@ #include "InjectedAudioStream.h" +#include "AudioLogging.h" #include "AudioHelpers.h" #include "AudioMixer.h" #include "AudioMixerClientData.h" @@ -132,7 +133,7 @@ void AudioMixerClientData::optionallyReplicatePacket(ReceivedMessage& message, c if (PacketTypeEnum::getReplicatedPacketMapping().key(message.getType()) != PacketType::Unknown) { mirroredType = message.getType(); } else { - qDebug() << "Packet passed to optionallyReplicatePacket was not a replicatable type - returning"; + qCDebug(audio) << "Packet passed to optionallyReplicatePacket was not a replicatable type - returning"; return; } } @@ -193,11 +194,11 @@ void AudioMixerClientData::parsePerAvatarGainSet(ReceivedMessage& message, const if (avatarUuid.isNull()) { // set the MASTER avatar gain setMasterAvatarGain(gain); - qDebug() << "Setting MASTER avatar gain for " << uuid << " to " << gain; + qCDebug(audio) << "Setting MASTER avatar gain for " << uuid << " to " << gain; } else { // set the per-source avatar gain hrtfForStream(avatarUuid, QUuid()).setGainAdjustment(gain); - qDebug() << "Setting avatar gain adjustment for hrtf[" << uuid << "][" << avatarUuid << "] to " << gain; + qCDebug(audio) << "Setting avatar gain adjustment for hrtf[" << uuid << "][" << avatarUuid << "] to " << gain; } } @@ -284,7 +285,7 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) { auto avatarAudioStream = new AvatarAudioStream(isStereo, AudioMixer::getStaticJitterFrames()); avatarAudioStream->setupCodec(_codec, _selectedCodecName, AudioConstants::MONO); - qDebug() << "creating new AvatarAudioStream... codec:" << _selectedCodecName; + qCDebug(audio) << "creating new AvatarAudioStream... codec:" << _selectedCodecName; connect(avatarAudioStream, &InboundAudioStream::mismatchedAudioCodec, this, &AudioMixerClientData::handleMismatchAudioFormat); @@ -323,7 +324,7 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) { #if INJECTORS_SUPPORT_CODECS injectorStream->setupCodec(_codec, _selectedCodecName, isStereo ? AudioConstants::STEREO : AudioConstants::MONO); - qDebug() << "creating new injectorStream... codec:" << _selectedCodecName; + qCDebug(audio) << "creating new injectorStream... codec:" << _selectedCodecName; #endif auto emplaced = _audioStreams.emplace( @@ -347,8 +348,8 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) { auto parseResult = matchingStream->parseData(message); if (matchingStream->getOverflowCount() > overflowBefore) { - qDebug() << "Just overflowed on stream from" << message.getSourceID() << "at" << message.getSenderSockAddr(); - qDebug() << "This stream is for" << (isMicStream ? "microphone audio" : "injected audio"); + qCDebug(audio) << "Just overflowed on stream from" << message.getSourceID() << "at" << message.getSenderSockAddr(); + qCDebug(audio) << "This stream is for" << (isMicStream ? "microphone audio" : "injected audio"); } return parseResult; @@ -697,7 +698,7 @@ void AudioMixerClientData::setupCodecForReplicatedAgent(QSharedPointerreadString(); if (codecString != _selectedCodecName) { - qDebug() << "Manually setting codec for replicated agent" << uuidStringWithoutCurlyBraces(getNodeID()) + qCDebug(audio) << "Manually setting codec for replicated agent" << uuidStringWithoutCurlyBraces(getNodeID()) << "-" << codecString; const std::pair codec = AudioMixer::negotiateCodec({ codecString }); From b5199220ab459aaffd0539612543c4cf3952f46c Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 2 Nov 2017 17:07:53 -0700 Subject: [PATCH 069/187] cleanup SpatiallyNestable Velocity to match WorldVelocity naming --- interface/src/avatar/AvatarMotionState.cpp | 4 +-- interface/src/avatar/MyAvatar.cpp | 12 +++---- interface/src/ui/OverlayConductor.cpp | 2 +- interface/src/ui/Stats.cpp | 2 +- .../src/avatars-renderer/Avatar.cpp | 6 ++-- libraries/avatars/src/AvatarData.h | 4 +-- libraries/avatars/src/ScriptAvatarData.cpp | 4 +-- libraries/entities/src/EntityItem.h | 13 +++---- .../entities/src/EntityScriptingInterface.cpp | 4 +-- libraries/entities/src/PolyLineEntityItem.h | 2 +- libraries/physics/src/EntityMotionState.cpp | 6 ++-- libraries/physics/src/EntityMotionState.h | 4 +-- libraries/shared/src/SpatiallyNestable.cpp | 34 +++++++++---------- libraries/shared/src/SpatiallyNestable.h | 16 ++++----- 14 files changed, 57 insertions(+), 56 deletions(-) diff --git a/interface/src/avatar/AvatarMotionState.cpp b/interface/src/avatar/AvatarMotionState.cpp index 4f6f2b0b71..900c1c0a11 100644 --- a/interface/src/avatar/AvatarMotionState.cpp +++ b/interface/src/avatar/AvatarMotionState.cpp @@ -116,12 +116,12 @@ glm::quat AvatarMotionState::getObjectRotation() const { // virtual glm::vec3 AvatarMotionState::getObjectLinearVelocity() const { - return _avatar->getVelocity(); + return _avatar->getWorldVelocity(); } // virtual glm::vec3 AvatarMotionState::getObjectAngularVelocity() const { - return _avatar->getAngularVelocity(); + return _avatar->getWorldAngularVelocity(); } // virtual diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index bfaae00f68..5427f3974d 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1617,13 +1617,13 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { _bodySensorMatrix = _follow.postPhysicsUpdate(*this, _bodySensorMatrix); if (_characterController.isEnabledAndReady()) { - setVelocity(_characterController.getLinearVelocity() + _characterController.getFollowVelocity()); + setWorldVelocity(_characterController.getLinearVelocity() + _characterController.getFollowVelocity()); if (_characterController.isStuck()) { _physicsSafetyPending = true; _goToPosition = getWorldPosition(); } } else { - setVelocity(getVelocity() + _characterController.getFollowVelocity()); + setWorldVelocity(getWorldVelocity() + _characterController.getFollowVelocity()); } } @@ -1962,7 +1962,7 @@ void MyAvatar::updateOrientation(float deltaTime) { if (qApp->isHMDMode() && getCharacterController()->getState() == CharacterController::State::Hover && _hmdRollControlEnabled && hasDriveInput()) { // Turn with head roll. const float MIN_CONTROL_SPEED = 0.01f; - float speed = glm::length(getVelocity()); + float speed = glm::length(getWorldVelocity()); if (speed >= MIN_CONTROL_SPEED) { // Feather turn when stopping moving. float speedFactor; @@ -1973,7 +1973,7 @@ void MyAvatar::updateOrientation(float deltaTime) { speedFactor = glm::min(speed / _lastDrivenSpeed, 1.0f); } - float direction = glm::dot(getVelocity(), getWorldOrientation() * Vectors::UNIT_NEG_Z) > 0.0f ? 1.0f : -1.0f; + float direction = glm::dot(getWorldVelocity(), getWorldOrientation() * Vectors::UNIT_NEG_Z) > 0.0f ? 1.0f : -1.0f; float rollAngle = glm::degrees(asinf(glm::dot(IDENTITY_UP, _hmdSensorOrientation * IDENTITY_RIGHT))); float rollSign = rollAngle < 0.0f ? -1.0f : 1.0f; @@ -2084,7 +2084,7 @@ void MyAvatar::updatePosition(float deltaTime) { updateActionMotor(deltaTime); } - vec3 velocity = getVelocity(); + vec3 velocity = getWorldVelocity(); float sensorToWorldScale = getSensorToWorldScale(); float sensorToWorldScale2 = sensorToWorldScale * sensorToWorldScale; const float MOVING_SPEED_THRESHOLD_SQUARED = 0.0001f; // 0.01 m/s @@ -2896,7 +2896,7 @@ glm::mat4 MyAvatar::FollowHelper::postPhysicsUpdate(const MyAvatar& myAvatar, co } float MyAvatar::getAccelerationEnergy() { - glm::vec3 velocity = getVelocity(); + glm::vec3 velocity = getWorldVelocity(); int changeInVelocity = abs(velocity.length() - priorVelocity.length()); float changeInEnergy = priorVelocity.length() * changeInVelocity * AVATAR_MOVEMENT_ENERGY_CONSTANT; priorVelocity = velocity; diff --git a/interface/src/ui/OverlayConductor.cpp b/interface/src/ui/OverlayConductor.cpp index dbf58c5cbc..ed8fa53fe2 100644 --- a/interface/src/ui/OverlayConductor.cpp +++ b/interface/src/ui/OverlayConductor.cpp @@ -49,7 +49,7 @@ bool OverlayConductor::updateAvatarIsAtRest() { const quint64 REST_DISABLE_TIME_USECS = 200 * 1000; // 200 ms const float AT_REST_THRESHOLD = 0.01f; - bool desiredAtRest = glm::length(myAvatar->getVelocity()) < AT_REST_THRESHOLD; + bool desiredAtRest = glm::length(myAvatar->getWorldVelocity()) < AT_REST_THRESHOLD; if (desiredAtRest != _desiredAtRest) { // start timer _desiredAtRestTimer = usecTimestampNow() + (desiredAtRest ? REST_ENABLE_TIME_USECS : REST_DISABLE_TIME_USECS); diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 4fa5e5726b..e194551add 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -194,7 +194,7 @@ void Stats::updateStats(bool force) { auto myAvatar = avatarManager->getMyAvatar(); glm::vec3 avatarPos = myAvatar->getWorldPosition(); STAT_UPDATE(position, QVector3D(avatarPos.x, avatarPos.y, avatarPos.z)); - STAT_UPDATE_FLOAT(speed, glm::length(myAvatar->getVelocity()), 0.01f); + STAT_UPDATE_FLOAT(speed, glm::length(myAvatar->getWorldVelocity()), 0.01f); STAT_UPDATE_FLOAT(yaw, myAvatar->getBodyYaw(), 0.1f); if (_expanded || force) { SharedNodePointer avatarMixer = nodeList->soloNodeOfType(NodeType::AvatarMixer); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 072eb22532..881f30299e 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -436,7 +436,7 @@ bool Avatar::isLookingAtMe(AvatarSharedPointer avatar) const { void Avatar::slamPosition(const glm::vec3& newPosition) { setWorldPosition(newPosition); _positionDeltaAccumulator = glm::vec3(0.0f); - setVelocity(glm::vec3(0.0f)); + setWorldVelocity(glm::vec3(0.0f)); _lastVelocity = glm::vec3(0.0f); } @@ -460,13 +460,13 @@ void Avatar::measureMotionDerivatives(float deltaTime) { _positionDeltaAccumulator = glm::vec3(0.0f); _acceleration = (velocity - _lastVelocity) * invDeltaTime; _lastVelocity = velocity; - setVelocity(velocity); + setWorldVelocity(velocity); // angular glm::quat orientation = getWorldOrientation(); glm::quat delta = glm::inverse(_lastOrientation) * orientation; glm::vec3 angularVelocity = glm::axis(delta) * glm::angle(delta) * invDeltaTime; - setAngularVelocity(angularVelocity); + setWorldAngularVelocity(angularVelocity); _lastOrientation = getWorldOrientation(); } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 61e27a482e..cad547b03c 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -365,8 +365,8 @@ class AvatarData : public QObject, public SpatiallyNestable { Q_PROPERTY(float headYaw READ getHeadYaw WRITE setHeadYaw) Q_PROPERTY(float headRoll READ getHeadRoll WRITE setHeadRoll) - Q_PROPERTY(glm::vec3 velocity READ getVelocity WRITE setVelocity) - Q_PROPERTY(glm::vec3 angularVelocity READ getAngularVelocity WRITE setAngularVelocity) + Q_PROPERTY(glm::vec3 velocity READ getWorldVelocity WRITE setWorldVelocity) + Q_PROPERTY(glm::vec3 angularVelocity READ getWorldAngularVelocity WRITE setWorldAngularVelocity) Q_PROPERTY(float audioLoudness READ getAudioLoudness WRITE setAudioLoudness) Q_PROPERTY(float audioAverageLoudness READ getAudioAverageLoudness WRITE setAudioAverageLoudness) diff --git a/libraries/avatars/src/ScriptAvatarData.cpp b/libraries/avatars/src/ScriptAvatarData.cpp index 6a57bab0b7..64cd534c8b 100644 --- a/libraries/avatars/src/ScriptAvatarData.cpp +++ b/libraries/avatars/src/ScriptAvatarData.cpp @@ -110,14 +110,14 @@ float ScriptAvatarData::getHeadRoll() const { // glm::vec3 ScriptAvatarData::getVelocity() const { if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) { - return sharedAvatarData->getVelocity(); + return sharedAvatarData->getWorldVelocity(); } else { return glm::vec3(); } } glm::vec3 ScriptAvatarData::getAngularVelocity() const { if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) { - return sharedAvatarData->getAngularVelocity(); + return sharedAvatarData->getWorldAngularVelocity(); } else { return glm::vec3(); } diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index a57e4fefda..403c41704b 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -192,7 +192,7 @@ public: float getDensity() const; - bool hasVelocity() const { return getVelocity() != ENTITY_ITEM_ZERO_VEC3; } + bool hasVelocity() const { return getWorldVelocity() != ENTITY_ITEM_ZERO_VEC3; } bool hasLocalVelocity() const { return getLocalVelocity() != ENTITY_ITEM_ZERO_VEC3; } glm::vec3 getGravity() const; /// get gravity in meters @@ -254,9 +254,9 @@ public: glm::vec3 getRegistrationPoint() const; /// registration point as ratio of entity /// registration point as ratio of entity - virtual void setRegistrationPoint(const glm::vec3& value); + virtual void setRegistrationPoint(const glm::vec3& value); // FIXME: this is suspicious! - bool hasAngularVelocity() const { return getAngularVelocity() != ENTITY_ITEM_ZERO_VEC3; } + bool hasAngularVelocity() const { return getWorldAngularVelocity() != ENTITY_ITEM_ZERO_VEC3; } bool hasLocalAngularVelocity() const { return getLocalAngularVelocity() != ENTITY_ITEM_ZERO_VEC3; } virtual void setAngularVelocity(const glm::vec3& angularVelocity); @@ -292,7 +292,7 @@ public: void setLocked(bool value); QString getUserData() const; - virtual void setUserData(const QString& value); + virtual void setUserData(const QString& value); // FIXME: This is suspicious // FIXME not thread safe? const SimulationOwner& getSimulationOwner() const { return _simulationOwner; } @@ -349,10 +349,11 @@ public: void setPosition(const glm::vec3& value); virtual void setParentID(const QUuid& parentID); - virtual void setRotation(glm::quat orientation); - virtual void setVelocity(const glm::vec3& velocity); virtual void setShapeType(ShapeType type) { /* do nothing */ } + void setRotation(glm::quat orientation); + void setVelocity(const glm::vec3& velocity); + uint32_t getDirtyFlags() const; void markDirtyFlags(uint32_t mask); void clearDirtyFlags(uint32_t mask = 0xffffffff); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 8382bc1920..155ec5b84a 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -376,7 +376,7 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& // If any of these changed, pull any missing properties from the entity. //existing entity, retrieve old velocity for check down below - oldVelocity = entity->getVelocity().length(); + oldVelocity = entity->getWorldVelocity().length(); if (!scriptSideProperties.parentIDChanged()) { properties.setParentID(entity->getParentID()); @@ -532,7 +532,7 @@ void EntityScriptingInterface::deleteEntity(QUuid id) { auto dimensions = entity->getDimensions(); float volume = dimensions.x * dimensions.y * dimensions.z; auto density = entity->getDensity(); - auto velocity = entity->getVelocity().length(); + auto velocity = entity->getWorldVelocity().length(); float cost = calculateCost(density * volume, velocity, 0); cost *= costMultiplier; diff --git a/libraries/entities/src/PolyLineEntityItem.h b/libraries/entities/src/PolyLineEntityItem.h index 7e47ce3aa7..3164a9646b 100644 --- a/libraries/entities/src/PolyLineEntityItem.h +++ b/libraries/entities/src/PolyLineEntityItem.h @@ -99,7 +99,7 @@ class PolyLineEntityItem : public EntityItem { void** intersectedObject, bool precisionPicking) const override { return false; } // disable these external interfaces as PolyLineEntities caculate their own dimensions based on the points they contain - virtual void setRegistrationPoint(const glm::vec3& value) override {}; + virtual void setRegistrationPoint(const glm::vec3& value) override {}; // FIXME: this is suspicious! virtual void debugDump() const override; static const float DEFAULT_LINE_WIDTH; diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index da98e838b0..8ebce9f811 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -125,7 +125,7 @@ void EntityMotionState::handleEasyChanges(uint32_t& flags) { if (flags & Simulation::DIRTY_SIMULATOR_ID) { if (_entity->getSimulatorID().isNull()) { // simulation ownership has been removed by an external simulator - if (glm::length2(_entity->getVelocity()) == 0.0f) { + if (glm::length2(_entity->getWorldVelocity()) == 0.0f) { // this object is coming to rest --> clear the ACTIVATION flag and _outgoingPriority flags &= ~Simulation::DIRTY_PHYSICS_ACTIVATION; _body->setActivationState(WANTS_DEACTIVATION); @@ -542,8 +542,8 @@ void EntityMotionState::sendUpdate(OctreeEditPacketSender* packetSender, uint32_ const float DYNAMIC_ANGULAR_VELOCITY_THRESHOLD = 0.087266f; // ~5 deg/sec bool movingSlowlyLinear = - glm::length2(_entity->getVelocity()) < (DYNAMIC_LINEAR_VELOCITY_THRESHOLD * DYNAMIC_LINEAR_VELOCITY_THRESHOLD); - bool movingSlowlyAngular = glm::length2(_entity->getAngularVelocity()) < + glm::length2(_entity->getWorldVelocity()) < (DYNAMIC_LINEAR_VELOCITY_THRESHOLD * DYNAMIC_LINEAR_VELOCITY_THRESHOLD); + bool movingSlowlyAngular = glm::length2(_entity->getWorldAngularVelocity()) < (DYNAMIC_ANGULAR_VELOCITY_THRESHOLD * DYNAMIC_ANGULAR_VELOCITY_THRESHOLD); bool movingSlowly = movingSlowlyLinear && movingSlowlyAngular && _entity->getAcceleration() == Vectors::ZERO; diff --git a/libraries/physics/src/EntityMotionState.h b/libraries/physics/src/EntityMotionState.h index 2bb692da81..ddfd7e1e4c 100644 --- a/libraries/physics/src/EntityMotionState.h +++ b/libraries/physics/src/EntityMotionState.h @@ -59,8 +59,8 @@ public: virtual glm::vec3 getObjectPosition() const override { return _entity->getWorldPosition() - ObjectMotionState::getWorldOffset(); } virtual glm::quat getObjectRotation() const override { return _entity->getWorldOrientation(); } - virtual glm::vec3 getObjectLinearVelocity() const override { return _entity->getVelocity(); } - virtual glm::vec3 getObjectAngularVelocity() const override { return _entity->getAngularVelocity(); } + virtual glm::vec3 getObjectLinearVelocity() const override { return _entity->getWorldVelocity(); } + virtual glm::vec3 getObjectAngularVelocity() const override { return _entity->getWorldAngularVelocity(); } virtual glm::vec3 getObjectGravity() const override { return _entity->getGravity(); } virtual glm::vec3 getObjectLinearVelocityChange() const override; diff --git a/libraries/shared/src/SpatiallyNestable.cpp b/libraries/shared/src/SpatiallyNestable.cpp index a931a524fd..2114cbf944 100644 --- a/libraries/shared/src/SpatiallyNestable.cpp +++ b/libraries/shared/src/SpatiallyNestable.cpp @@ -240,7 +240,7 @@ glm::vec3 SpatiallyNestable::worldToLocalVelocity(const glm::vec3& velocity, con if (!success) { return velocity; } - glm::vec3 parentVelocity = parent->getVelocity(success); + glm::vec3 parentVelocity = parent->getWorldVelocity(success); if (!success) { return velocity; } @@ -345,7 +345,7 @@ glm::vec3 SpatiallyNestable::localToWorldVelocity(const glm::vec3& velocity, con if (!success) { return velocity; } - glm::vec3 parentVelocity = parent->getVelocity(success); + glm::vec3 parentVelocity = parent->getWorldVelocity(success); if (!success) { return velocity; } @@ -473,7 +473,7 @@ void SpatiallyNestable::setWorldOrientation(const glm::quat& orientation) { #endif } -glm::vec3 SpatiallyNestable::getVelocity(bool& success) const { +glm::vec3 SpatiallyNestable::getWorldVelocity(bool& success) const { glm::vec3 result; Transform parentTransform = getParentTransform(success); if (!success) { @@ -490,16 +490,16 @@ glm::vec3 SpatiallyNestable::getVelocity(bool& success) const { return result; } -glm::vec3 SpatiallyNestable::getVelocity() const { +glm::vec3 SpatiallyNestable::getWorldVelocity() const { bool success; - glm::vec3 result = getVelocity(success); + glm::vec3 result = getWorldVelocity(success); if (!success) { - qCDebug(shared) << "Warning -- getVelocity failed" << getID(); + qCDebug(shared) << "Warning -- getWorldVelocity failed" << getID(); } return result; } -void SpatiallyNestable::setVelocity(const glm::vec3& velocity, bool& success) { +void SpatiallyNestable::setWorldVelocity(const glm::vec3& velocity, bool& success) { glm::vec3 parentVelocity = getParentVelocity(success); Transform parentTransform = getParentTransform(success); _velocityLock.withWriteLock([&] { @@ -518,9 +518,9 @@ void SpatiallyNestable::setVelocity(const glm::vec3& velocity, bool& success) { }); } -void SpatiallyNestable::setVelocity(const glm::vec3& velocity) { +void SpatiallyNestable::setWorldVelocity(const glm::vec3& velocity) { bool success; - setVelocity(velocity, success); + setWorldVelocity(velocity, success); if (!success) { qCDebug(shared) << "Warning -- setVelocity failed" << getID(); } @@ -533,12 +533,12 @@ glm::vec3 SpatiallyNestable::getParentVelocity(bool& success) const { return result; } if (parent) { - result = parent->getVelocity(success); + result = parent->getWorldVelocity(success); } return result; } -glm::vec3 SpatiallyNestable::getAngularVelocity(bool& success) const { +glm::vec3 SpatiallyNestable::getWorldAngularVelocity(bool& success) const { glm::vec3 result; Transform parentTransform = getParentTransform(success); if (!success) { @@ -554,16 +554,16 @@ glm::vec3 SpatiallyNestable::getAngularVelocity(bool& success) const { return result; } -glm::vec3 SpatiallyNestable::getAngularVelocity() const { +glm::vec3 SpatiallyNestable::getWorldAngularVelocity() const { bool success; - glm::vec3 result = getAngularVelocity(success); + glm::vec3 result = getWorldAngularVelocity(success); if (!success) { qCDebug(shared) << "Warning -- getAngularVelocity failed" << getID(); } return result; } -void SpatiallyNestable::setAngularVelocity(const glm::vec3& angularVelocity, bool& success) { +void SpatiallyNestable::setWorldAngularVelocity(const glm::vec3& angularVelocity, bool& success) { glm::vec3 parentAngularVelocity = getParentAngularVelocity(success); Transform parentTransform = getParentTransform(success); _angularVelocityLock.withWriteLock([&] { @@ -571,9 +571,9 @@ void SpatiallyNestable::setAngularVelocity(const glm::vec3& angularVelocity, boo }); } -void SpatiallyNestable::setAngularVelocity(const glm::vec3& angularVelocity) { +void SpatiallyNestable::setWorldAngularVelocity(const glm::vec3& angularVelocity) { bool success; - setAngularVelocity(angularVelocity, success); + setWorldAngularVelocity(angularVelocity, success); if (!success) { qCDebug(shared) << "Warning -- setAngularVelocity failed" << getID(); } @@ -586,7 +586,7 @@ glm::vec3 SpatiallyNestable::getParentAngularVelocity(bool& success) const { return result; } if (parent) { - result = parent->getAngularVelocity(success); + result = parent->getWorldAngularVelocity(success); } return result; } diff --git a/libraries/shared/src/SpatiallyNestable.h b/libraries/shared/src/SpatiallyNestable.h index 929c2d53f2..9cd38f9ce9 100644 --- a/libraries/shared/src/SpatiallyNestable.h +++ b/libraries/shared/src/SpatiallyNestable.h @@ -89,16 +89,16 @@ public: virtual void setWorldOrientation(const glm::quat& orientation, bool& success, bool tellPhysics = true); virtual void setWorldOrientation(const glm::quat& orientation); - virtual glm::vec3 getVelocity(bool& success) const; - virtual glm::vec3 getVelocity() const; - virtual void setVelocity(const glm::vec3& velocity, bool& success); - virtual void setVelocity(const glm::vec3& velocity); + virtual glm::vec3 getWorldVelocity(bool& success) const; + virtual glm::vec3 getWorldVelocity() const; + virtual void setWorldVelocity(const glm::vec3& velocity, bool& success); + virtual void setWorldVelocity(const glm::vec3& velocity); virtual glm::vec3 getParentVelocity(bool& success) const; - virtual glm::vec3 getAngularVelocity(bool& success) const; - virtual glm::vec3 getAngularVelocity() const; - virtual void setAngularVelocity(const glm::vec3& angularVelocity, bool& success); - virtual void setAngularVelocity(const glm::vec3& angularVelocity); + virtual glm::vec3 getWorldAngularVelocity(bool& success) const; + virtual glm::vec3 getWorldAngularVelocity() const; + virtual void setWorldAngularVelocity(const glm::vec3& angularVelocity, bool& success); + virtual void setWorldAngularVelocity(const glm::vec3& angularVelocity); virtual glm::vec3 getParentAngularVelocity(bool& success) const; virtual AACube getMaximumAACube(bool& success) const; From baff900839e61c7a207256d53cd767bb1f4b186a Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 2 Nov 2017 17:46:15 -0700 Subject: [PATCH 070/187] cleanup some writeLocks --- libraries/entities/src/EntityItem.cpp | 135 ++++++++++++++------------ 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index e4f88f6856..5b90d75b58 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1734,9 +1734,11 @@ void EntityItem::setParentID(const QUuid& value) { void EntityItem::setDimensions(const glm::vec3& value) { glm::vec3 newDimensions = glm::max(value, glm::vec3(0.0f)); // can never have negative dimensions if (getDimensions() != newDimensions) { - _dimensions = newDimensions; - markDirtyFlags(Simulation::DIRTY_SHAPE | Simulation::DIRTY_MASS); - _queryAACubeSet = false; + withWriteLock([&] { + _dimensions = newDimensions; + _dirtyFlags |= (Simulation::DIRTY_SHAPE | Simulation::DIRTY_MASS); + _queryAACubeSet = false; + }); locationChanged(); dimensionsChanged(); } @@ -1783,29 +1785,33 @@ void EntityItem::setVelocity(const glm::vec3& value) { void EntityItem::setDamping(float value) { auto clampedDamping = glm::clamp(value, 0.0f, 1.0f); - if (_damping != clampedDamping) { - _damping = clampedDamping; - _dirtyFlags |= Simulation::DIRTY_MATERIAL; - } + withWriteLock([&] { + if (_damping != clampedDamping) { + _damping = clampedDamping; + _dirtyFlags |= Simulation::DIRTY_MATERIAL; + } + }); } void EntityItem::setGravity(const glm::vec3& value) { - if (_gravity != value) { - if (getShapeType() == SHAPE_TYPE_STATIC_MESH) { - _gravity = Vectors::ZERO; - } else { - float magnitude = glm::length(value); - if (!glm::isnan(magnitude)) { - const float MAX_ACCELERATION_OF_GRAVITY = 10.0f * 9.8f; // 10g - if (magnitude > MAX_ACCELERATION_OF_GRAVITY) { - _gravity = (MAX_ACCELERATION_OF_GRAVITY / magnitude) * value; - } else { - _gravity = value; + withWriteLock([&] { + if (_gravity != value) { + if (getShapeType() == SHAPE_TYPE_STATIC_MESH) { + _gravity = Vectors::ZERO; + } else { + float magnitude = glm::length(value); + if (!glm::isnan(magnitude)) { + const float MAX_ACCELERATION_OF_GRAVITY = 10.0f * 9.8f; // 10g + if (magnitude > MAX_ACCELERATION_OF_GRAVITY) { + _gravity = (MAX_ACCELERATION_OF_GRAVITY / magnitude) * value; + } else { + _gravity = value; + } + _dirtyFlags |= Simulation::DIRTY_LINEAR_VELOCITY; } - _dirtyFlags |= Simulation::DIRTY_LINEAR_VELOCITY; } } - } + }); } void EntityItem::setAngularVelocity(const glm::vec3& value) { @@ -1834,47 +1840,58 @@ void EntityItem::setAngularVelocity(const glm::vec3& value) { void EntityItem::setAngularDamping(float value) { auto clampedDamping = glm::clamp(value, 0.0f, 1.0f); - if (_angularDamping != clampedDamping) { - _angularDamping = clampedDamping; - _dirtyFlags |= Simulation::DIRTY_MATERIAL; - } + withWriteLock([&] { + if (_angularDamping != clampedDamping) { + _angularDamping = clampedDamping; + _dirtyFlags |= Simulation::DIRTY_MATERIAL; + } + }); } void EntityItem::setCollisionless(bool value) { - if (_collisionless != value) { - _collisionless = value; - _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; - } + withWriteLock([&] { + if (_collisionless != value) { + _collisionless = value; + _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; + } + }); } void EntityItem::setCollisionMask(uint8_t value) { - if ((_collisionMask & ENTITY_COLLISION_MASK_DEFAULT) != (value & ENTITY_COLLISION_MASK_DEFAULT)) { - _collisionMask = (value & ENTITY_COLLISION_MASK_DEFAULT); - _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; - } + withWriteLock([&] { + if ((_collisionMask & ENTITY_COLLISION_MASK_DEFAULT) != (value & ENTITY_COLLISION_MASK_DEFAULT)) { + _collisionMask = (value & ENTITY_COLLISION_MASK_DEFAULT); + _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; + } + }); } void EntityItem::setDynamic(bool value) { if (getDynamic() != value) { - // dynamic and STATIC_MESH are incompatible so we check for that case - if (value && getShapeType() == SHAPE_TYPE_STATIC_MESH) { - if (_dynamic) { - _dynamic = false; + withWriteLock([&] { + // dynamic and STATIC_MESH are incompatible so we check for that case + if (value && getShapeType() == SHAPE_TYPE_STATIC_MESH) { + if (_dynamic) { + _dynamic = false; + _dirtyFlags |= Simulation::DIRTY_MOTION_TYPE; + } + } else { + _dynamic = value; _dirtyFlags |= Simulation::DIRTY_MOTION_TYPE; } - } else { - _dynamic = value; - _dirtyFlags |= Simulation::DIRTY_MOTION_TYPE; - } + }); } } void EntityItem::setRestitution(float value) { float clampedValue = glm::max(glm::min(ENTITY_ITEM_MAX_RESTITUTION, value), ENTITY_ITEM_MIN_RESTITUTION); - if (_restitution != clampedValue) { - _restitution = clampedValue; - _dirtyFlags |= Simulation::DIRTY_MATERIAL; - } + withWriteLock([&] { + if (_restitution != clampedValue) { + _restitution = clampedValue; + _dirtyFlags |= Simulation::DIRTY_MATERIAL; + } + }); + } void EntityItem::setFriction(float value) { @@ -1888,17 +1905,21 @@ void EntityItem::setFriction(float value) { } void EntityItem::setLifetime(float value) { - if (_lifetime != value) { - _lifetime = value; - _dirtyFlags |= Simulation::DIRTY_LIFETIME; - } + withWriteLock([&] { + if (_lifetime != value) { + _lifetime = value; + _dirtyFlags |= Simulation::DIRTY_LIFETIME; + } + }); } void EntityItem::setCreated(uint64_t value) { - if (_created != value) { - _created = value; - _dirtyFlags |= Simulation::DIRTY_LIFETIME; - } + withWriteLock([&] { + if (_created != value) { + _created = value; + _dirtyFlags |= Simulation::DIRTY_LIFETIME; + } + }); } void EntityItem::computeCollisionGroupAndFinalMask(int16_t& group, int16_t& mask) const { @@ -1970,16 +1991,6 @@ void EntityItem::setSimulationOwner(const QUuid& id, quint8 priority) { _simulationOwner.set(id, priority); } -/* -void EntityItem::setSimulationOwner(const SimulationOwner& owner) { - if (wantTerseEditLogging() && _simulationOwner != owner) { - qCDebug(entities) << "sim ownership for" << getDebugName() << "is now" << owner; - } - - _simulationOwner.set(owner); -} -*/ - void EntityItem::setSimulationOwner(const SimulationOwner& owner) { // NOTE: this method only used by EntityServer. The Interface uses special code in readEntityDataFromBuffer(). if (wantTerseEditLogging() && _simulationOwner != owner) { From dd4275430b830309ae4a341605c1599e81dcf055 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 2 Nov 2017 17:48:37 -0700 Subject: [PATCH 071/187] fix hover events, working on HUD events --- interface/src/Application.cpp | 36 ++++++++++ interface/src/Application.h | 2 + .../src/raypick/PointerScriptingInterface.h | 2 +- interface/src/ui/overlays/Web3DOverlay.cpp | 27 +++---- .../src/RenderableWebEntityItem.cpp | 10 +-- .../src/pointers/PickCacheOptimizer.h | 9 +-- libraries/pointers/src/pointers/Pointer.cpp | 70 +++++++++++++------ libraries/pointers/src/pointers/Pointer.h | 2 + libraries/shared/src/PointerEvent.h | 9 ++- libraries/ui/CMakeLists.txt | 3 +- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 59 +++------------- libraries/ui/src/ui/OffscreenQmlSurface.h | 5 -- 12 files changed, 129 insertions(+), 105 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3a1f970438..d81332e7d5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1504,6 +1504,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); }); + auto pointerManager = DependencyManager::get(); + connect(pointerManager.data(), &PointerManager::hoverBeginHUD, this, &Application::handleHUDPointerEvent); + connect(pointerManager.data(), &PointerManager::hoverContinueHUD, this, &Application::handleHUDPointerEvent); + connect(pointerManager.data(), &PointerManager::hoverEndHUD, this, &Application::handleHUDPointerEvent); + connect(pointerManager.data(), &PointerManager::triggerBeginHUD, this, &Application::handleHUDPointerEvent); + connect(pointerManager.data(), &PointerManager::triggerContinueHUD, this, &Application::handleHUDPointerEvent); + connect(pointerManager.data(), &PointerManager::triggerEndHUD, this, &Application::handleHUDPointerEvent); + // Add periodic checks to send user activity data static int CHECK_NEARBY_AVATARS_INTERVAL_MS = 10000; static int NEARBY_AVATAR_RADIUS_METERS = 10; @@ -7479,4 +7487,32 @@ void Application::setAvatarOverrideUrl(const QUrl& url, bool save) { _avatarOverrideUrl = url; _saveAvatarOverrideUrl = save; } + +void Application::handleHUDPointerEvent(const QUuid& id, const PointerEvent& event) { + QEvent::Type type = QEvent::Type::MouseMove; + switch (event.getType()) { + case PointerEvent::Press: + type = QEvent::Type::MouseButtonPress; + break; + case PointerEvent::DoublePress: + type = QEvent::Type::MouseButtonDblClick; + break; + case PointerEvent::Release: + type = QEvent::Type::MouseButtonRelease; + break; + case PointerEvent::Move: + type = QEvent::Type::MouseMove; + break; + default: + break; + } + + QPointF screenPos(event.getPos2D().x, event.getPos2D().y); + //QMouseEvent mouseEvent(type, screenPos, Qt::MouseButton(event.getButton()), Qt::MouseButtons(event.getButtons()), event.getKeyboardModifiers()); + QMouseEvent moveEvent(QEvent::Type::MouseMove, screenPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); + sendEvent(_glWidget, &moveEvent); + QMouseEvent mouseEvent(type, screenPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); + sendEvent(_glWidget, &mouseEvent); +} + #include "Application.moc" diff --git a/interface/src/Application.h b/interface/src/Application.h index d2a55db216..a229c4b91a 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -434,6 +434,8 @@ private slots: void handleSandboxStatus(QNetworkReply* reply); void switchDisplayMode(); + + void handleHUDPointerEvent(const QUuid& id, const PointerEvent& event); private: static void initDisplay(); void init(); diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h index 722ba8cec5..8ea9594fda 100644 --- a/interface/src/raypick/PointerScriptingInterface.h +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -35,7 +35,7 @@ public slots: Q_INVOKABLE void setIgnoreItems(unsigned int uid, const QScriptValue& ignoreEntities) const; Q_INVOKABLE void setIncludeItems(unsigned int uid, const QScriptValue& includeEntities) const; - Q_INVOKABLE void setLockEndUid(unsigned int uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } + Q_INVOKABLE void setLockEndUUID(unsigned int uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } signals: void triggerBegin(const QUuid& id, const PointerEvent& pointerEvent); diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 5339deba2b..b8683b43e3 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -160,14 +160,6 @@ void Web3DOverlay::buildWebSurface() { QObject::connect(_webSurface.data(), &OffscreenQmlSurface::webEventReceived, this, &Web3DOverlay::webEventReceived); } -void Web3DOverlay::hoverLeaveOverlay(const PointerEvent& event) { - if ((_pressed || (!_activeTouchPoints.empty() && _touchBeginAccepted))) { - PointerEvent endEvent(PointerEvent::Release, event.getID(), event.getPos2D(), event.getPos3D(), event.getNormal(), event.getDirection(), - event.getButton(), event.getButtons(), event.getKeyboardModifiers()); - handlePointerEvent(endEvent); - } -} - void Web3DOverlay::update(float deltatime) { if (_webSurface) { // update globalPosition @@ -348,6 +340,17 @@ void Web3DOverlay::setProxyWindow(QWindow* proxyWindow) { _webSurface->setProxyWindow(proxyWindow); } +void Web3DOverlay::hoverLeaveOverlay(const PointerEvent& event) { + if ((_pressed || (!_activeTouchPoints.empty() && _touchBeginAccepted)) && event.sendReleaseOnHoverLeave()) { + PointerEvent endEvent(PointerEvent::Release, event.getID(), event.getPos2D(), event.getPos3D(), event.getNormal(), event.getDirection(), + event.getButton(), event.getButtons(), event.getKeyboardModifiers()); + handlePointerEvent(endEvent); + // QML onReleased is only triggered if a click has happened first. We need to send this "fake" mouse move event to properly trigger an onExited. + PointerEvent endMoveEvent(PointerEvent::Move, event.getID()); + handlePointerEvent(endMoveEvent); + } +} + void Web3DOverlay::handlePointerEvent(const PointerEvent& event) { if (event.getType() == PointerEvent::Press) { _pressed = true; @@ -386,7 +389,7 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { } if (state == Qt::TouchPointReleased && _activeTouchPoints.size() == 1 && _activeTouchPoints.count(event.getID())) { // If the last active touch point is being released, send an end touchType = QEvent::TouchEnd; - } + } { QTouchEvent::TouchPoint point; @@ -428,7 +431,7 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { #if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); } #endif @@ -446,7 +449,7 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { #if QT_VERSION < QT_VERSION_CHECK(5, 9, 0) if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); } #endif @@ -485,7 +488,7 @@ void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) { return; } - QMouseEvent mouseEvent(type, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QMouseEvent mouseEvent(type, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); } diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index ad4230c55b..cdeba865ba 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -315,11 +315,13 @@ void WebEntityRenderer::loadSourceURL() { } void WebEntityRenderer::hoverLeaveEntity(const PointerEvent& event) { - if (!_lastLocked && _webSurface && _pressed) { - // If the user mouses off the entity while the button is down, simulate a touch end. + if (!_lastLocked && _webSurface && _pressed && event.sendReleaseOnHoverLeave()) { PointerEvent endEvent(PointerEvent::Release, event.getID(), event.getPos2D(), event.getPos3D(), event.getNormal(), event.getDirection(), event.getButton(), event.getButtons(), event.getKeyboardModifiers()); handlePointerEvent(endEvent); + // QML onReleased is only triggered if a click has happened first. We need to send this "fake" mouse move event to properly trigger an onExited. + PointerEvent endMoveEvent(PointerEvent::Move, event.getID()); + handlePointerEvent(endMoveEvent); } } @@ -396,7 +398,7 @@ void WebEntityRenderer::handlePointerEvent(const PointerEvent& event) { #if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); } #endif @@ -414,7 +416,7 @@ void WebEntityRenderer::handlePointerEvent(const PointerEvent& event) { #if QT_VERSION < QT_VERSION_CHECK(5, 9, 0) if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); } #endif diff --git a/libraries/pointers/src/pointers/PickCacheOptimizer.h b/libraries/pointers/src/pointers/PickCacheOptimizer.h index f3bdbb87b0..18285f3a6f 100644 --- a/libraries/pointers/src/pointers/PickCacheOptimizer.h +++ b/libraries/pointers/src/pointers/PickCacheOptimizer.h @@ -71,18 +71,15 @@ void PickCacheOptimizer::update(QHash> pick = std::static_pointer_cast>(picks[uid]); - if (!pick->isEnabled() || pick->getFilter().doesPickNothing() || pick->getMaxDistance() < 0.0f) { - continue; - } T mathematicalPick = pick->getMathematicalPick(); + PickResultPointer res = pick->getDefaultResult(mathematicalPick.toVariantMap()); - if (!mathematicalPick) { + if (!pick->isEnabled() || pick->getFilter().doesPickNothing() || pick->getMaxDistance() < 0.0f || !mathematicalPick) { + pick->setPickResult(res); continue; } - PickResultPointer res = pick->getDefaultResult(mathematicalPick.toVariantMap()); - if (pick->getFilter().doesPickEntities()) { PickCacheKey entityKey = { pick->getFilter().getEntityFlags(), pick->getIncludeItems(), pick->getIgnoreItems() }; if (!checkAndCompareCachedResults(mathematicalPick, results, res, entityKey)) { diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index f57bded5ad..354669a55e 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -59,14 +59,45 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p // TODO: avatars? auto pointerManager = DependencyManager::get(); + // NOTE: After this loop: _prevButtons = buttons that were removed + // If switching to disabled or should stop triggering, release all buttons + Buttons buttons; + Buttons newButtons; + Buttons sameButtons; + const std::string PRIMARY_BUTTON = "Primary"; + bool primaryPressed = false; + if (_enabled && shouldTrigger()) { + buttons = getPressedButtons(); + primaryPressed = buttons.find(PRIMARY_BUTTON) != buttons.end(); + for (const std::string& button : buttons) { + if (_prevButtons.find(button) == _prevButtons.end()) { + newButtons.insert(button); + } else { + sameButtons.insert(button); + _prevButtons.erase(button); + } + } + } + // Hover events + bool doHover = shouldHover(); Pointer::PickedObject hoveredObject = getHoveredObject(pickResult); PointerEvent hoveredEvent = buildPointerEvent(hoveredObject, pickResult); hoveredEvent.setType(PointerEvent::Move); hoveredEvent.setID(pointerID); - // TODO: set buttons on hover events - hoveredEvent.setButton(PointerEvent::NoButtons); - if (_enabled && _hover && shouldHover()) { + bool releaseOnHoverLeave = !primaryPressed || (!_enabled && _prevEnabled) || (!doHover && _prevDoHover); + hoveredEvent.setReleaseOnHoverLeave(releaseOnHoverLeave); + + // if shouldHover && !_prevDoHover, only send hoverBegin + if (_enabled && _hover && doHover && !_prevDoHover) { + if (hoveredObject.type == ENTITY) { + emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); + } else if (hoveredObject.type == OVERLAY) { + emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); + } else if (hoveredObject.type == HUD) { + emit pointerManager->hoverBeginHUD(hoveredObject.objectID, hoveredEvent); + } + } else if (_enabled && _hover && doHover) { if (hoveredObject.type == OVERLAY) { if (_prevHoveredObject.type == OVERLAY) { if (hoveredObject.objectID == _prevHoveredObject.objectID) { @@ -74,6 +105,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } else { PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); prevHoveredEvent.setID(pointerID); + prevHoveredEvent.setReleaseOnHoverLeave(releaseOnHoverLeave); emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); } @@ -95,6 +127,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } else { PointerEvent prevHoveredEvent = buildPointerEvent(_prevHoveredObject, pickResult); prevHoveredEvent.setID(pointerID); + prevHoveredEvent.setReleaseOnHoverLeave(releaseOnHoverLeave); emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, prevHoveredEvent); emit pointerManager->hoverBeginEntity(hoveredObject.objectID, hoveredEvent); } @@ -123,20 +156,15 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } } - // Trigger events - Buttons buttons; - Buttons newButtons; - Buttons sameButtons; - // NOTE: After this loop: _prevButtons = buttons that were removed - // If switching to disabled or should stop triggering, release all buttons - if (_enabled && shouldTrigger()) { - buttons = getPressedButtons(); - for (const std::string& button : buttons) { - if (_prevButtons.find(button) == _prevButtons.end()) { - newButtons.insert(button); - } else { - sameButtons.insert(button); - _prevButtons.erase(button); + if (_hover) { + // send hoverEnd events if we disable the pointer, disable hovering, or actually stop hovering over an object + if ((!_enabled && _prevEnabled) || (!doHover && _prevDoHover) || (hoveredObject.type == NONE && _prevHoveredObject.type != NONE)) { + if (_prevHoveredObject.type == ENTITY) { + emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == OVERLAY) { + emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); + } else if (_prevHoveredObject.type == HUD) { + emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); } } } @@ -156,15 +184,13 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } _triggeredObjects[button] = hoveredObject; } - // We still want other trigger events for Focus buttons, but they only set focus on triggerBegin - hoveredEvent.setShouldFocus(false); // Trigger continue for (const std::string& button : sameButtons) { PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); triggeredEvent.setID(pointerID); triggeredEvent.setType(PointerEvent::Move); - hoveredEvent.setButton(chooseButton(button)); + triggeredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { emit pointerManager->triggerContinueEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { @@ -179,7 +205,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); triggeredEvent.setID(pointerID); triggeredEvent.setType(PointerEvent::Release); - hoveredEvent.setButton(chooseButton(button)); + triggeredEvent.setButton(chooseButton(button)); if (_triggeredObjects[button].type == ENTITY) { emit pointerManager->triggerEndEntity(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == OVERLAY) { @@ -192,6 +218,8 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p _prevHoveredObject = hoveredObject; _prevButtons = buttons; + _prevEnabled = _enabled; + _prevDoHover = doHover; } PointerEvent::Button Pointer::chooseButton(const std::string& button) { diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index fc43e121f0..d8661436b9 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -89,6 +89,8 @@ protected: private: PickedObject _prevHoveredObject; Buttons _prevButtons; + bool _prevEnabled { false }; + bool _prevDoHover { false }; std::unordered_map _triggeredObjects; PointerEvent::Button chooseButton(const std::string& button); diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index 239e7c6e4e..f6b1a81602 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -37,9 +37,9 @@ public: PointerEvent(); PointerEvent(EventType type, uint32_t id, - const glm::vec2& pos2D, const glm::vec3& pos3D, - const glm::vec3& normal, const glm::vec3& direction, - Button button, uint32_t buttons = NoButtons, Qt::KeyboardModifiers keyboardModifiers = Qt::KeyboardModifier::NoModifier); + const glm::vec2& pos2D = glm::vec2(NAN), const glm::vec3& pos3D = glm::vec3(NAN), + const glm::vec3& normal = glm::vec3(NAN), const glm::vec3& direction = glm::vec3(NAN), + Button button = NoButtons, uint32_t buttons = NoButtons, Qt::KeyboardModifiers keyboardModifiers = Qt::KeyboardModifier::NoModifier); static QScriptValue toScriptValue(QScriptEngine* engine, const PointerEvent& event); static void fromScriptValue(const QScriptValue& object, PointerEvent& event); @@ -56,11 +56,13 @@ public: uint32_t getButtons() const { return _buttons; } Qt::KeyboardModifiers getKeyboardModifiers() const { return _keyboardModifiers; } bool shouldFocus() const { return _shouldFocus; } + bool sendReleaseOnHoverLeave() const { return _releaseOnHoverLeave; } void setID(uint32_t id) { _id = id; } void setType(EventType type) { _type = type; } void setButton(Button button); void setShouldFocus(bool focus) { _shouldFocus = focus; } + void setReleaseOnHoverLeave(bool releaseOnHoverLeave) { _releaseOnHoverLeave = releaseOnHoverLeave; } private: EventType _type; @@ -75,6 +77,7 @@ private: Qt::KeyboardModifiers _keyboardModifiers; // set of keys held when event was generated bool _shouldFocus { true }; + bool _releaseOnHoverLeave { true }; }; QDebug& operator<<(QDebug& dbg, const PointerEvent& p); diff --git a/libraries/ui/CMakeLists.txt b/libraries/ui/CMakeLists.txt index 334cce97e5..f28157ff97 100644 --- a/libraries/ui/CMakeLists.txt +++ b/libraries/ui/CMakeLists.txt @@ -1,7 +1,6 @@ set(TARGET_NAME ui) setup_hifi_library(OpenGL Network Qml Quick Script WebChannel WebEngine WebSockets XmlPatterns) -link_hifi_libraries(shared networking gl audio pointers) -include_hifi_library_headers(controllers) +link_hifi_libraries(shared networking gl audio) # Required for some low level GL interaction in the OffscreenQMLSurface target_opengl() diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 204986090c..08662031da 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -49,8 +49,6 @@ #include "Logging.h" -#include - Q_LOGGING_CATEGORY(trace_render_qml, "trace.render.qml") Q_LOGGING_CATEGORY(trace_render_qml_gl, "trace.render.qml.gl") Q_LOGGING_CATEGORY(offscreenFocus, "hifi.offscreen.focus") @@ -531,13 +529,6 @@ bool OffscreenQmlSurface::allowNewFrame(uint8_t fps) { } OffscreenQmlSurface::OffscreenQmlSurface() { - auto pointerManager = DependencyManager::get(); - connect(pointerManager.data(), &PointerManager::hoverBeginHUD, this, &OffscreenQmlSurface::handlePointerEvent); - connect(pointerManager.data(), &PointerManager::hoverContinueHUD, this, &OffscreenQmlSurface::handlePointerEvent); - connect(pointerManager.data(), &PointerManager::hoverEndHUD, this, &OffscreenQmlSurface::handlePointerEvent); - connect(pointerManager.data(), &PointerManager::triggerBeginHUD, this, &OffscreenQmlSurface::handlePointerEvent); - connect(pointerManager.data(), &PointerManager::triggerContinueHUD, this, &OffscreenQmlSurface::handlePointerEvent); - connect(pointerManager.data(), &PointerManager::triggerEndHUD, this, &OffscreenQmlSurface::handlePointerEvent); } OffscreenQmlSurface::~OffscreenQmlSurface() { @@ -941,8 +932,14 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even transformedPos, mouseEvent->screenPos(), mouseEvent->button(), mouseEvent->buttons(), mouseEvent->modifiers()); - if (sendMouseEvent(mappedEvent)) { - return true; + if (event->type() == QEvent::MouseMove) { + // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install + // need to investigate into why this crash is happening. + //_qmlContext->setContextProperty("lastMousePosition", mouseEvent.localPos()); + } + mappedEvent.ignore(); + if (QCoreApplication::sendEvent(_quickWindow, &mappedEvent)) { + return mappedEvent.isAccepted(); } break; } @@ -954,46 +951,6 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even return false; } -void OffscreenQmlSurface::handlePointerEvent(const QUuid& id, const PointerEvent& event) { - if (_paused) { - return; - } - - QEvent::Type type = QEvent::Type::MouseMove; - switch (event.getType()) { - case PointerEvent::Press: - type = QEvent::Type::MouseButtonPress; - break; - case PointerEvent::DoublePress: - type = QEvent::Type::MouseButtonDblClick; - break; - case PointerEvent::Release: - type = QEvent::Type::MouseButtonRelease; - break; - case PointerEvent::Move: - type = QEvent::Type::MouseMove; - break; - default: - break; - } - QPointF screenPos(event.getPos2D().x, event.getPos2D().y); - QMouseEvent mouseEvent(type, screenPos, Qt::MouseButton(event.getButton()), Qt::MouseButtons(event.getButtons()), event.getKeyboardModifiers()); - sendMouseEvent(mouseEvent); -} - -bool OffscreenQmlSurface::sendMouseEvent(QMouseEvent& mouseEvent) { - if (mouseEvent.type() == QEvent::MouseMove) { - // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install - // need to investigate into why this crash is happening. - //_qmlContext->setContextProperty("lastMousePosition", mouseEvent.localPos()); - } - mouseEvent.ignore(); - if (QCoreApplication::sendEvent(_quickWindow, &mouseEvent)) { - return mouseEvent.isAccepted(); - } - return false; -} - void OffscreenQmlSurface::pause() { _paused = true; } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 3deab07411..12ee9e59a1 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -30,8 +30,6 @@ class QQmlContext; class QQmlComponent; class QQuickWindow; class QQuickItem; -class QMouseEvent; -class PointerEvent; // GPU resources are typically buffered for one copy being used by the renderer, // one copy in flight, and one copy being used by the receiver @@ -137,7 +135,6 @@ private: private slots: void updateQuick(); void onFocusObjectChanged(QObject* newFocus); - void handlePointerEvent(const QUuid& id, const PointerEvent& event); private: QQuickWindow* _quickWindow { nullptr }; @@ -164,8 +161,6 @@ private: QWindow* _proxyWindow { nullptr }; QQuickItem* _currentFocusItem { nullptr }; - - bool sendMouseEvent(QMouseEvent& mouseEvent); }; #endif From 74ceab1e680f70d18084336a0e9332340c49ac4a Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 2 Nov 2017 19:30:39 -0700 Subject: [PATCH 072/187] fix mac and unic build --- libraries/entities/src/EntityItem.cpp | 2 +- libraries/entities/src/EntityItem.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 5b90d75b58..a60b98a711 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1913,7 +1913,7 @@ void EntityItem::setLifetime(float value) { }); } -void EntityItem::setCreated(uint64_t value) { +void EntityItem::setCreated(quint64 value) { withWriteLock([&] { if (_created != value) { _created = value; diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 403c41704b..a7d8adc472 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -348,7 +348,7 @@ public: virtual void setCollisionShape(const btCollisionShape* shape) {} void setPosition(const glm::vec3& value); - virtual void setParentID(const QUuid& parentID); + virtual void setParentID(const QUuid& parentID) override; virtual void setShapeType(ShapeType type) { /* do nothing */ } void setRotation(glm::quat orientation); From ce58b6c4017b2f0343694417065c6363af33235c Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 3 Nov 2017 17:15:30 -0700 Subject: [PATCH 073/187] trying to fix HUD events, abstracting touch event logic (wip), seth's comments --- interface/src/Application.cpp | 44 +---- interface/src/Application.h | 2 - interface/src/raypick/LaserPointer.cpp | 2 +- .../src/raypick/PickScriptingInterface.cpp | 4 +- .../src/raypick/PointerScriptingInterface.cpp | 2 +- .../src/RenderableWebEntityItem.cpp | 106 +----------- .../src/RenderableWebEntityItem.h | 8 +- libraries/pointers/src/pointers/Pick.h | 9 + .../src/pointers/PickCacheOptimizer.h | 9 +- .../pointers/src/pointers/PickManager.cpp | 10 +- libraries/pointers/src/pointers/PickManager.h | 10 +- libraries/pointers/src/pointers/Pointer.cpp | 18 +- .../pointers/src/pointers/PointerManager.cpp | 16 +- .../pointers/src/pointers/PointerManager.h | 19 +- libraries/shared/src/PointerEvent.cpp | 25 ++- libraries/shared/src/PointerEvent.h | 26 +-- libraries/ui/CMakeLists.txt | 3 +- libraries/ui/src/OffscreenUi.cpp | 42 +++++ libraries/ui/src/OffscreenUi.h | 4 + libraries/ui/src/ui/OffscreenQmlSurface.cpp | 163 +++++++++++++++--- libraries/ui/src/ui/OffscreenQmlSurface.h | 15 +- 21 files changed, 304 insertions(+), 233 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d81332e7d5..d9770818e1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1504,14 +1504,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); }); - auto pointerManager = DependencyManager::get(); - connect(pointerManager.data(), &PointerManager::hoverBeginHUD, this, &Application::handleHUDPointerEvent); - connect(pointerManager.data(), &PointerManager::hoverContinueHUD, this, &Application::handleHUDPointerEvent); - connect(pointerManager.data(), &PointerManager::hoverEndHUD, this, &Application::handleHUDPointerEvent); - connect(pointerManager.data(), &PointerManager::triggerBeginHUD, this, &Application::handleHUDPointerEvent); - connect(pointerManager.data(), &PointerManager::triggerContinueHUD, this, &Application::handleHUDPointerEvent); - connect(pointerManager.data(), &PointerManager::triggerEndHUD, this, &Application::handleHUDPointerEvent); - // Add periodic checks to send user activity data static int CHECK_NEARBY_AVATARS_INTERVAL_MS = 10000; static int NEARBY_AVATAR_RADIUS_METERS = 10; @@ -3304,7 +3296,7 @@ void Application::mouseMoveEvent(QMouseEvent* event) { auto offscreenUi = DependencyManager::get(); auto eventPosition = compositor.getMouseEventPosition(event); - QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition, _glWidget); + QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition); auto button = event->button(); auto buttons = event->buttons(); // Determine if the ReticleClick Action is 1 and if so, fake include the LeftMouseButton @@ -3350,7 +3342,7 @@ void Application::mousePressEvent(QMouseEvent* event) { offscreenUi->unfocusWindows(); auto eventPosition = getApplicationCompositor().getMouseEventPosition(event); - QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition, _glWidget); + QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition); QMouseEvent mappedEvent(event->type(), transformedPos, event->screenPos(), event->button(), @@ -3380,7 +3372,7 @@ void Application::mousePressEvent(QMouseEvent* event) { void Application::mouseDoublePressEvent(QMouseEvent* event) { auto offscreenUi = DependencyManager::get(); auto eventPosition = getApplicationCompositor().getMouseEventPosition(event); - QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition, _glWidget); + QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition); QMouseEvent mappedEvent(event->type(), transformedPos, event->screenPos(), event->button(), @@ -3406,7 +3398,7 @@ void Application::mouseReleaseEvent(QMouseEvent* event) { auto offscreenUi = DependencyManager::get(); auto eventPosition = getApplicationCompositor().getMouseEventPosition(event); - QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition, _glWidget); + QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition); QMouseEvent mappedEvent(event->type(), transformedPos, event->screenPos(), event->button(), @@ -7487,32 +7479,4 @@ void Application::setAvatarOverrideUrl(const QUrl& url, bool save) { _avatarOverrideUrl = url; _saveAvatarOverrideUrl = save; } - -void Application::handleHUDPointerEvent(const QUuid& id, const PointerEvent& event) { - QEvent::Type type = QEvent::Type::MouseMove; - switch (event.getType()) { - case PointerEvent::Press: - type = QEvent::Type::MouseButtonPress; - break; - case PointerEvent::DoublePress: - type = QEvent::Type::MouseButtonDblClick; - break; - case PointerEvent::Release: - type = QEvent::Type::MouseButtonRelease; - break; - case PointerEvent::Move: - type = QEvent::Type::MouseMove; - break; - default: - break; - } - - QPointF screenPos(event.getPos2D().x, event.getPos2D().y); - //QMouseEvent mouseEvent(type, screenPos, Qt::MouseButton(event.getButton()), Qt::MouseButtons(event.getButtons()), event.getKeyboardModifiers()); - QMouseEvent moveEvent(QEvent::Type::MouseMove, screenPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - sendEvent(_glWidget, &moveEvent); - QMouseEvent mouseEvent(type, screenPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - sendEvent(_glWidget, &mouseEvent); -} - #include "Application.moc" diff --git a/interface/src/Application.h b/interface/src/Application.h index a229c4b91a..d2a55db216 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -434,8 +434,6 @@ private slots: void handleSandboxStatus(QNetworkReply* reply); void switchDisplayMode(); - - void handleHUDPointerEvent(const QUuid& id, const PointerEvent& event); private: static void initDisplay(); void init(); diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 2506c6222d..7d681cd35d 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -303,7 +303,7 @@ PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const Q } else if (target.type == HUD) { pos2D = DependencyManager::get()->calculatePos2DFromHUD(intersection); } - return PointerEvent(PointerEvent::Move, 0, pos2D, intersection, surfaceNormal, direction, PointerEvent::NoButtons); + return PointerEvent(pos2D, intersection, surfaceNormal, direction); } glm::vec3 LaserPointer::intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const { diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index a59e96ccbf..445a7e9b69 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -25,7 +25,7 @@ unsigned int PickScriptingInterface::createPick(const PickQuery::PickType type, case PickQuery::PickType::Ray: return createRayPick(properties); default: - return 0; + return PickManager::INVALID_PICK_ID; } } @@ -78,7 +78,7 @@ unsigned int PickScriptingInterface::createRayPick(const QVariant& properties) { return DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared(position, direction, filter, maxDistance, enabled)); } - return 0; + return PickManager::INVALID_PICK_ID; } void PickScriptingInterface::enablePick(unsigned int uid) { diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index b7211830a8..2f044acc4c 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -26,7 +26,7 @@ unsigned int PointerScriptingInterface::createPointer(const PickQuery::PickType& case PickQuery::PickType::Ray: return createLaserPointer(properties); default: - return 0; + return PointerEvent::INVALID_POINTER_ID; } } diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index cdeba865ba..b87a1a994f 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -315,111 +315,17 @@ void WebEntityRenderer::loadSourceURL() { } void WebEntityRenderer::hoverLeaveEntity(const PointerEvent& event) { - if (!_lastLocked && _webSurface && _pressed && event.sendReleaseOnHoverLeave()) { - PointerEvent endEvent(PointerEvent::Release, event.getID(), event.getPos2D(), event.getPos3D(), event.getNormal(), event.getDirection(), - event.getButton(), event.getButtons(), event.getKeyboardModifiers()); - handlePointerEvent(endEvent); - // QML onReleased is only triggered if a click has happened first. We need to send this "fake" mouse move event to properly trigger an onExited. - PointerEvent endMoveEvent(PointerEvent::Move, event.getID()); - handlePointerEvent(endMoveEvent); + if (!_lastLocked && _webSurface) { + _webSurface->hoverEndEvent(event, _touchDevice); } } -void WebEntityRenderer::handlePointerEvent(const PointerEvent& event) { +void WebEntityRenderer::handlePointerEvent(PointerEvent& event) { + event.setPos2D(event.getPos2D() * (METERS_TO_INCHES * _lastDPI)); // Ignore mouse interaction if we're locked - if (_lastLocked || !_webSurface) { - return; + if (!_lastLocked && _webSurface) { + _webSurface->handlePointerEvent(event, _touchDevice); } - - if (event.getType() == PointerEvent::Press) { - _pressed = true; - } else if (event.getType() == PointerEvent::Release) { - _pressed = false; - } - - glm::vec2 windowPos = event.getPos2D() * (METERS_TO_INCHES * _lastDPI); - QPointF windowPoint(windowPos.x, windowPos.y); - - Qt::TouchPointState state = Qt::TouchPointStationary; - if (event.getType() == PointerEvent::Press && event.getButton() == PointerEvent::PrimaryButton) { - state = Qt::TouchPointPressed; - } else if (event.getType() == PointerEvent::Release) { - state = Qt::TouchPointReleased; - } else if (_activeTouchPoints.count(event.getID()) && windowPoint != _activeTouchPoints[event.getID()].pos()) { - state = Qt::TouchPointMoved; - } - - QEvent::Type touchType = QEvent::TouchUpdate; - if (_activeTouchPoints.empty()) { - // If the first active touch point is being created, send a begin - touchType = QEvent::TouchBegin; - } if (state == Qt::TouchPointReleased && _activeTouchPoints.size() == 1 && _activeTouchPoints.count(event.getID())) { - // If the last active touch point is being released, send an end - touchType = QEvent::TouchEnd; - } - - { - QTouchEvent::TouchPoint point; - point.setId(event.getID()); - point.setState(state); - point.setPos(windowPoint); - point.setScreenPos(windowPoint); - _activeTouchPoints[event.getID()] = point; - } - - QTouchEvent touchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); - { - QList touchPoints; - Qt::TouchPointStates touchPointStates; - for (const auto& entry : _activeTouchPoints) { - touchPointStates |= entry.second.state(); - touchPoints.push_back(entry.second); - } - - touchEvent.setWindow(_webSurface->getWindow()); - touchEvent.setDevice(&_touchDevice); - touchEvent.setTarget(_webSurface->getRootItem()); - touchEvent.setTouchPoints(touchPoints); - touchEvent.setTouchPointStates(touchPointStates); - } - - // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. - // - // In Qt 5.9 mouse events must be sent before touch events to make sure some QtQuick components will - // receive mouse events - Qt::MouseButton button = Qt::NoButton; - Qt::MouseButtons buttons = Qt::NoButton; - if (event.getButton() == PointerEvent::PrimaryButton) { - button = Qt::LeftButton; - } - if (event.getButtons() & PointerEvent::PrimaryButton) { - buttons |= Qt::LeftButton; - } - -#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) - if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); - QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); - } -#endif - - if (touchType == QEvent::TouchBegin) { - _touchBeginAccepted = QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); - } else if (_touchBeginAccepted) { - QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); - } - - // If this was a release event, remove the point from the active touch points - if (state == Qt::TouchPointReleased) { - _activeTouchPoints.erase(event.getID()); - } - -#if QT_VERSION < QT_VERSION_CHECK(5, 9, 0) - if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); - QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); - } -#endif } void WebEntityRenderer::setProxyWindow(QWindow* proxyWindow) { diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.h b/libraries/entities-renderer/src/RenderableWebEntityItem.h index 8adbc17a75..84f2a6ccb7 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.h +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.h @@ -12,8 +12,6 @@ #include #include "RenderableEntityItem.h" -#include - class OffscreenQmlSurface; class PointerEvent; @@ -28,7 +26,7 @@ public: WebEntityRenderer(const EntityItemPointer& entity); Q_INVOKABLE void hoverLeaveEntity(const PointerEvent& event); - Q_INVOKABLE void handlePointerEvent(const PointerEvent& event); + Q_INVOKABLE void handlePointerEvent(PointerEvent& event); protected: virtual void onRemoveFromSceneTyped(const TypedEntityPointer& entity) override; @@ -66,10 +64,6 @@ private: QTimer _timer; uint64_t _lastRenderTime { 0 }; Transform _renderTransform; - - bool _pressed{ false }; - bool _touchBeginAccepted{ false }; - std::map _activeTouchPoints; }; } } // namespace diff --git a/libraries/pointers/src/pointers/Pick.h b/libraries/pointers/src/pointers/Pick.h index 9ab17f87d8..e4ce5d3dce 100644 --- a/libraries/pointers/src/pointers/Pick.h +++ b/libraries/pointers/src/pointers/Pick.h @@ -206,4 +206,13 @@ public: virtual PickResultPointer getHUDIntersection(const T& pick) = 0; }; +namespace std { + template <> + struct hash { + size_t operator()(const PickQuery::PickType& a) const { + return a; + } + }; +} + #endif // hifi_Pick_h diff --git a/libraries/pointers/src/pointers/PickCacheOptimizer.h b/libraries/pointers/src/pointers/PickCacheOptimizer.h index 18285f3a6f..46038d14b5 100644 --- a/libraries/pointers/src/pointers/PickCacheOptimizer.h +++ b/libraries/pointers/src/pointers/PickCacheOptimizer.h @@ -37,7 +37,7 @@ template class PickCacheOptimizer { public: - void update(QHash>& picks, bool shouldPickHUD); + void update(std::unordered_map>& picks, bool shouldPickHUD); protected: typedef std::unordered_map> PickCache; @@ -67,10 +67,11 @@ void PickCacheOptimizer::cacheResult(const bool intersects, const PickResultP } template -void PickCacheOptimizer::update(QHash>& picks, bool shouldPickHUD) { +void PickCacheOptimizer::update(std::unordered_map>& picks, bool shouldPickHUD) { PickCache results; - for (const auto& uid : picks.keys()) { - std::shared_ptr> pick = std::static_pointer_cast>(picks[uid]); + for (const auto& pickPair : picks) { + unsigned int uid = pickPair.first; + std::shared_ptr> pick = std::static_pointer_cast>(pickPair.second); T mathematicalPick = pick->getMathematicalPick(); PickResultPointer res = pick->getDefaultResult(mathematicalPick.toVariantMap()); diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp index 903113d79d..cb9d715ba9 100644 --- a/libraries/pointers/src/pointers/PickManager.cpp +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -13,7 +13,7 @@ PickManager::PickManager() { } unsigned int PickManager::addPick(PickQuery::PickType type, const std::shared_ptr pick) { - unsigned int id = 0; + unsigned int id = INVALID_PICK_ID; withWriteLock([&] { // Don't let the pick IDs overflow if (_nextPickID < UINT32_MAX) { @@ -29,7 +29,7 @@ std::shared_ptr PickManager::findPick(unsigned int uid) const { return resultWithReadLock>([&] { auto type = _typeMap.find(uid); if (type != _typeMap.end()) { - return _picks[type.value()][uid]; + return _picks.find(type->second)->second.find(uid)->second; } return std::shared_ptr(); }); @@ -39,8 +39,8 @@ void PickManager::removePick(unsigned int uid) { withWriteLock([&] { auto type = _typeMap.find(uid); if (type != _typeMap.end()) { - _picks[type.value()].remove(uid); - _typeMap.remove(uid); + _picks[type->second].erase(uid); + _typeMap.erase(uid); } }); } @@ -89,7 +89,7 @@ void PickManager::setIncludeItems(unsigned int uid, const QVector& includ } void PickManager::update() { - QHash>> cachedPicks; + std::unordered_map>> cachedPicks; withReadLock([&] { cachedPicks = _picks; }); diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index 7ff4fcc941..0794ac0a41 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -37,16 +37,16 @@ public: void setCalculatePos2DFromHUDOperator(std::function calculatePos2DFromHUDOperator) { _calculatePos2DFromHUDOperator = calculatePos2DFromHUDOperator; } glm::vec2 calculatePos2DFromHUD(const glm::vec3& intersection) { return _calculatePos2DFromHUDOperator(intersection); } + static const unsigned int INVALID_PICK_ID { 0 }; + protected: std::function _shouldPickHUDOperator; std::function _calculatePos2DFromHUDOperator; std::shared_ptr findPick(unsigned int uid) const; - QHash>> _picks; - QHash _typeMap; - // 0 = invalid - const unsigned int FIRST_PICK_ID { 1 }; - unsigned int _nextPickID { FIRST_PICK_ID }; + std::unordered_map>> _picks; + std::unordered_map _typeMap; + unsigned int _nextPickID { INVALID_PICK_ID + 1 }; PickCacheOptimizer _rayPickCacheOptimizer; }; diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 354669a55e..0fc5c54ad2 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -95,7 +95,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } else if (hoveredObject.type == OVERLAY) { emit pointerManager->hoverBeginOverlay(hoveredObject.objectID, hoveredEvent); } else if (hoveredObject.type == HUD) { - emit pointerManager->hoverBeginHUD(hoveredObject.objectID, hoveredEvent); + emit pointerManager->hoverBeginHUD(hoveredEvent); } } else if (_enabled && _hover && doHover) { if (hoveredObject.type == OVERLAY) { @@ -114,7 +114,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p if (_prevHoveredObject.type == ENTITY) { emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); } else if (_prevHoveredObject.type == HUD) { - emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); + emit pointerManager->hoverEndHUD(hoveredEvent); } } } @@ -136,7 +136,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p if (_prevHoveredObject.type == OVERLAY) { emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); } else if (_prevHoveredObject.type == HUD) { - emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); + emit pointerManager->hoverEndHUD(hoveredEvent); } } } @@ -144,9 +144,9 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p if (hoveredObject.type == HUD) { if (_prevHoveredObject.type == HUD) { // There's only one HUD - emit pointerManager->hoverContinueHUD(hoveredObject.objectID, hoveredEvent); + emit pointerManager->hoverContinueHUD(hoveredEvent); } else { - emit pointerManager->hoverBeginHUD(hoveredObject.objectID, hoveredEvent); + emit pointerManager->hoverBeginHUD(hoveredEvent); if (_prevHoveredObject.type == ENTITY) { emit pointerManager->hoverEndEntity(_prevHoveredObject.objectID, hoveredEvent); } else if (_prevHoveredObject.type == OVERLAY) { @@ -164,7 +164,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } else if (_prevHoveredObject.type == OVERLAY) { emit pointerManager->hoverEndOverlay(_prevHoveredObject.objectID, hoveredEvent); } else if (_prevHoveredObject.type == HUD) { - emit pointerManager->hoverEndHUD(_prevHoveredObject.objectID, hoveredEvent); + emit pointerManager->hoverEndHUD(hoveredEvent); } } } @@ -180,7 +180,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } else if (hoveredObject.type == OVERLAY) { emit pointerManager->triggerBeginOverlay(hoveredObject.objectID, hoveredEvent); } else if (hoveredObject.type == HUD) { - emit pointerManager->triggerBeginHUD(hoveredObject.objectID, hoveredEvent); + emit pointerManager->triggerBeginHUD(hoveredEvent); } _triggeredObjects[button] = hoveredObject; } @@ -196,7 +196,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } else if (_triggeredObjects[button].type == OVERLAY) { emit pointerManager->triggerContinueOverlay(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == HUD) { - emit pointerManager->triggerContinueHUD(_triggeredObjects[button].objectID, triggeredEvent); + emit pointerManager->triggerContinueHUD(triggeredEvent); } } @@ -211,7 +211,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const QVariantMap& p } else if (_triggeredObjects[button].type == OVERLAY) { emit pointerManager->triggerEndOverlay(_triggeredObjects[button].objectID, triggeredEvent); } else if (_triggeredObjects[button].type == HUD) { - emit pointerManager->triggerEndHUD(_triggeredObjects[button].objectID, triggeredEvent); + emit pointerManager->triggerEndHUD(triggeredEvent); } _triggeredObjects.erase(button); } diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index b6d826c6f1..b117b24770 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -8,19 +8,21 @@ #include "PointerManager.h" +#include "PickManager.h" + std::shared_ptr PointerManager::find(unsigned int uid) const { return resultWithReadLock>([&] { auto itr = _pointers.find(uid); if (itr != _pointers.end()) { - return *itr; + return itr->second; } return std::shared_ptr(); }); } unsigned int PointerManager::addPointer(std::shared_ptr pointer) { - unsigned int result = 0; - if (pointer->getRayUID() > 0) { + unsigned int result = PointerEvent::INVALID_POINTER_ID; + if (pointer->getRayUID() != PickManager::INVALID_PICK_ID) { withWriteLock([&] { // Don't let the pointer IDs overflow if (_nextPointerID < UINT32_MAX) { @@ -34,7 +36,7 @@ unsigned int PointerManager::addPointer(std::shared_ptr pointer) { void PointerManager::removePointer(unsigned int uid) { withWriteLock([&] { - _pointers.remove(uid); + _pointers.erase(uid); }); } @@ -75,12 +77,12 @@ const QVariantMap PointerManager::getPrevPickResult(unsigned int uid) const { } void PointerManager::update() { - auto cachedPointers = resultWithReadLock>>([&] { + auto cachedPointers = resultWithReadLock>>([&] { return _pointers; }); - for (const auto& uid : cachedPointers.keys()) { - cachedPointers[uid]->update(uid); + for (const auto& pointerPair : cachedPointers) { + pointerPair.second->update(pointerPair.first); } } diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index fcb347fb82..a415c9dbd9 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -40,11 +40,12 @@ public: void update(); + static const unsigned int MOUSE_POINTER_ID { PointerEvent::INVALID_POINTER_ID + 1 }; + private: std::shared_ptr find(unsigned int uid) const; - QHash> _pointers; - // 0 = invalid, 1 = reserved for system mouse - unsigned int _nextPointerID { 2 }; + std::unordered_map> _pointers; + unsigned int _nextPointerID { MOUSE_POINTER_ID + 1 }; signals: void triggerBeginOverlay(const QUuid& id, const PointerEvent& pointerEvent); @@ -61,12 +62,12 @@ signals: void hoverContinueEntity(const QUuid& id, const PointerEvent& pointerEvent); void hoverEndEntity(const QUuid& id, const PointerEvent& pointerEvent); - void triggerBeginHUD(const QUuid& id, const PointerEvent& pointerEvent); - void triggerContinueHUD(const QUuid& id, const PointerEvent& pointerEvent); - void triggerEndHUD(const QUuid& id, const PointerEvent& pointerEvent); - void hoverBeginHUD(const QUuid& id, const PointerEvent& pointerEvent); - void hoverContinueHUD(const QUuid& id, const PointerEvent& pointerEvent); - void hoverEndHUD(const QUuid& id, const PointerEvent& pointerEvent); + void triggerBeginHUD(const PointerEvent& pointerEvent); + void triggerContinueHUD(const PointerEvent& pointerEvent); + void triggerEndHUD(const PointerEvent& pointerEvent); + void hoverBeginHUD(const PointerEvent& pointerEvent); + void hoverContinueHUD(const PointerEvent& pointerEvent); + void hoverEndHUD(const PointerEvent& pointerEvent); }; #endif // hifi_pointers_PointerManager_h diff --git a/libraries/shared/src/PointerEvent.cpp b/libraries/shared/src/PointerEvent.cpp index 183b7c332a..f0f868655c 100644 --- a/libraries/shared/src/PointerEvent.cpp +++ b/libraries/shared/src/PointerEvent.cpp @@ -20,8 +20,28 @@ static bool areFlagsSet(uint32_t flags, uint32_t mask) { return (flags & mask) != 0; } -PointerEvent::PointerEvent() { - ; +PointerEvent::PointerEvent(EventType type, uint32_t id) : + _type(type), + _id(id) +{ +} + +PointerEvent::PointerEvent(EventType type, uint32_t id, const glm::vec2& pos2D, Button button, uint32_t buttons, Qt::KeyboardModifiers keyboardModifiers) : + _type(type), + _id(id), + _pos2D(pos2D), + _button(button), + _buttons(buttons), + _keyboardModifiers(keyboardModifiers) +{ +} + +PointerEvent::PointerEvent(const glm::vec2& pos2D, const glm::vec3& pos3D, const glm::vec3& normal, const glm::vec3& direction) : + _pos2D(pos2D), + _pos3D(pos3D), + _normal(normal), + _direction(direction) +{ } PointerEvent::PointerEvent(EventType type, uint32_t id, @@ -38,7 +58,6 @@ PointerEvent::PointerEvent(EventType type, uint32_t id, _buttons(buttons), _keyboardModifiers(keyboardModifiers) { - ; } void PointerEvent::setButton(Button button) { diff --git a/libraries/shared/src/PointerEvent.h b/libraries/shared/src/PointerEvent.h index f6b1a81602..6ace262fe1 100644 --- a/libraries/shared/src/PointerEvent.h +++ b/libraries/shared/src/PointerEvent.h @@ -35,11 +35,14 @@ public: NumEventTypes }; - PointerEvent(); + PointerEvent() {} + PointerEvent(EventType type, uint32_t id); + PointerEvent(EventType type, uint32_t id, const glm::vec2& pos2D, Button button, uint32_t buttons, Qt::KeyboardModifiers keyboardModifiers); + PointerEvent(const glm::vec2& pos2D, const glm::vec3& pos3D, const glm::vec3& normal, const glm::vec3& direction); PointerEvent(EventType type, uint32_t id, - const glm::vec2& pos2D = glm::vec2(NAN), const glm::vec3& pos3D = glm::vec3(NAN), - const glm::vec3& normal = glm::vec3(NAN), const glm::vec3& direction = glm::vec3(NAN), - Button button = NoButtons, uint32_t buttons = NoButtons, Qt::KeyboardModifiers keyboardModifiers = Qt::KeyboardModifier::NoModifier); + const glm::vec2& pos2D, const glm::vec3& pos3D, + const glm::vec3& normal, const glm::vec3& direction, + Button button, uint32_t buttons, Qt::KeyboardModifiers keyboardModifiers); static QScriptValue toScriptValue(QScriptEngine* engine, const PointerEvent& event); static void fromScriptValue(const QScriptValue& object, PointerEvent& event); @@ -63,18 +66,21 @@ public: void setButton(Button button); void setShouldFocus(bool focus) { _shouldFocus = focus; } void setReleaseOnHoverLeave(bool releaseOnHoverLeave) { _releaseOnHoverLeave = releaseOnHoverLeave; } + void setPos2D(const glm::vec2& pos2D) { _pos2D = pos2D; } + + static const unsigned int INVALID_POINTER_ID { 0 }; private: EventType _type; - uint32_t _id; // used to identify the pointer. (left vs right hand, for example) - glm::vec2 _pos2D; // (in meters) projected onto the xy plane of entities dimension box, (0, 0) is upper right hand corner - glm::vec3 _pos3D; // surface location in world coordinates (in meters) - glm::vec3 _normal; // surface normal - glm::vec3 _direction; // incoming direction of pointer ray. + uint32_t _id { INVALID_POINTER_ID }; // used to identify the pointer. (left vs right hand, for example) + glm::vec2 _pos2D { glm::vec2(NAN) }; // (in meters) projected onto the xy plane of entities dimension box, (0, 0) is upper right hand corner + glm::vec3 _pos3D { glm::vec3(NAN) }; // surface location in world coordinates (in meters) + glm::vec3 _normal { glm::vec3(NAN) }; // surface normal + glm::vec3 _direction { glm::vec3(NAN) }; // incoming direction of pointer ray. Button _button { NoButtons }; // button associated with this event, (if type is Press, this will be the button that is pressed) uint32_t _buttons { NoButtons }; // the current state of all the buttons. - Qt::KeyboardModifiers _keyboardModifiers; // set of keys held when event was generated + Qt::KeyboardModifiers _keyboardModifiers { Qt::KeyboardModifier::NoModifier }; // set of keys held when event was generated bool _shouldFocus { true }; bool _releaseOnHoverLeave { true }; diff --git a/libraries/ui/CMakeLists.txt b/libraries/ui/CMakeLists.txt index f28157ff97..334cce97e5 100644 --- a/libraries/ui/CMakeLists.txt +++ b/libraries/ui/CMakeLists.txt @@ -1,6 +1,7 @@ set(TARGET_NAME ui) setup_hifi_library(OpenGL Network Qml Quick Script WebChannel WebEngine WebSockets XmlPatterns) -link_hifi_libraries(shared networking gl audio) +link_hifi_libraries(shared networking gl audio pointers) +include_hifi_library_headers(controllers) # Required for some low level GL interaction in the OffscreenQMLSurface target_opengl() diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 297ed9ca50..c41ef9d4a4 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -28,6 +28,7 @@ #include "ui/Logging.h" +#include // Needs to match the constants in resources/qml/Global.js class OffscreenFlags : public QObject { @@ -84,7 +85,31 @@ bool OffscreenUi::shouldSwallowShortcut(QEvent* event) { return false; } +static QTouchDevice _touchDevice; OffscreenUi::OffscreenUi() { + static std::once_flag once; + std::call_once(once, [&] { + _touchDevice.setCapabilities(QTouchDevice::Position); + _touchDevice.setType(QTouchDevice::TouchScreen); + _touchDevice.setName("OffscreenUiTouchDevice"); + _touchDevice.setMaximumTouchPoints(4); + }); + + auto pointerManager = DependencyManager::get(); + connect(pointerManager.data(), &PointerManager::hoverBeginHUD, this, &OffscreenUi::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::hoverContinueHUD, this, &OffscreenUi::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::hoverEndHUD, this, &OffscreenUi::hoverEndEvent); + connect(pointerManager.data(), &PointerManager::triggerBeginHUD, this, &OffscreenUi::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerContinueHUD, this, &OffscreenUi::handlePointerEvent); + connect(pointerManager.data(), &PointerManager::triggerEndHUD, this, &OffscreenUi::handlePointerEvent); +} + +void OffscreenUi::hoverEndEvent(const PointerEvent& event) { + OffscreenQmlSurface::hoverEndEvent(event, _touchDevice); +} + +void OffscreenUi::handlePointerEvent(const PointerEvent& event) { + OffscreenQmlSurface::handlePointerEvent(event, _touchDevice); } QObject* OffscreenUi::getFlags() { @@ -1072,6 +1097,23 @@ bool OffscreenUi::eventFilter(QObject* originalDestination, QEvent* event) { // let the parent class do it's work bool result = OffscreenQmlSurface::eventFilter(originalDestination, event); + switch (event->type()) { + // Fall through + case QEvent::MouseButtonDblClick: + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseMove: { + QMouseEvent* mouseEvent = static_cast(event); + QPointF transformedPos = mapToVirtualScreen(mouseEvent->localPos()); + PointerEvent pointerEvent(choosePointerEventType(mouseEvent->type()), PointerManager::MOUSE_POINTER_ID, glm::vec2(transformedPos.x(), transformedPos.y()), + PointerEvent::Button(mouseEvent->button()), mouseEvent->buttons(), mouseEvent->modifiers()); + result = OffscreenQmlSurface::handlePointerEvent(pointerEvent, _touchDevice); + break; + } + default: + break; + } + // Check if this is a key press/release event that might need special attention auto type = event->type(); diff --git a/libraries/ui/src/OffscreenUi.h b/libraries/ui/src/OffscreenUi.h index 93c55d06f7..0261591295 100644 --- a/libraries/ui/src/OffscreenUi.h +++ b/libraries/ui/src/OffscreenUi.h @@ -249,6 +249,10 @@ signals: public slots: void removeModalDialog(QObject* modal); +private slots: + void hoverEndEvent(const PointerEvent& event); + void handlePointerEvent(const PointerEvent& event); + private: QString fileDialog(const QVariantMap& properties); ModalDialogListener *fileDialogAsync(const QVariantMap &properties); diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 08662031da..e2675008f9 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -855,7 +855,7 @@ QPointF OffscreenQmlSurface::mapWindowToUi(const QPointF& sourcePosition, QObjec return QPointF(offscreenPosition.x, offscreenPosition.y); } -QPointF OffscreenQmlSurface::mapToVirtualScreen(const QPointF& originalPoint, QObject* originalWidget) { +QPointF OffscreenQmlSurface::mapToVirtualScreen(const QPointF& originalPoint) { return _mouseTranslator(originalPoint); } @@ -909,7 +909,7 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even case QEvent::Wheel: { QWheelEvent* wheelEvent = static_cast(event); - QPointF transformedPos = mapToVirtualScreen(wheelEvent->pos(), originalDestination); + QPointF transformedPos = mapToVirtualScreen(wheelEvent->pos()); QWheelEvent mappedEvent( transformedPos, wheelEvent->delta(), wheelEvent->buttons(), @@ -920,30 +920,6 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even } break; } - - // Fall through - case QEvent::MouseButtonDblClick: - case QEvent::MouseButtonPress: - case QEvent::MouseButtonRelease: - case QEvent::MouseMove: { - QMouseEvent* mouseEvent = static_cast(event); - QPointF transformedPos = mapToVirtualScreen(mouseEvent->localPos(), originalDestination); - QMouseEvent mappedEvent(mouseEvent->type(), - transformedPos, - mouseEvent->screenPos(), mouseEvent->button(), - mouseEvent->buttons(), mouseEvent->modifiers()); - if (event->type() == QEvent::MouseMove) { - // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install - // need to investigate into why this crash is happening. - //_qmlContext->setContextProperty("lastMousePosition", mouseEvent.localPos()); - } - mappedEvent.ignore(); - if (QCoreApplication::sendEvent(_quickWindow, &mappedEvent)) { - return mappedEvent.isAccepted(); - } - break; - } - default: break; } @@ -951,6 +927,141 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even return false; } +PointerEvent::EventType OffscreenQmlSurface::choosePointerEventType(QEvent::Type type) { + switch (type) { + case QEvent::MouseButtonDblClick: + return PointerEvent::DoublePress; + case QEvent::MouseButtonPress: + return PointerEvent::Press; + case QEvent::MouseButtonRelease: + return PointerEvent::Release; + case QEvent::MouseMove: + return PointerEvent::Move; + default: + return PointerEvent::Move; + } +} + +void OffscreenQmlSurface::hoverEndEvent(const PointerEvent& event, class QTouchDevice& device) { + if (!_paused && _quickWindow && _pressed && event.sendReleaseOnHoverLeave()) { + PointerEvent endEvent(PointerEvent::Release, event.getID(), event.getPos2D(), event.getPos3D(), event.getNormal(), event.getDirection(), + event.getButton(), event.getButtons(), event.getKeyboardModifiers()); + handlePointerEvent(endEvent, device); + // QML onReleased is only triggered if a click has happened first. We need to send this "fake" mouse move event to properly trigger an onExited. + PointerEvent endMoveEvent(PointerEvent::Move, event.getID()); + handlePointerEvent(endMoveEvent, device); + } +} + +bool OffscreenQmlSurface::handlePointerEvent(const PointerEvent& event, class QTouchDevice& device) { + // Ignore mouse interaction if we're paused + if (_paused || !_quickWindow) { + return false; + } + + if (event.getType() == PointerEvent::Press) { + _pressed = true; + } else if (event.getType() == PointerEvent::Release) { + _pressed = false; + } + + QPointF windowPoint(event.getPos2D().x, event.getPos2D().y); + + Qt::TouchPointState state = Qt::TouchPointStationary; + if (event.getType() == PointerEvent::Press && event.getButton() == PointerEvent::PrimaryButton) { + state = Qt::TouchPointPressed; + } else if (event.getType() == PointerEvent::Release) { + state = Qt::TouchPointReleased; + } else if (_activeTouchPoints.count(event.getID()) && windowPoint != _activeTouchPoints[event.getID()].pos()) { + state = Qt::TouchPointMoved; + } + + QEvent::Type touchType = QEvent::TouchUpdate; + if (_activeTouchPoints.empty()) { + // If the first active touch point is being created, send a begin + touchType = QEvent::TouchBegin; + } if (state == Qt::TouchPointReleased && _activeTouchPoints.size() == 1 && _activeTouchPoints.count(event.getID())) { + // If the last active touch point is being released, send an end + touchType = QEvent::TouchEnd; + } + + { + QTouchEvent::TouchPoint point; + point.setId(event.getID()); + point.setState(state); + point.setPos(windowPoint); + point.setScreenPos(windowPoint); + _activeTouchPoints[event.getID()] = point; + } + + QTouchEvent touchEvent(touchType, &device, event.getKeyboardModifiers()); + { + QList touchPoints; + Qt::TouchPointStates touchPointStates; + for (const auto& entry : _activeTouchPoints) { + touchPointStates |= entry.second.state(); + touchPoints.push_back(entry.second); + } + + touchEvent.setWindow(_quickWindow); + touchEvent.setDevice(&device); + touchEvent.setTarget(_rootItem); + touchEvent.setTouchPoints(touchPoints); + touchEvent.setTouchPointStates(touchPointStates); + } + + // Send mouse events to the surface so that HTML dialog elements work with mouse press and hover. + // + // In Qt 5.9 mouse events must be sent before touch events to make sure some QtQuick components will + // receive mouse events + Qt::MouseButton button = Qt::NoButton; + Qt::MouseButtons buttons = Qt::NoButton; + if (event.getButton() == PointerEvent::PrimaryButton) { + button = Qt::LeftButton; + } + if (event.getButtons() & PointerEvent::PrimaryButton) { + buttons |= Qt::LeftButton; + } + + bool eventsAccepted = false; + +#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) + if (event.getType() == PointerEvent::Move) { + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); + // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install + // need to investigate into why this crash is happening. + //_qmlContext->setContextProperty("lastMousePosition", windowPoint); + QCoreApplication::sendEvent(_quickWindow, &mouseEvent); + eventsAccepted &= mouseEvent.isAccepted(); + } +#endif + + if (touchType == QEvent::TouchBegin) { + _touchBeginAccepted = QCoreApplication::sendEvent(_quickWindow, &touchEvent); + } else if (_touchBeginAccepted) { + QCoreApplication::sendEvent(_quickWindow, &touchEvent); + } + eventsAccepted &= touchEvent.isAccepted(); + + // If this was a release event, remove the point from the active touch points + if (state == Qt::TouchPointReleased) { + _activeTouchPoints.erase(event.getID()); + } + +#if QT_VERSION < QT_VERSION_CHECK(5, 9, 0) + if (event.getType() == PointerEvent::Move) { + // TODO - this line necessary for the QML Tooltop to work (which is not currently being used), but it causes interface to crash on launch on a fresh install + // need to investigate into why this crash is happening. + //_qmlContext->setContextProperty("lastMousePosition", windowPoint); + QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); + QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); + eventsAccepted &= mouseEvent.isAccepted(); + } +#endif + + return eventsAccepted; +} + void OffscreenQmlSurface::pause() { _paused = true; } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 12ee9e59a1..1f1817faa2 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -21,6 +21,9 @@ #include #include +#include +#include "PointerEvent.h" + class QWindow; class QMyQuickRenderControl; class OffscreenGLCanvas; @@ -79,7 +82,7 @@ public: QObject* getEventHandler(); QQmlContext* getSurfaceContext(); - QPointF mapToVirtualScreen(const QPointF& originalPoint, QObject* originalWidget); + QPointF mapToVirtualScreen(const QPointF& originalPoint); bool eventFilter(QObject* originalDestination, QEvent* event) override; void setKeyboardRaised(QObject* object, bool raised, bool numeric = false, bool passwordField = false); @@ -95,6 +98,8 @@ public: static std::function getDiscardLambda(); static size_t getUsedTextureMemory(); + PointerEvent::EventType choosePointerEventType(QEvent::Type type); + signals: void focusObjectChanged(QObject* newFocus); void focusTextChanged(bool focusText); @@ -136,6 +141,10 @@ private slots: void updateQuick(); void onFocusObjectChanged(QObject* newFocus); +public slots: + void hoverEndEvent(const PointerEvent& event, class QTouchDevice& device); + bool handlePointerEvent(const PointerEvent& event, class QTouchDevice& device); + private: QQuickWindow* _quickWindow { nullptr }; QMyQuickRenderControl* _renderControl{ nullptr }; @@ -161,6 +170,10 @@ private: QWindow* _proxyWindow { nullptr }; QQuickItem* _currentFocusItem { nullptr }; + + bool _pressed { false }; + bool _touchBeginAccepted { false }; + std::map _activeTouchPoints; }; #endif From 7d420f5242bb421485a6c67d4f89fe536aae9440 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 6 Nov 2017 12:29:21 -0800 Subject: [PATCH 074/187] isLeftHand, isRightHand, isMouse --- interface/resources/qml/controls-uit/Key.qml | 9 +- interface/src/raypick/JointRayPick.h | 3 + .../raypick/LaserPointerScriptingInterface.h | 6 +- interface/src/raypick/MouseRayPick.h | 2 + .../src/raypick/PickScriptingInterface.cpp | 12 ++ .../src/raypick/PickScriptingInterface.h | 6 +- .../src/raypick/PointerScriptingInterface.h | 5 +- .../src/raypick/RayPickScriptingInterface.cpp | 12 ++ .../src/raypick/RayPickScriptingInterface.h | 7 +- .../ui/overlays/ContextOverlayInterface.cpp | 14 ++- interface/src/ui/overlays/Overlays.cpp | 4 +- interface/src/ui/overlays/Web3DOverlay.cpp | 113 +++--------------- interface/src/ui/overlays/Web3DOverlay.h | 4 +- .../src/EntityTreeRenderer.cpp | 16 ++- libraries/pointers/src/pointers/Pick.h | 4 + .../pointers/src/pointers/PickManager.cpp | 24 ++++ libraries/pointers/src/pointers/PickManager.h | 4 + libraries/pointers/src/pointers/Pointer.cpp | 12 ++ libraries/pointers/src/pointers/Pointer.h | 4 + .../pointers/src/pointers/PointerManager.cpp | 24 ++++ .../pointers/src/pointers/PointerManager.h | 4 + libraries/ui/src/ui/OffscreenQmlSurface.cpp | 12 ++ libraries/ui/src/ui/OffscreenQmlSurface.h | 2 + 23 files changed, 176 insertions(+), 127 deletions(-) diff --git a/interface/resources/qml/controls-uit/Key.qml b/interface/resources/qml/controls-uit/Key.qml index e54250c872..3bba1e5f07 100644 --- a/interface/resources/qml/controls-uit/Key.qml +++ b/interface/resources/qml/controls-uit/Key.qml @@ -64,11 +64,12 @@ Item { keyItem.state = "mouseOver"; var globalPosition = keyItem.mapToGlobal(mouseArea1.mouseX, mouseArea1.mouseY); - var deviceId = Web3DOverlay.deviceIdByTouchPoint(globalPosition.x, globalPosition.y); - var hand = deviceId - 1; // based on touchEventUtils.js, deviceId is 'hand + 1', so 'hand' is 'deviceId' - 1 + var pointerID = Web3DOverlay.deviceIdByTouchPoint(globalPosition.x, globalPosition.y); - if (hand == leftHand || hand == rightHand) { - Controller.triggerHapticPulse(_HAPTIC_STRENGTH, _HAPTIC_DURATION, hand); + if (Pointers.isLeftHand(pointerID)) { + Controller.triggerHapticPulse(_HAPTIC_STRENGTH, _HAPTIC_DURATION, leftHand); + } else if (Pointers.isRightHand(pointerID)) { + Controller.triggerHapticPulse(_HAPTIC_STRENGTH, _HAPTIC_DURATION, rightHand); } } diff --git a/interface/src/raypick/JointRayPick.h b/interface/src/raypick/JointRayPick.h index ab44bf67c8..67e6bf6945 100644 --- a/interface/src/raypick/JointRayPick.h +++ b/interface/src/raypick/JointRayPick.h @@ -20,6 +20,9 @@ public: const PickRay getMathematicalPick() const override; + bool isLeftHand() const override { return (_jointName == "_CONTROLLER_LEFTHAND") || (_jointName == "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND"); } + bool isRightHand() const override { return (_jointName == "_CONTROLLER_RIGHTHAND") || (_jointName == "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND"); } + private: std::string _jointName; glm::vec3 _posOffset; diff --git a/interface/src/raypick/LaserPointerScriptingInterface.h b/interface/src/raypick/LaserPointerScriptingInterface.h index da62f4eb12..baf8f0b2e6 100644 --- a/interface/src/raypick/LaserPointerScriptingInterface.h +++ b/interface/src/raypick/LaserPointerScriptingInterface.h @@ -20,7 +20,7 @@ class LaserPointerScriptingInterface : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY -public slots: +public: Q_INVOKABLE unsigned int createLaserPointer(const QVariant& properties) const; Q_INVOKABLE void enableLaserPointer(unsigned int uid) const { DependencyManager::get()->enablePointer(uid); } Q_INVOKABLE void disableLaserPointer(unsigned int uid) const { DependencyManager::get()->disablePointer(uid); } @@ -36,6 +36,10 @@ public slots: Q_INVOKABLE void setLockEndUUID(unsigned int uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } + Q_INVOKABLE bool isLeftHand(unsigned int uid) { return DependencyManager::get()->isLeftHand(uid); } + Q_INVOKABLE bool isRightHand(unsigned int uid) { return DependencyManager::get()->isRightHand(uid); } + Q_INVOKABLE bool isMouse(unsigned int uid) { return DependencyManager::get()->isMouse(uid); } + }; #endif // hifi_LaserPointerScriptingInterface_h diff --git a/interface/src/raypick/MouseRayPick.h b/interface/src/raypick/MouseRayPick.h index e9eb3ccabf..6ce9e7d8d2 100644 --- a/interface/src/raypick/MouseRayPick.h +++ b/interface/src/raypick/MouseRayPick.h @@ -19,6 +19,8 @@ public: MouseRayPick(const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); const PickRay getMathematicalPick() const override; + + bool isMouse() const override { return true; } }; #endif // hifi_MouseRayPick_h diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 445a7e9b69..05e4a2acb0 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -109,6 +109,18 @@ void PickScriptingInterface::setIncludeItems(unsigned int uid, const QScriptValu DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } +bool PickScriptingInterface::isLeftHand(unsigned int uid) { + return DependencyManager::get()->isLeftHand(uid); +} + +bool PickScriptingInterface::isRightHand(unsigned int uid) { + return DependencyManager::get()->isRightHand(uid); +} + +bool PickScriptingInterface::isMouse(unsigned int uid) { + return DependencyManager::get()->isMouse(uid); +} + QScriptValue pickTypesToScriptValue(QScriptEngine* engine, const PickQuery::PickType& pickType) { return pickType; } diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 900fa2ef40..cd296993fb 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -37,7 +37,6 @@ public: void registerMetaTypes(QScriptEngine* engine); -public slots: Q_INVOKABLE unsigned int createPick(const PickQuery::PickType type, const QVariant& properties); Q_INVOKABLE void enablePick(unsigned int uid); Q_INVOKABLE void disablePick(unsigned int uid); @@ -48,6 +47,11 @@ public slots: Q_INVOKABLE void setIgnoreItems(unsigned int uid, const QScriptValue& ignoreEntities); Q_INVOKABLE void setIncludeItems(unsigned int uid, const QScriptValue& includeEntities); + Q_INVOKABLE bool isLeftHand(unsigned int uid); + Q_INVOKABLE bool isRightHand(unsigned int uid); + Q_INVOKABLE bool isMouse(unsigned int uid); + +public slots: static constexpr unsigned int PICK_NOTHING() { return 0; } static constexpr unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_ENTITIES); } static constexpr unsigned int PICK_OVERLAYS() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_OVERLAYS); } diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h index 8ea9594fda..e34a9ef74d 100644 --- a/interface/src/raypick/PointerScriptingInterface.h +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -21,7 +21,6 @@ class PointerScriptingInterface : public QObject, public Dependency { public: unsigned int createLaserPointer(const QVariant& properties) const; -public slots: Q_INVOKABLE unsigned int createPointer(const PickQuery::PickType& type, const QVariant& properties) const; Q_INVOKABLE void enablePointer(unsigned int uid) const { DependencyManager::get()->enablePointer(uid); } Q_INVOKABLE void disablePointer(unsigned int uid) const { DependencyManager::get()->disablePointer(uid); } @@ -37,6 +36,10 @@ public slots: Q_INVOKABLE void setLockEndUUID(unsigned int uid, const QUuid& objectID, bool isOverlay) const { DependencyManager::get()->setLockEndUUID(uid, objectID, isOverlay); } + Q_INVOKABLE bool isLeftHand(unsigned int uid) { return DependencyManager::get()->isLeftHand(uid); } + Q_INVOKABLE bool isRightHand(unsigned int uid) { return DependencyManager::get()->isRightHand(uid); } + Q_INVOKABLE bool isMouse(unsigned int uid) { return DependencyManager::get()->isMouse(uid); } + signals: void triggerBegin(const QUuid& id, const PointerEvent& pointerEvent); void triggerContinue(const QUuid& id, const PointerEvent& pointerEvent); diff --git a/interface/src/raypick/RayPickScriptingInterface.cpp b/interface/src/raypick/RayPickScriptingInterface.cpp index f9774dda31..6b0b8dc167 100644 --- a/interface/src/raypick/RayPickScriptingInterface.cpp +++ b/interface/src/raypick/RayPickScriptingInterface.cpp @@ -51,3 +51,15 @@ void RayPickScriptingInterface::setIgnoreItems(uint32_t uid, const QScriptValue& void RayPickScriptingInterface::setIncludeItems(uint32_t uid, const QScriptValue& includeItems) { DependencyManager::get()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems)); } + +bool RayPickScriptingInterface::isLeftHand(unsigned int uid) { + return DependencyManager::get()->isLeftHand(uid); +} + +bool RayPickScriptingInterface::isRightHand(unsigned int uid) { + return DependencyManager::get()->isRightHand(uid); +} + +bool RayPickScriptingInterface::isMouse(unsigned int uid) { + return DependencyManager::get()->isMouse(uid); +} \ No newline at end of file diff --git a/interface/src/raypick/RayPickScriptingInterface.h b/interface/src/raypick/RayPickScriptingInterface.h index 844add9012..65b0b2aced 100644 --- a/interface/src/raypick/RayPickScriptingInterface.h +++ b/interface/src/raypick/RayPickScriptingInterface.h @@ -36,7 +36,7 @@ class RayPickScriptingInterface : public QObject, public Dependency { Q_PROPERTY(unsigned int INTERSECTED_HUD READ INTERSECTED_HUD CONSTANT) SINGLETON_DEPENDENCY -public slots: +public: Q_INVOKABLE unsigned int createRayPick(const QVariant& properties); Q_INVOKABLE void enableRayPick(unsigned int uid); Q_INVOKABLE void disableRayPick(unsigned int uid); @@ -47,6 +47,11 @@ public slots: Q_INVOKABLE void setIgnoreItems(unsigned int uid, const QScriptValue& ignoreEntities); Q_INVOKABLE void setIncludeItems(unsigned int uid, const QScriptValue& includeEntities); + Q_INVOKABLE bool isLeftHand(unsigned int uid); + Q_INVOKABLE bool isRightHand(unsigned int uid); + Q_INVOKABLE bool isMouse(unsigned int uid); + +public slots: static unsigned int PICK_NOTHING() { return PickScriptingInterface::PICK_NOTHING(); } static unsigned int PICK_ENTITIES() { return PickScriptingInterface::PICK_ENTITIES(); } static unsigned int PICK_OVERLAYS() { return PickScriptingInterface::PICK_OVERLAYS(); } diff --git a/interface/src/ui/overlays/ContextOverlayInterface.cpp b/interface/src/ui/overlays/ContextOverlayInterface.cpp index b5af529f2b..fa02d4107c 100644 --- a/interface/src/ui/overlays/ContextOverlayInterface.cpp +++ b/interface/src/ui/overlays/ContextOverlayInterface.cpp @@ -19,6 +19,8 @@ #include #include +#include + #ifndef MIN #define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif @@ -79,8 +81,6 @@ ContextOverlayInterface::ContextOverlayInterface() { _challengeOwnershipTimeoutTimer.setSingleShot(true); } -static const uint32_t MOUSE_HW_ID = 0; -static const uint32_t LEFT_HAND_HW_ID = 1; static const xColor CONTEXT_OVERLAY_COLOR = { 255, 255, 255 }; static const float CONTEXT_OVERLAY_INSIDE_DISTANCE = 1.0f; // in meters static const float CONTEXT_OVERLAY_SIZE = 0.09f; // in meters, same x and y dims @@ -100,7 +100,7 @@ void ContextOverlayInterface::setEnabled(bool enabled) { bool ContextOverlayInterface::createOrDestroyContextOverlay(const EntityItemID& entityItemID, const PointerEvent& event) { if (_enabled && event.getButton() == PointerEvent::SecondaryButton) { if (contextOverlayFilterPassed(entityItemID)) { - if (event.getID() == MOUSE_HW_ID) { + if (event.getID() == PointerManager::MOUSE_POINTER_ID || DependencyManager::get()->isMouse(event.getID())) { enableEntityHighlight(entityItemID); } @@ -151,7 +151,7 @@ bool ContextOverlayInterface::createOrDestroyContextOverlay(const EntityItemID& glm::vec3 normal; boundingBox.findRayIntersection(cameraPosition, direction, distance, face, normal); float offsetAngle = -CONTEXT_OVERLAY_OFFSET_ANGLE; - if (event.getID() == LEFT_HAND_HW_ID) { + if (DependencyManager::get()->isLeftHand(event.getID())) { offsetAngle *= -1.0f; } contextOverlayPosition = cameraPosition + @@ -253,13 +253,15 @@ void ContextOverlayInterface::contextOverlays_hoverLeaveOverlay(const OverlayID& } void ContextOverlayInterface::contextOverlays_hoverEnterEntity(const EntityItemID& entityID, const PointerEvent& event) { - if (contextOverlayFilterPassed(entityID) && _enabled && event.getID() != MOUSE_HW_ID) { + bool isMouse = event.getID() == PointerManager::MOUSE_POINTER_ID || DependencyManager::get()->isMouse(event.getID()); + if (contextOverlayFilterPassed(entityID) && _enabled && !isMouse) { enableEntityHighlight(entityID); } } void ContextOverlayInterface::contextOverlays_hoverLeaveEntity(const EntityItemID& entityID, const PointerEvent& event) { - if (_currentEntityWithContextOverlay != entityID && _enabled && event.getID() != MOUSE_HW_ID) { + bool isMouse = event.getID() == PointerManager::MOUSE_POINTER_ID || DependencyManager::get()->isMouse(event.getID()); + if (_currentEntityWithContextOverlay != entityID && _enabled && !isMouse) { disableEntityHighlight(entityID); } } diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index 5a7b1bd76c..05ff3e289b 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -784,8 +784,6 @@ float Overlays::height() { return offscreenUi->getWindow()->size().height(); } -static const uint32_t MOUSE_POINTER_ID = 0; - static glm::vec2 projectOntoOverlayXYPlane(glm::vec3 position, glm::quat rotation, glm::vec2 dimensions, const PickRay& pickRay, const RayToOverlayIntersectionResult& rayPickResult) { @@ -846,7 +844,7 @@ PointerEvent Overlays::calculateOverlayPointerEvent(OverlayID overlayID, PickRay glm::vec2 pos2D = projectOntoOverlayXYPlane(position, rotation, dimensions, ray, rayPickResult); - PointerEvent pointerEvent(eventType, MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, + PointerEvent pointerEvent(eventType, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), event->modifiers()); return pointerEvent; diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index b8683b43e3..658b4edab8 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -56,6 +56,8 @@ #include "ui/Snapshot.h" #include "SoundCache.h" +#include "raypick/PointerScriptingInterface.h" + static const float DPI = 30.47f; static const float INCHES_TO_METERS = 1.0f / 39.3701f; static const float METERS_TO_INCHES = 39.3701f; @@ -216,6 +218,7 @@ void Web3DOverlay::setupQmlSurface() { _webSurface->getSurfaceContext()->setContextProperty("Settings", SettingsScriptingInterface::getInstance()); _webSurface->getSurfaceContext()->setContextProperty("Render", AbstractViewStateInterface::instance()->getRenderEngine()->getConfiguration().get()); _webSurface->getSurfaceContext()->setContextProperty("Controller", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Pointers", DependencyManager::get().data()); _webSurface->getSurfaceContext()->setContextProperty("Web3DOverlay", this); _webSurface->getSurfaceContext()->setContextProperty("pathToFonts", "../../"); @@ -245,18 +248,12 @@ void Web3DOverlay::onResizeWebSurface() { _webSurface->resize(QSize(_resolution.x, _resolution.y)); } -const int INVALID_DEVICE_ID = -1; - -Q_INVOKABLE int Web3DOverlay::deviceIdByTouchPoint(qreal x, qreal y) { - auto mapped = _webSurface->getRootItem()->mapFromGlobal(QPoint(x, y)); - - for (auto pair : _activeTouchPoints) { - if (mapped.x() == (int)pair.second.pos().x() && mapped.y() == (int)pair.second.pos().y()) { - return pair.first; - } +unsigned int Web3DOverlay::deviceIdByTouchPoint(qreal x, qreal y) { + if (_webSurface) { + return _webSurface->deviceIdByTouchPoint(x, y); + } else { + return PointerEvent::INVALID_POINTER_ID; } - - return INVALID_DEVICE_ID; } void Web3DOverlay::render(RenderArgs* args) { @@ -341,13 +338,15 @@ void Web3DOverlay::setProxyWindow(QWindow* proxyWindow) { } void Web3DOverlay::hoverLeaveOverlay(const PointerEvent& event) { - if ((_pressed || (!_activeTouchPoints.empty() && _touchBeginAccepted)) && event.sendReleaseOnHoverLeave()) { + if (_inputMode == Mouse) { PointerEvent endEvent(PointerEvent::Release, event.getID(), event.getPos2D(), event.getPos3D(), event.getNormal(), event.getDirection(), event.getButton(), event.getButtons(), event.getKeyboardModifiers()); handlePointerEvent(endEvent); // QML onReleased is only triggered if a click has happened first. We need to send this "fake" mouse move event to properly trigger an onExited. PointerEvent endMoveEvent(PointerEvent::Move, event.getID()); handlePointerEvent(endMoveEvent); + } else if (_webSurface) { + _webSurface->hoverEndEvent(event, _touchDevice); } } @@ -366,93 +365,11 @@ void Web3DOverlay::handlePointerEvent(const PointerEvent& event) { } void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { - if (!_webSurface) { - return; + if (_webSurface) { + PointerEvent webEvent = event; + webEvent.setPos2D(event.getPos2D() * (METERS_TO_INCHES * _dpi)); + _webSurface->handlePointerEvent(webEvent, _touchDevice); } - - glm::vec2 windowPos = event.getPos2D() * (METERS_TO_INCHES * _dpi); - QPointF windowPoint(windowPos.x, windowPos.y); - - Qt::TouchPointState state = Qt::TouchPointStationary; - if (event.getType() == PointerEvent::Press && event.getButton() == PointerEvent::PrimaryButton) { - state = Qt::TouchPointPressed; - } else if (event.getType() == PointerEvent::Release) { - state = Qt::TouchPointReleased; - } else if (_activeTouchPoints.count(event.getID()) && windowPoint != _activeTouchPoints[event.getID()].pos()) { - state = Qt::TouchPointMoved; - } - - QEvent::Type touchType = QEvent::TouchUpdate; - if (_activeTouchPoints.empty()) { - // If the first active touch point is being created, send a begin - touchType = QEvent::TouchBegin; - } if (state == Qt::TouchPointReleased && _activeTouchPoints.size() == 1 && _activeTouchPoints.count(event.getID())) { - // If the last active touch point is being released, send an end - touchType = QEvent::TouchEnd; - } - - { - QTouchEvent::TouchPoint point; - point.setId(event.getID()); - point.setState(state); - point.setPos(windowPoint); - point.setScreenPos(windowPoint); - _activeTouchPoints[event.getID()] = point; - } - - QTouchEvent touchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); - { - QList touchPoints; - Qt::TouchPointStates touchPointStates; - for (const auto& entry : _activeTouchPoints) { - touchPointStates |= entry.second.state(); - touchPoints.push_back(entry.second); - } - - touchEvent.setWindow(_webSurface->getWindow()); - touchEvent.setDevice(&_touchDevice); - touchEvent.setTarget(_webSurface->getRootItem()); - touchEvent.setTouchPoints(touchPoints); - touchEvent.setTouchPointStates(touchPointStates); - } - - // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. - // - // In Qt 5.9 mouse events must be sent before touch events to make sure some QtQuick components will - // receive mouse events - Qt::MouseButton button = Qt::NoButton; - Qt::MouseButtons buttons = Qt::NoButton; - if (event.getButton() == PointerEvent::PrimaryButton) { - button = Qt::LeftButton; - } - if (event.getButtons() & PointerEvent::PrimaryButton) { - buttons |= Qt::LeftButton; - } - -#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) - if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); - QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); - } -#endif - - if (touchType == QEvent::TouchBegin) { - _touchBeginAccepted = QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); - } else if (_touchBeginAccepted) { - QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); - } - - // If this was a release event, remove the point from the active touch points - if (state == Qt::TouchPointReleased) { - _activeTouchPoints.erase(event.getID()); - } - -#if QT_VERSION < QT_VERSION_CHECK(5, 9, 0) - if (event.getType() == PointerEvent::Move) { - QMouseEvent mouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, event.getKeyboardModifiers()); - QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); - } -#endif } void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) { diff --git a/interface/src/ui/overlays/Web3DOverlay.h b/interface/src/ui/overlays/Web3DOverlay.h index 2fc63df76a..d2da1f7310 100644 --- a/interface/src/ui/overlays/Web3DOverlay.h +++ b/interface/src/ui/overlays/Web3DOverlay.h @@ -67,7 +67,7 @@ public: void destroyWebSurface(); void onResizeWebSurface(); - Q_INVOKABLE int deviceIdByTouchPoint(qreal x, qreal y); + Q_INVOKABLE unsigned int deviceIdByTouchPoint(qreal x, qreal y); public slots: void emitScriptEvent(const QVariant& scriptMessage); @@ -98,8 +98,6 @@ private: bool _showKeyboardFocusHighlight{ true }; bool _pressed{ false }; - bool _touchBeginAccepted { false }; - std::map _activeTouchPoints; QTouchDevice _touchDevice; uint8_t _desiredMaxFPS { 10 }; diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index ad1c617287..8493d73db3 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -571,8 +571,6 @@ static PointerEvent::Button toPointerButton(const QMouseEvent& event) { } } -static const uint32_t MOUSE_POINTER_ID = 0; - void EntityTreeRenderer::mousePressEvent(QMouseEvent* event) { // If we don't have a tree, or we're in the process of shutting down, then don't // process these events. @@ -593,7 +591,7 @@ void EntityTreeRenderer::mousePressEvent(QMouseEvent* event) { } glm::vec2 pos2D = projectOntoEntityXYPlane(rayPickResult.entity, ray, rayPickResult); - PointerEvent pointerEvent(PointerEvent::Press, MOUSE_POINTER_ID, + PointerEvent pointerEvent(PointerEvent::Press, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), @@ -625,7 +623,7 @@ void EntityTreeRenderer::mouseDoublePressEvent(QMouseEvent* event) { RayToEntityIntersectionResult rayPickResult = _getPrevRayPickResultOperator(_mouseRayPickID); if (rayPickResult.intersects && rayPickResult.entity) { glm::vec2 pos2D = projectOntoEntityXYPlane(rayPickResult.entity, ray, rayPickResult); - PointerEvent pointerEvent(PointerEvent::Press, MOUSE_POINTER_ID, + PointerEvent pointerEvent(PointerEvent::Press, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), Qt::NoModifier); @@ -657,7 +655,7 @@ void EntityTreeRenderer::mouseReleaseEvent(QMouseEvent* event) { //qCDebug(entitiesrenderer) << "mouseReleaseEvent over entity:" << rayPickResult.entityID; glm::vec2 pos2D = projectOntoEntityXYPlane(rayPickResult.entity, ray, rayPickResult); - PointerEvent pointerEvent(PointerEvent::Release, MOUSE_POINTER_ID, + PointerEvent pointerEvent(PointerEvent::Release, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), @@ -673,7 +671,7 @@ void EntityTreeRenderer::mouseReleaseEvent(QMouseEvent* event) { // we're releasing the button, then this is considered a clickReleaseOn event if (!_currentClickingOnEntityID.isInvalidID()) { glm::vec2 pos2D = projectOntoEntityXYPlane(rayPickResult.entity, ray, rayPickResult); - PointerEvent pointerEvent(PointerEvent::Release, MOUSE_POINTER_ID, + PointerEvent pointerEvent(PointerEvent::Release, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), @@ -699,7 +697,7 @@ void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event) { RayToEntityIntersectionResult rayPickResult = _getPrevRayPickResultOperator(_mouseRayPickID); if (rayPickResult.intersects && rayPickResult.entity) { glm::vec2 pos2D = projectOntoEntityXYPlane(rayPickResult.entity, ray, rayPickResult); - PointerEvent pointerEvent(PointerEvent::Move, MOUSE_POINTER_ID, + PointerEvent pointerEvent(PointerEvent::Move, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), @@ -713,7 +711,7 @@ void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event) { // then we need to send the hover leave. if (!_currentHoverOverEntityID.isInvalidID() && rayPickResult.entityID != _currentHoverOverEntityID) { glm::vec2 pos2D = projectOntoEntityXYPlane(rayPickResult.entity, ray, rayPickResult); - PointerEvent pointerEvent(PointerEvent::Move, MOUSE_POINTER_ID, + PointerEvent pointerEvent(PointerEvent::Move, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), @@ -744,7 +742,7 @@ void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event) { // send the hover leave for our previous entity if (!_currentHoverOverEntityID.isInvalidID()) { glm::vec2 pos2D = projectOntoEntityXYPlane(rayPickResult.entity, ray, rayPickResult); - PointerEvent pointerEvent(PointerEvent::Move, MOUSE_POINTER_ID, + PointerEvent pointerEvent(PointerEvent::Move, PointerManager::MOUSE_POINTER_ID, pos2D, rayPickResult.intersection, rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), diff --git a/libraries/pointers/src/pointers/Pick.h b/libraries/pointers/src/pointers/Pick.h index e4ce5d3dce..b875285ad7 100644 --- a/libraries/pointers/src/pointers/Pick.h +++ b/libraries/pointers/src/pointers/Pick.h @@ -182,6 +182,10 @@ public: void setIgnoreItems(const QVector& items); void setIncludeItems(const QVector& items); + virtual bool isLeftHand() const { return false; } + virtual bool isRightHand() const { return false; } + virtual bool isMouse() const { return false; } + private: PickFilter _filter; const float _maxDistance; diff --git a/libraries/pointers/src/pointers/PickManager.cpp b/libraries/pointers/src/pointers/PickManager.cpp index cb9d715ba9..d601801d76 100644 --- a/libraries/pointers/src/pointers/PickManager.cpp +++ b/libraries/pointers/src/pointers/PickManager.cpp @@ -96,4 +96,28 @@ void PickManager::update() { bool shouldPickHUD = _shouldPickHUDOperator(); _rayPickCacheOptimizer.update(cachedPicks[PickQuery::Ray], shouldPickHUD); +} + +bool PickManager::isLeftHand(unsigned int uid) { + auto pick = findPick(uid); + if (pick) { + return pick->isLeftHand(); + } + return false; +} + +bool PickManager::isRightHand(unsigned int uid) { + auto pick = findPick(uid); + if (pick) { + return pick->isRightHand(); + } + return false; +} + +bool PickManager::isMouse(unsigned int uid) { + auto pick = findPick(uid); + if (pick) { + return pick->isMouse(); + } + return false; } \ No newline at end of file diff --git a/libraries/pointers/src/pointers/PickManager.h b/libraries/pointers/src/pointers/PickManager.h index 0794ac0a41..bdc3e16054 100644 --- a/libraries/pointers/src/pointers/PickManager.h +++ b/libraries/pointers/src/pointers/PickManager.h @@ -33,6 +33,10 @@ public: void setIgnoreItems(unsigned int uid, const QVector& ignore) const; void setIncludeItems(unsigned int uid, const QVector& include) const; + bool isLeftHand(unsigned int uid); + bool isRightHand(unsigned int uid); + bool isMouse(unsigned int uid); + void setShouldPickHUDOperator(std::function shouldPickHUDOperator) { _shouldPickHUDOperator = shouldPickHUDOperator; } void setCalculatePos2DFromHUDOperator(std::function calculatePos2DFromHUDOperator) { _calculatePos2DFromHUDOperator = calculatePos2DFromHUDOperator; } glm::vec2 calculatePos2DFromHUD(const glm::vec3& intersection) { return _calculatePos2DFromHUDOperator(intersection); } diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 0fc5c54ad2..6e95b48280 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -46,6 +46,18 @@ void Pointer::setIncludeItems(const QVector& includeItems) const { DependencyManager::get()->setIncludeItems(_pickUID, includeItems); } +bool Pointer::isLeftHand() const { + return DependencyManager::get()->isLeftHand(_pickUID); +} + +bool Pointer::isRightHand() const { + return DependencyManager::get()->isRightHand(_pickUID); +} + +bool Pointer::isMouse() const { + return DependencyManager::get()->isMouse(_pickUID); +} + void Pointer::update(unsigned int pointerID) { // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts withReadLock([&] { diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index d8661436b9..6d9c1a172b 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -53,6 +53,10 @@ public: virtual void setIgnoreItems(const QVector& ignoreItems) const; virtual void setIncludeItems(const QVector& includeItems) const; + bool isLeftHand() const; + bool isRightHand() const; + bool isMouse() const; + // Pointers can choose to implement these virtual void setLength(float length) {} virtual void setLockEndUUID(const QUuid& objectID, bool isOverlay) {} diff --git a/libraries/pointers/src/pointers/PointerManager.cpp b/libraries/pointers/src/pointers/PointerManager.cpp index b117b24770..de85e74da1 100644 --- a/libraries/pointers/src/pointers/PointerManager.cpp +++ b/libraries/pointers/src/pointers/PointerManager.cpp @@ -120,3 +120,27 @@ void PointerManager::setLockEndUUID(unsigned int uid, const QUuid& objectID, boo pointer->setLockEndUUID(objectID, isOverlay); } } + +bool PointerManager::isLeftHand(unsigned int uid) { + auto pointer = find(uid); + if (pointer) { + return pointer->isLeftHand(); + } + return false; +} + +bool PointerManager::isRightHand(unsigned int uid) { + auto pointer = find(uid); + if (pointer) { + return pointer->isRightHand(); + } + return false; +} + +bool PointerManager::isMouse(unsigned int uid) { + auto pointer = find(uid); + if (pointer) { + return pointer->isMouse(); + } + return false; +} \ No newline at end of file diff --git a/libraries/pointers/src/pointers/PointerManager.h b/libraries/pointers/src/pointers/PointerManager.h index a415c9dbd9..461d27959c 100644 --- a/libraries/pointers/src/pointers/PointerManager.h +++ b/libraries/pointers/src/pointers/PointerManager.h @@ -40,6 +40,10 @@ public: void update(); + bool isLeftHand(unsigned int uid); + bool isRightHand(unsigned int uid); + bool isMouse(unsigned int uid); + static const unsigned int MOUSE_POINTER_ID { PointerEvent::INVALID_POINTER_ID + 1 }; private: diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index e2675008f9..41c3da2a4f 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -927,6 +927,18 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even return false; } +unsigned int OffscreenQmlSurface::deviceIdByTouchPoint(qreal x, qreal y) { + auto mapped = _rootItem->mapFromGlobal(QPoint(x, y)); + + for (auto pair : _activeTouchPoints) { + if (mapped.x() == (int)pair.second.pos().x() && mapped.y() == (int)pair.second.pos().y()) { + return pair.first; + } + } + + return PointerEvent::INVALID_POINTER_ID; +} + PointerEvent::EventType OffscreenQmlSurface::choosePointerEventType(QEvent::Type type) { switch (type) { case QEvent::MouseButtonDblClick: diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 1f1817faa2..8ddfbfe8cc 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -100,6 +100,8 @@ public: PointerEvent::EventType choosePointerEventType(QEvent::Type type); + unsigned int deviceIdByTouchPoint(qreal x, qreal y); + signals: void focusObjectChanged(QObject* newFocus); void focusTextChanged(bool focusText); From bdd31b63ede80089745caf94403ebb86e4c499ed Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 6 Nov 2017 17:23:40 -0800 Subject: [PATCH 075/187] update functions call names to match pointer API changes --- scripts/system/controllers/controllerDispatcher.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index cd52caae38..401c223992 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -169,7 +169,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); var pointer = (hand === RIGHT_HAND) ? _this.rightControllerPointer : _this.leftControllerPointer; var targetID = laserLockInfo.targetID; var targetIsOverlay = laserLockInfo.isOverlay; - Pointers.setLockEndUid(pointer, targetID, targetIsOverlay); + Pointers.setLockEndUUID(pointer, targetID, targetIsOverlay); _this.laserLockStatus[hand] = targetID; } } else { From 055470296dba9ececec0efde03c0e0039141a243 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 8 Nov 2017 17:13:40 +1300 Subject: [PATCH 076/187] Move current location in GOTO dialog and add placeholder text to input --- .../qml/hifi/tablet/TabletAddressDialog.qml | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml index 4d9a83817a..4e546ffa0d 100644 --- a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml +++ b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml @@ -11,6 +11,7 @@ import Hifi 1.0 import QtQuick 2.5 import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 import QtGraphicalEffects 1.0 import "../../controls" import "../../styles" @@ -205,16 +206,16 @@ StackView { anchors { top: parent.top; left: addressLineContainer.left; - right: addressLineContainer.right; } } HifiStyles.FiraSansRegular { id: location; anchors { - left: addressLineContainer.left; - leftMargin: 8; - verticalCenter: addressLineContainer.verticalCenter; + left: notice.right + leftMargin: 8 + right: addressLineContainer.right + verticalCenter: notice.verticalCenter } font.pixelSize: addressLine.font.pixelSize; color: "gray"; @@ -222,7 +223,7 @@ StackView { visible: addressLine.text.length === 0 } - TextInput { + TextField { id: addressLine width: addressLineContainer.width - addressLineContainer.anchors.leftMargin - addressLineContainer.anchors.rightMargin; anchors { @@ -230,7 +231,6 @@ StackView { leftMargin: 8; verticalCenter: addressLineContainer.verticalCenter; } - font.pixelSize: hifi.fonts.pixelSize * 0.75 onTextChanged: { updateLocationText(text.length > 0); } @@ -238,6 +238,17 @@ StackView { addressBarDialog.keyboardEnabled = false; toggleOrGo(); } + placeholderText: "Type domain address here" + verticalAlignment: TextInput.AlignBottom + style: TextFieldStyle { + textColor: hifi.colors.text + placeholderTextColor: "gray" + font { + family: hifi.fonts.fontFamily + pixelSize: hifi.fonts.pixelSize * 0.75 + } + background: Item {} + } } Rectangle { From 0d21e0be11d24cb5daaa1c93b8419fde3be67d5c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 8 Nov 2017 17:14:17 +1300 Subject: [PATCH 077/187] Delete old, no longer used file --- interface/resources/qml/AddressBarDialog.qml | 532 ------------------- 1 file changed, 532 deletions(-) delete mode 100644 interface/resources/qml/AddressBarDialog.qml diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml deleted file mode 100644 index 60d2bacc62..0000000000 --- a/interface/resources/qml/AddressBarDialog.qml +++ /dev/null @@ -1,532 +0,0 @@ -// -// AddressBarDialog.qml -// -// Created by Austin Davis on 2015/04/14 -// Copyright 2015 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 Hifi 1.0 -import QtQuick 2.4 -import "controls" -import "styles" -import "windows" -import "hifi" -import "hifi/toolbars" -import "styles-uit" as HifiStyles -import "controls-uit" as HifiControls - -Window { - id: root - HifiConstants { id: hifi } - HifiStyles.HifiConstants { id: hifiStyleConstants } - - objectName: "AddressBarDialog" - title: "Go To:" - - shown: false - destroyOnHidden: false - resizable: false - pinnable: false; - - width: addressBarDialog.implicitWidth - height: addressBarDialog.implicitHeight - property int gap: 14 - - onShownChanged: { - addressBarDialog.keyboardEnabled = HMD.active; - addressBarDialog.observeShownChanged(shown); - } - Component.onCompleted: { - root.parentChanged.connect(center); - center(); - } - Component.onDestruction: { - root.parentChanged.disconnect(center); - } - - function center() { - // Explicitly center in order to avoid warnings at shutdown - anchors.centerIn = parent; - } - - function resetAfterTeleport() { - storyCardFrame.shown = root.shown = false; - } - function goCard(targetString) { - if (0 !== targetString.indexOf('hifi://')) { - storyCardHTML.url = addressBarDialog.metaverseServerUrl + targetString; - storyCardFrame.shown = true; - return; - } - addressLine.text = targetString; - toggleOrGo(true); - clearAddressLineTimer.start(); - } - property var allStories: []; - property int cardWidth: 212; - property int cardHeight: 152; - property string metaverseBase: addressBarDialog.metaverseServerUrl + "/api/v1/"; - property bool isCursorVisible: false // Override default cursor visibility. - - AddressBarDialog { - id: addressBarDialog - - property bool keyboardEnabled: false - property bool keyboardRaised: false - property bool punctuationMode: false - - implicitWidth: backgroundImage.width - implicitHeight: scroll.height + gap + backgroundImage.height + (keyboardEnabled ? keyboard.height : 0); - - // The buttons have their button state changed on hover, so we have to manually fix them up here - onBackEnabledChanged: backArrow.buttonState = addressBarDialog.backEnabled ? 1 : 0; - onForwardEnabledChanged: forwardArrow.buttonState = addressBarDialog.forwardEnabled ? 1 : 0; - onReceivedHifiSchemeURL: resetAfterTeleport(); - - // Update location after using back and forward buttons. - onHostChanged: updateLocationTextTimer.start(); - - ListModel { id: suggestions } - - ListView { - id: scroll - height: cardHeight + scroll.stackedCardShadowHeight - property int stackedCardShadowHeight: 10; - spacing: gap; - clip: true; - anchors { - left: backgroundImage.left - right: swipe.left - bottom: backgroundImage.top - } - model: suggestions; - orientation: ListView.Horizontal; - delegate: Card { - width: cardWidth; - height: cardHeight; - goFunction: goCard; - userName: model.username; - placeName: model.place_name; - hifiUrl: model.place_name + model.path; - thumbnail: model.thumbnail_url; - imageUrl: model.image_url; - action: model.action; - timestamp: model.created_at; - onlineUsers: model.online_users; - storyId: model.metaverseId; - drillDownToPlace: model.drillDownToPlace; - shadowHeight: scroll.stackedCardShadowHeight; - hoverThunk: function () { ListView.view.currentIndex = index; } - unhoverThunk: function () { ListView.view.currentIndex = -1; } - } - highlightMoveDuration: -1; - highlightMoveVelocity: -1; - highlight: Rectangle { color: "transparent"; border.width: 4; border.color: hifiStyleConstants.colors.blueHighlight; z: 1; } - } - Image { // Just a visual indicator that the user can swipe the cards over to see more. - id: swipe; - source: "../images/swipe-chevron.svg"; - width: 72; - visible: suggestions.count > 3; - anchors { - right: backgroundImage.right; - top: scroll.top; - } - MouseArea { - anchors.fill: parent - onClicked: scroll.currentIndex = (scroll.currentIndex < 0) ? 3 : (scroll.currentIndex + 3) - } - } - - Row { - spacing: 2 * hifi.layout.spacing; - anchors { - top: parent.top; - left: parent.left; - leftMargin: 150; - topMargin: -30; - } - property var selected: allTab; - TextButton { - id: allTab; - text: "ALL"; - property string includeActions: 'snapshot,concurrency'; - selected: allTab === selectedTab; - action: tabSelect; - } - TextButton { - id: placeTab; - text: "PLACES"; - property string includeActions: 'concurrency'; - selected: placeTab === selectedTab; - action: tabSelect; - } - TextButton { - id: snapsTab; - text: "SNAPS"; - property string includeActions: 'snapshot'; - selected: snapsTab === selectedTab; - action: tabSelect; - } - } - - Image { - id: backgroundImage - source: "../images/address-bar-856.svg" - width: 856 - height: 100 - anchors { - bottom: parent.keyboardEnabled ? keyboard.top : parent.bottom; - } - property int inputAreaHeight: 70 - property int inputAreaStep: (height - inputAreaHeight) / 2 - - ToolbarButton { - id: homeButton - imageURL: "../images/home.svg" - onClicked: { - addressBarDialog.loadHome(); - root.shown = false; - } - anchors { - left: parent.left - leftMargin: homeButton.width / 2 - verticalCenter: parent.verticalCenter - } - } - - ToolbarButton { - id: backArrow; - imageURL: "../images/backward.svg"; - onClicked: addressBarDialog.loadBack(); - anchors { - left: homeButton.right - verticalCenter: parent.verticalCenter - } - } - ToolbarButton { - id: forwardArrow; - imageURL: "../images/forward.svg"; - onClicked: addressBarDialog.loadForward(); - anchors { - left: backArrow.right - verticalCenter: parent.verticalCenter - } - } - - HifiStyles.RalewayLight { - id: notice; - font.pixelSize: hifi.fonts.pixelSize * 0.50; - anchors { - top: parent.top - topMargin: parent.inputAreaStep + 12 - left: addressLine.left - right: addressLine.right - } - } - HifiStyles.FiraSansRegular { - id: location; - font.pixelSize: addressLine.font.pixelSize; - color: "gray"; - clip: true; - anchors.fill: addressLine; - visible: addressLine.text.length === 0 - } - TextInput { - id: addressLine - focus: true - anchors { - top: parent.top - bottom: parent.bottom - left: forwardArrow.right - right: parent.right - leftMargin: forwardArrow.width - rightMargin: forwardArrow.width / 2 - topMargin: parent.inputAreaStep + (2 * hifi.layout.spacing) - bottomMargin: parent.inputAreaStep - } - font.pixelSize: hifi.fonts.pixelSize * 0.75 - cursorVisible: false - onTextChanged: { - filterChoicesByText(); - updateLocationText(text.length > 0); - if (!isCursorVisible && text.length > 0) { - isCursorVisible = true; - cursorVisible = true; - } - } - onActiveFocusChanged: { - cursorVisible = isCursorVisible && focus; - } - MouseArea { - // If user clicks in address bar show cursor to indicate ability to enter address. - anchors.fill: parent - onClicked: { - isCursorVisible = true; - parent.cursorVisible = true; - parent.forceActiveFocus(); - } - } - } - } - - Timer { - // Delay updating location text a bit to avoid flicker of content and so that connection status is valid. - id: updateLocationTextTimer - running: false - interval: 500 // ms - repeat: false - onTriggered: updateLocationText(false); - } - - Timer { - // Delay clearing address line so as to avoid flicker of "not connected" being displayed after entering an address. - id: clearAddressLineTimer - running: false - interval: 100 // ms - repeat: false - onTriggered: { - addressLine.text = ""; - isCursorVisible = false; - } - } - - Window { - width: 938 - height: 625 - HifiControls.WebView { - anchors.fill: parent; - id: storyCardHTML; - } - id: storyCardFrame; - - shown: false; - destroyOnCloseButton: false; - pinnable: false; - - anchors { - verticalCenter: backgroundImage.verticalCenter; - horizontalCenter: scroll.horizontalCenter; - } - z: 100 - } - - HifiControls.Keyboard { - id: keyboard - raised: parent.keyboardEnabled // Ignore keyboardRaised; keep keyboard raised if enabled (i.e., in HMD). - numeric: parent.punctuationMode - anchors { - bottom: parent.bottom - left: parent.left - right: parent.right - } - } - } - - function getRequest(url, cb) { // cb(error, responseOfCorrectContentType) of url. General for 'get' text/html/json, but without redirects. - // TODO: make available to other .qml. - var request = new XMLHttpRequest(); - // QT bug: apparently doesn't handle onload. Workaround using readyState. - request.onreadystatechange = function () { - var READY_STATE_DONE = 4; - var HTTP_OK = 200; - if (request.readyState >= READY_STATE_DONE) { - var error = (request.status !== HTTP_OK) && request.status.toString() + ':' + request.statusText, - response = !error && request.responseText, - contentType = !error && request.getResponseHeader('content-type'); - if (!error && contentType.indexOf('application/json') === 0) { - try { - response = JSON.parse(response); - } catch (e) { - error = e; - } - } - cb(error, response); - } - }; - request.open("GET", url, true); - request.send(); - } - - function identity(x) { - return x; - } - - function handleError(url, error, data, cb) { // cb(error) and answer truthy if needed, else falsey - if (!error && (data.status === 'success')) { - return; - } - if (!error) { // Create a message from the data - error = data.status + ': ' + data.error; - } - if (typeof(error) === 'string') { // Make a proper Error object - error = new Error(error); - } - error.message += ' in ' + url; // Include the url. - cb(error); - return true; - } - function resolveUrl(url) { - return (url.indexOf('/') === 0) ? (addressBarDialog.metaverseServerUrl + url) : url; - } - - function makeModelData(data) { // create a new obj from data - // ListModel elements will only ever have those properties that are defined by the first obj that is added. - // So here we make sure that we have all the properties we need, regardless of whether it is a place data or user story. - var name = data.place_name, - tags = data.tags || [data.action, data.username], - description = data.description || "", - thumbnail_url = data.thumbnail_url || ""; - return { - place_name: name, - username: data.username || "", - path: data.path || "", - created_at: data.created_at || "", - action: data.action || "", - thumbnail_url: resolveUrl(thumbnail_url), - image_url: resolveUrl(data.details.image_url), - - metaverseId: (data.id || "").toString(), // Some are strings from server while others are numbers. Model objects require uniformity. - - tags: tags, - description: description, - online_users: data.details.concurrency || 0, - drillDownToPlace: false, - - searchText: [name].concat(tags, description || []).join(' ').toUpperCase() - } - } - function suggestable(place) { - if (place.action === 'snapshot') { - return true; - } - return (place.place_name !== AddressManager.placename); // Not our entry, but do show other entry points to current domain. - } - property var selectedTab: allTab; - function tabSelect(textButton) { - selectedTab = textButton; - fillDestinations(); - } - property var placeMap: ({}); - function addToSuggestions(place) { - var collapse = allTab.selected && (place.action !== 'concurrency'); - if (collapse) { - var existing = placeMap[place.place_name]; - if (existing) { - existing.drillDownToPlace = true; - return; - } - } - suggestions.append(place); - if (collapse) { - placeMap[place.place_name] = suggestions.get(suggestions.count - 1); - } else if (place.action === 'concurrency') { - suggestions.get(suggestions.count - 1).drillDownToPlace = true; // Don't change raw place object (in allStories). - } - } - property int requestId: 0; - function getUserStoryPage(pageNumber, cb) { // cb(error) after all pages of domain data have been added to model - var options = [ - 'now=' + new Date().toISOString(), - 'include_actions=' + selectedTab.includeActions, - 'restriction=' + (Account.isLoggedIn() ? 'open,hifi' : 'open'), - 'require_online=true', - 'protocol=' + encodeURIComponent(AddressManager.protocolVersion()), - 'page=' + pageNumber - ]; - var url = metaverseBase + 'user_stories?' + options.join('&'); - var thisRequestId = ++requestId; - getRequest(url, function (error, data) { - if ((thisRequestId !== requestId) || handleError(url, error, data, cb)) { - return; - } - var stories = data.user_stories.map(function (story) { // explicit single-argument function - return makeModelData(story, url); - }); - allStories = allStories.concat(stories); - stories.forEach(makeFilteredPlaceProcessor()); - if ((data.current_page < data.total_pages) && (data.current_page <= 10)) { // just 10 pages = 100 stories for now - return getUserStoryPage(pageNumber + 1, cb); - } - cb(); - }); - } - function makeFilteredPlaceProcessor() { // answer a function(placeData) that adds it to suggestions if it matches - var words = addressLine.text.toUpperCase().split(/\s+/).filter(identity), - data = allStories; - function matches(place) { - if (!words.length) { - return suggestable(place); - } - return words.every(function (word) { - return place.searchText.indexOf(word) >= 0; - }); - } - return function (place) { - if (matches(place)) { - addToSuggestions(place); - } - }; - } - function filterChoicesByText() { - suggestions.clear(); - placeMap = {}; - allStories.forEach(makeFilteredPlaceProcessor()); - } - - function fillDestinations() { - allStories = []; - suggestions.clear(); - placeMap = {}; - getUserStoryPage(1, function (error) { - console.log('user stories query', error || 'ok', allStories.length); - }); - } - - function updateLocationText(enteringAddress) { - if (enteringAddress) { - notice.text = "Go to a place, @user, path or network address"; - notice.color = hifiStyleConstants.colors.baseGrayHighlight; - } else { - notice.text = AddressManager.isConnected ? "Your location:" : "Not Connected"; - notice.color = AddressManager.isConnected ? hifiStyleConstants.colors.baseGrayHighlight : hifiStyleConstants.colors.redHighlight; - // Display hostname, which includes ip address, localhost, and other non-placenames. - location.text = (AddressManager.placename || AddressManager.hostname || '') + (AddressManager.pathname ? AddressManager.pathname.match(/\/[^\/]+/)[0] : ''); - } - } - - onVisibleChanged: { - updateLocationText(false); - if (visible) { - addressLine.forceActiveFocus(); - fillDestinations(); - } - } - - function toggleOrGo(fromSuggestions) { - if (addressLine.text !== "") { - addressBarDialog.loadAddress(addressLine.text, fromSuggestions) - } - root.shown = false; - } - - Keys.onPressed: { - switch (event.key) { - case Qt.Key_Escape: - case Qt.Key_Back: - root.shown = false - clearAddressLineTimer.start(); - event.accepted = true - break - case Qt.Key_Enter: - case Qt.Key_Return: - toggleOrGo() - clearAddressLineTimer.start(); - event.accepted = true - break - } - } -} From addcb51ed98e09693f79dd6c8bcf3f063b1f58df Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Wed, 8 Nov 2017 07:50:35 -0800 Subject: [PATCH 078/187] Change slider label from "master gain" to "master volume" --- interface/resources/qml/hifi/NameCard.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml index 0adcde3ad9..7f78a29b2a 100644 --- a/interface/resources/qml/hifi/NameCard.qml +++ b/interface/resources/qml/hifi/NameCard.qml @@ -576,7 +576,7 @@ Item { // The slider for my card is special, it controls the master gain id: gainSliderText; visible: isMyCard; - text: "master gain"; + text: "master volume"; size: hifi.fontSizes.tabularData; anchors.left: parent.right; anchors.leftMargin: 8; From 393b55424fd5c64a4ff53af70891be8216b7b554 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 8 Nov 2017 11:37:22 -0800 Subject: [PATCH 079/187] Fix Create-new-domain-id not saving in DS settings --- domain-server/resources/web/settings/js/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index 7f99b367a3..d13dde18ca 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -533,7 +533,7 @@ function createNewDomainID(label, justConnected) { $.post("/api/domains", domainJSON, function(data){ // we successfully created a domain ID, set it on that field - var domainID = data.domain_id; + var domainID = data.domain.id; console.log("Setting domain id to ", data, domainID); $(Settings.DOMAIN_ID_SELECTOR).val(domainID).change(); From 3a9c364837d9797ca146a61be95e397e3c6f0bd1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 8 Nov 2017 13:09:42 -0800 Subject: [PATCH 080/187] Fix domain server label not handling spaces correctly --- libraries/embedded-webserver/src/HTTPConnection.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/embedded-webserver/src/HTTPConnection.cpp b/libraries/embedded-webserver/src/HTTPConnection.cpp index 0a8448108e..a61bc95f8b 100644 --- a/libraries/embedded-webserver/src/HTTPConnection.cpp +++ b/libraries/embedded-webserver/src/HTTPConnection.cpp @@ -65,7 +65,9 @@ QHash HTTPConnection::parseUrlEncodedForm() { QUrlQuery form { _requestContent }; QHash pairs; for (auto pair : form.queryItems()) { - pairs[QUrl::fromPercentEncoding(pair.first.toLatin1())] = QUrl::fromPercentEncoding(pair.second.toLatin1()); + auto key = QUrl::fromPercentEncoding(pair.first.toLatin1().replace('+', ' ')); + auto value = QUrl::fromPercentEncoding(pair.second.toLatin1().replace('+', ' ')); + pairs[key] = value; } return pairs; From c77942c542e539a6bf9b5c746327362d4be1cd15 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 8 Nov 2017 13:36:03 -0800 Subject: [PATCH 081/187] Fix domain settings not showing label when first setting a placename This occurs because previously we only created the input elements if you have a domain id when the page loads. Because you can now have a domain id assigned after the page initially loads, we need to always create the input. --- domain-server/resources/web/settings/js/settings.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index d13dde18ca..a0bb407236 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -629,9 +629,7 @@ function showOrHideLabel() { } function setupDomainLabelSetting() { - if (!showOrHideLabel()) { - return; - } + showOrHideLabel(); var html = "

" html += " Edit"; From c5c1ead4003efc2e638ddd85d3a7ddf6eb1d42de Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 9 Nov 2017 10:51:21 +1300 Subject: [PATCH 082/187] Fix GOTO dialog's connection status and location not always updating --- interface/resources/qml/hifi/tablet/TabletAddressDialog.qml | 6 +++--- interface/src/ui/AddressBarDialog.cpp | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml index 4e546ffa0d..5f1fa2900c 100644 --- a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml +++ b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml @@ -84,7 +84,6 @@ StackView { anchors.centerIn = parent; } - function resetAfterTeleport() { //storyCardFrame.shown = root.shown = false; } @@ -135,7 +134,8 @@ StackView { bottom: parent.bottom } - onHostChanged: updateLocationTextTimer.start(); + onHostChanged: updateLocationTextTimer.restart(); + Rectangle { id: navBar width: parent.width @@ -358,7 +358,7 @@ StackView { // Delay updating location text a bit to avoid flicker of content and so that connection status is valid. id: updateLocationTextTimer running: false - interval: 500 // ms + interval: 1000 // ms repeat: false onTriggered: updateLocationText(false); } diff --git a/interface/src/ui/AddressBarDialog.cpp b/interface/src/ui/AddressBarDialog.cpp index 8b5e255b06..1a23674fa3 100644 --- a/interface/src/ui/AddressBarDialog.cpp +++ b/interface/src/ui/AddressBarDialog.cpp @@ -40,6 +40,10 @@ AddressBarDialog::AddressBarDialog(QQuickItem* parent) : OffscreenQmlDialog(pare _backEnabled = !(DependencyManager::get()->getBackStack().isEmpty()); _forwardEnabled = !(DependencyManager::get()->getForwardStack().isEmpty()); connect(addressManager.data(), &AddressManager::hostChanged, this, &AddressBarDialog::hostChanged); + auto nodeList = DependencyManager::get(); + const DomainHandler& domainHandler = nodeList->getDomainHandler(); + connect(&domainHandler, &DomainHandler::connectedToDomain, this, &AddressBarDialog::hostChanged); + connect(&domainHandler, &DomainHandler::disconnectedFromDomain, this, &AddressBarDialog::hostChanged); connect(DependencyManager::get().data(), &DialogsManager::setUseFeed, this, &AddressBarDialog::setUseFeed); connect(qApp, &Application::receivedHifiSchemeURL, this, &AddressBarDialog::receivedHifiSchemeURL); } From a55a30f87febdacf4e53693f47db33ac1c6bbfcd Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 8 Nov 2017 14:00:43 -0800 Subject: [PATCH 083/187] Fix 'Path' label when adding a place name --- domain-server/resources/web/js/shared.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/resources/web/js/shared.js b/domain-server/resources/web/js/shared.js index 66159209ea..bff79ce863 100644 --- a/domain-server/resources/web/js/shared.js +++ b/domain-server/resources/web/js/shared.js @@ -236,7 +236,7 @@ function chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAd if (forcePathTo === undefined || forcePathTo === null) { var path = "
"; - path += ""; + path += ""; path += ""; path += "
"; modal_body.append($(path)); From 1db8e2a0ec2a4f8ba9abb76636a48bedfac64b84 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 8 Nov 2017 14:01:04 -0800 Subject: [PATCH 084/187] Update create domain id language --- domain-server/resources/web/settings/js/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index a0bb407236..419b55685f 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -503,7 +503,7 @@ function showDomainCreationAlert(justConnected) { swal({ title: 'Create new domain ID', type: 'input', - text: 'Enter a short description for this machine.

This will help you identify which domain ID belongs to which machine.

', + text: 'Enter a label this machine.

This will help you identify which domain ID belongs to which machine.

', showCancelButton: true, confirmButtonText: "Create", closeOnConfirm: false, From 028410a26a5c60ce7a00c79865c36ff7ebf37011 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 8 Nov 2017 14:05:51 -0800 Subject: [PATCH 085/187] Fix alignment of Disconnect btn on ds settings --- domain-server/resources/web/css/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/domain-server/resources/web/css/style.css b/domain-server/resources/web/css/style.css index 8b004687b9..fb1e1aa9f5 100644 --- a/domain-server/resources/web/css/style.css +++ b/domain-server/resources/web/css/style.css @@ -302,6 +302,7 @@ table .headers + .headers td { } .account-connected-header { + vertical-align: middle; color: #6FCF97; font-size: 30px; margin-right: 20px; From 3b702a7ae342098453ac5a58189979da18a5e6f9 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 9 Nov 2017 09:05:07 -0800 Subject: [PATCH 086/187] Make ESC close dialog windows on DS settings --- domain-server/resources/web/js/shared.js | 3 ++- domain-server/resources/web/settings/js/settings.js | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/domain-server/resources/web/js/shared.js b/domain-server/resources/web/js/shared.js index bff79ce863..b21d1a2f79 100644 --- a/domain-server/resources/web/js/shared.js +++ b/domain-server/resources/web/js/shared.js @@ -363,7 +363,8 @@ function chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAd title: Strings.ADD_PLACE_TITLE, message: modal_body, closeButton: false, - buttons: modal_buttons + buttons: modal_buttons, + onEscape: true }); } else { bootbox.alert(Strings.ADD_PLACE_UNABLE_TO_LOAD_ERROR); diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index 419b55685f..c24e2879ef 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -652,6 +652,7 @@ function setupDomainLabelSetting() { title: 'Edit Label', message: modal_body, closeButton: false, + onEscape: true, buttons: [ { label: 'Cancel', @@ -775,6 +776,7 @@ function setupDomainNetworkingSettings() { title: 'Edit Network', message: modal_body, closeButton: false, + onEscape: true, buttons: [ { label: 'Cancel', @@ -922,6 +924,7 @@ function placeTableRow(name, path, isTemporary, placeID) { var dialog = bootbox.dialog({ message: confirmString, closeButton: false, + onEscape: true, buttons: [ { label: Strings.REMOVE_PLACE_CANCEL_BUTTON, @@ -1096,6 +1099,7 @@ function editHighFidelityPlace(placeID, name, path) { dialog = bootbox.dialog({ title: Strings.EDIT_PLACE_TITLE, closeButton: false, + onEscape: true, message: modal_body, buttons: modal_buttons }) @@ -1178,6 +1182,7 @@ function chooseFromHighFidelityDomains(clickedButton) { bootbox.dialog({ title: "Choose matching domain", + onEscape: true, message: modal_body, buttons: modal_buttons }) From e274df065d006f8af7f1f6bb58a3f20efb2252f7 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 9 Nov 2017 09:25:16 -0800 Subject: [PATCH 087/187] Fix label nav always being shown in ds settings nav --- domain-server/resources/web/settings/js/settings.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index c24e2879ef..19d711ebd8 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -620,12 +620,10 @@ function parseJSONResponse(xhr) { function showOrHideLabel() { var type = getCurrentDomainIDType(); - if (!accessTokenIsSet() || (type !== DOMAIN_ID_TYPE_FULL && type !== DOMAIN_ID_TYPE_UNKNOWN)) { - $(".panel#label").hide(); - return false; - } - $(".panel#label").show(); - return true; + var shouldShow = accessTokenIsSet() && (type === DOMAIN_ID_TYPE_FULL || type === DOMAIN_ID_TYPE_UNKNOWN); + $(".panel#label").toggle(shouldShow); + $("li a[href='#label']").parent().toggle(shouldShow); + return shouldShow; } function setupDomainLabelSetting() { From d62c98c6e2a99224461e97d76ed08cf677e549d1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 9 Nov 2017 10:03:41 -0800 Subject: [PATCH 088/187] Update network address/port label in DS settings --- domain-server/resources/web/settings/js/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index 19d711ebd8..8f2e076f6c 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -739,7 +739,7 @@ function setupDomainNetworkingSettings() { var includeAddress = autoNetworkingSetting === 'disabled'; if (includeAddress) { - var label = "Network Address and Port"; + var label = "Network Address:Port"; } else { var label = "Network Port"; } From 5a78c9ebfee6685c32abcef652fb6b3b3f7dc348 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 8 Nov 2017 17:17:00 -0800 Subject: [PATCH 089/187] integrated stylus into pointer system, need to update controller module --- interface/src/raypick/JointRayPick.cpp | 2 +- interface/src/raypick/JointRayPick.h | 2 +- interface/src/raypick/LaserPointer.cpp | 70 +- interface/src/raypick/LaserPointer.h | 12 +- interface/src/raypick/MouseRayPick.cpp | 2 +- interface/src/raypick/MouseRayPick.h | 2 +- .../src/raypick/PickScriptingInterface.cpp | 27 + .../src/raypick/PickScriptingInterface.h | 1 + .../src/raypick/PointerScriptingInterface.cpp | 18 +- interface/src/raypick/RayPick.cpp | 59 +- interface/src/raypick/RayPick.h | 14 +- interface/src/raypick/StaticRayPick.cpp | 2 +- interface/src/raypick/StaticRayPick.h | 2 +- interface/src/raypick/StylusPick.cpp | 230 ++++++ interface/src/raypick/StylusPick.h | 78 ++ interface/src/raypick/StylusPointer.cpp | 713 ++++-------------- interface/src/raypick/StylusPointer.h | 143 +--- libraries/pointers/src/pointers/Pointer.cpp | 4 +- libraries/pointers/src/pointers/Pointer.h | 8 +- libraries/shared/src/RegisteredMetaTypes.h | 28 +- .../controllerModules/inEditMode.js | 10 +- 21 files changed, 645 insertions(+), 782 deletions(-) create mode 100644 interface/src/raypick/StylusPick.cpp create mode 100644 interface/src/raypick/StylusPick.h diff --git a/interface/src/raypick/JointRayPick.cpp b/interface/src/raypick/JointRayPick.cpp index fdffb9796d..45b21f7bcc 100644 --- a/interface/src/raypick/JointRayPick.cpp +++ b/interface/src/raypick/JointRayPick.cpp @@ -12,7 +12,7 @@ #include "avatar/AvatarManager.h" -JointRayPick::JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance, const bool enabled) : +JointRayPick::JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, float maxDistance, bool enabled) : RayPick(filter, maxDistance, enabled), _jointName(jointName), _posOffset(posOffset), diff --git a/interface/src/raypick/JointRayPick.h b/interface/src/raypick/JointRayPick.h index 947eb81ba8..c0031d87ff 100644 --- a/interface/src/raypick/JointRayPick.h +++ b/interface/src/raypick/JointRayPick.h @@ -16,7 +16,7 @@ class JointRayPick : public RayPick { public: - JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); + JointRayPick(const std::string& jointName, const glm::vec3& posOffset, const glm::vec3& dirOffset, const PickFilter& filter, float maxDistance = 0.0f, bool enabled = false); PickRay getMathematicalPick() const override; diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 464de83565..bd54a24e97 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -184,7 +184,7 @@ void LaserPointer::updateVisuals(const PickResultPointer& pickResult) { IntersectionType type = rayPickResult ? rayPickResult->type : IntersectionType::NONE; if (_enabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() && (type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) { - PickRay pickRay{ rayPickResult->pickVariant }; + PickRay pickRay(rayPickResult->pickVariant); QUuid uid = rayPickResult->objectID; float distance = _laserLength > 0.0f ? _laserLength : rayPickResult->distance; updateRenderState(_renderStates[_currentRenderState], type, distance, uid, pickRay, false); @@ -292,82 +292,30 @@ RenderState LaserPointer::buildRenderState(const QVariantMap& propMap) { PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const { QUuid pickedID; glm::vec3 intersection, surfaceNormal, direction, origin; - if (target.type != NONE) { - auto rayPickResult = std::static_pointer_cast(pickResult); + auto rayPickResult = std::static_pointer_cast(pickResult); + if (rayPickResult) { intersection = rayPickResult->intersection; surfaceNormal = rayPickResult->surfaceNormal; const QVariantMap& searchRay = rayPickResult->pickVariant; direction = vec3FromVariant(searchRay["direction"]); origin = vec3FromVariant(searchRay["origin"]); - pickedID = rayPickResult->objectID;; + pickedID = rayPickResult->objectID; } glm::vec2 pos2D; if (pickedID != target.objectID) { if (target.type == ENTITY) { - intersection = intersectRayWithEntityXYPlane(target.objectID, origin, direction); + intersection = RayPick::intersectRayWithEntityXYPlane(target.objectID, origin, direction); } else if (target.type == OVERLAY) { - intersection = intersectRayWithOverlayXYPlane(target.objectID, origin, direction); + intersection = RayPick::intersectRayWithOverlayXYPlane(target.objectID, origin, direction); } } if (target.type == ENTITY) { - pos2D = projectOntoEntityXYPlane(target.objectID, intersection); + pos2D = RayPick::projectOntoEntityXYPlane(target.objectID, intersection); } else if (target.type == OVERLAY) { - pos2D = projectOntoOverlayXYPlane(target.objectID, intersection); + pos2D = RayPick::projectOntoOverlayXYPlane(target.objectID, intersection); } else if (target.type == HUD) { pos2D = DependencyManager::get()->calculatePos2DFromHUD(intersection); } return PointerEvent(pos2D, intersection, surfaceNormal, direction); -} - -glm::vec3 LaserPointer::intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const { - glm::vec3 n = rotation * Vectors::FRONT; - float t = glm::dot(n, point - origin) / glm::dot(n, direction); - return origin + t * direction; -} - -glm::vec3 LaserPointer::intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction) const { - glm::vec3 position = vec3FromVariant(qApp->getOverlays().getProperty(overlayID, "position").value); - glm::quat rotation = quatFromVariant(qApp->getOverlays().getProperty(overlayID, "rotation").value); - const glm::vec3 DEFAULT_REGISTRATION_POINT = glm::vec3(0.5f); - return intersectRayWithXYPlane(origin, direction, position, rotation, DEFAULT_REGISTRATION_POINT); -} - -glm::vec3 LaserPointer::intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction) const { - auto props = DependencyManager::get()->getEntityProperties(entityID); - return intersectRayWithXYPlane(origin, direction, props.getPosition(), props.getRotation(), props.getRegistrationPoint()); -} - -glm::vec2 LaserPointer::projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const { - glm::quat invRot = glm::inverse(rotation); - glm::vec3 localPos = invRot * (worldPos - position); - glm::vec3 invDimensions = glm::vec3(1.0f / dimensions.x, 1.0f / dimensions.y, 1.0f / dimensions.z); - - glm::vec3 normalizedPos = (localPos * invDimensions) + registrationPoint; - return glm::vec2(normalizedPos.x * dimensions.x, (1.0f - normalizedPos.y) * dimensions.y); -} - -glm::vec2 LaserPointer::projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos) const { - glm::vec3 position = vec3FromVariant(qApp->getOverlays().getProperty(overlayID, "position").value); - glm::quat rotation = quatFromVariant(qApp->getOverlays().getProperty(overlayID, "rotation").value); - glm::vec3 dimensions; - - float dpi = qApp->getOverlays().getProperty(overlayID, "dpi").value.toFloat(); - if (dpi > 0) { - // Calculate physical dimensions for web3d overlay from resolution and dpi; "dimensions" property is used as a scale. - glm::vec3 resolution = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "resolution").value), 1); - glm::vec3 scale = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "dimensions").value), 0.01f); - const float INCHES_TO_METERS = 1.0f / 39.3701f; - dimensions = (resolution * INCHES_TO_METERS / dpi) * scale; - } else { - dimensions = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "dimensions").value), 0.01); - } - - const glm::vec3 DEFAULT_REGISTRATION_POINT = glm::vec3(0.5f); - return projectOntoXYPlane(worldPos, position, rotation, dimensions, DEFAULT_REGISTRATION_POINT); -} - -glm::vec2 LaserPointer::projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos) const { - auto props = DependencyManager::get()->getEntityProperties(entityID); - return projectOntoXYPlane(worldPos, props.getPosition(), props.getRotation(), props.getDimensions(), props.getRegistrationPoint()); -} +} \ No newline at end of file diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index c93404e14d..4874cadf0a 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -75,8 +75,8 @@ protected: PickedObject getHoveredObject(const PickResultPointer& pickResult) override; Pointer::Buttons getPressedButtons() override; - bool shouldHover() override { return _currentRenderState != ""; } - bool shouldTrigger() override { return _currentRenderState != ""; } + bool shouldHover(const PickResultPointer& pickResult) override { return _currentRenderState != ""; } + bool shouldTrigger(const PickResultPointer& pickResult) override { return _currentRenderState != ""; } private: PointerTriggers _triggers; @@ -94,14 +94,6 @@ private: void updateRenderState(const RenderState& renderState, const IntersectionType type, float distance, const QUuid& objectID, const PickRay& pickRay, bool defaultState); void disableRenderState(const RenderState& renderState); - - glm::vec3 intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction) const; - glm::vec3 intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction) const; - glm::vec3 intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat rotation, const glm::vec3& registration) const; - glm::vec2 projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos) const; - glm::vec2 projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos) const; - glm::vec2 projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint) const; - }; #endif // hifi_LaserPointer_h diff --git a/interface/src/raypick/MouseRayPick.cpp b/interface/src/raypick/MouseRayPick.cpp index 1f39b61614..2b55c44460 100644 --- a/interface/src/raypick/MouseRayPick.cpp +++ b/interface/src/raypick/MouseRayPick.cpp @@ -13,7 +13,7 @@ #include "Application.h" #include "display-plugins/CompositorHelper.h" -MouseRayPick::MouseRayPick(const PickFilter& filter, const float maxDistance, const bool enabled) : +MouseRayPick::MouseRayPick(const PickFilter& filter, float maxDistance, bool enabled) : RayPick(filter, maxDistance, enabled) { } diff --git a/interface/src/raypick/MouseRayPick.h b/interface/src/raypick/MouseRayPick.h index 79e94ed777..a9070e8b92 100644 --- a/interface/src/raypick/MouseRayPick.h +++ b/interface/src/raypick/MouseRayPick.h @@ -16,7 +16,7 @@ class MouseRayPick : public RayPick { public: - MouseRayPick(const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); + MouseRayPick(const PickFilter& filter, float maxDistance = 0.0f, bool enabled = false); PickRay getMathematicalPick() const override; diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 137c3fa6ae..dad4cde3b7 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -16,6 +16,7 @@ #include "StaticRayPick.h" #include "JointRayPick.h" #include "MouseRayPick.h" +#include "StylusPick.h" #include #include @@ -24,6 +25,8 @@ unsigned int PickScriptingInterface::createPick(const PickQuery::PickType type, switch (type) { case PickQuery::PickType::Ray: return createRayPick(properties); + case PickQuery::PickType::Stylus: + return createStylusPick(properties); default: return PickManager::INVALID_PICK_ID; } @@ -81,6 +84,30 @@ unsigned int PickScriptingInterface::createRayPick(const QVariant& properties) { return PickManager::INVALID_PICK_ID; } +unsigned int PickScriptingInterface::createStylusPick(const QVariant& properties) { + QVariantMap propMap = properties.toMap(); + + bilateral::Side side = bilateral::Side::Invalid; + { + QVariant handVar = propMap["hand"]; + if (handVar.isValid()) { + side = bilateral::side(handVar.toInt()); + } + } + + bool enabled = false; + if (propMap["enabled"].isValid()) { + enabled = propMap["enabled"].toBool(); + } + + PickFilter filter = PickFilter(); + if (propMap["filter"].isValid()) { + filter = PickFilter(propMap["filter"].toUInt()); + } + + return DependencyManager::get()->addPick(PickQuery::Stylus, std::make_shared(filter, side, enabled)); +} + void PickScriptingInterface::enablePick(unsigned int uid) { DependencyManager::get()->enablePick(uid); } diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 613686be9b..108ee99473 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -34,6 +34,7 @@ class PickScriptingInterface : public QObject, public Dependency { public: unsigned int createRayPick(const QVariant& properties); + unsigned int createStylusPick(const QVariant& properties); void registerMetaTypes(QScriptEngine* engine); diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index 0572434c56..70d60fc467 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -43,19 +43,19 @@ unsigned int PointerScriptingInterface::createPointer(const PickQuery::PickType& } unsigned int PointerScriptingInterface::createStylus(const QVariant& properties) const { - bilateral::Side side = bilateral::Side::Invalid; - { - QVariant handVar = properties.toMap()["hand"]; - if (handVar.isValid()) { - side = bilateral::side(handVar.toInt()); - } + QVariantMap propertyMap = properties.toMap(); + + bool hover = false; + if (propertyMap["hover"].isValid()) { + hover = propertyMap["hover"].toBool(); } - if (bilateral::Side::Invalid == side) { - return PointerEvent::INVALID_POINTER_ID; + bool enabled = false; + if (propertyMap["enabled"].isValid()) { + enabled = propertyMap["enabled"].toBool(); } - return DependencyManager::get()->addPointer(std::make_shared(side)); + return DependencyManager::get()->addPointer(std::make_shared(properties, StylusPointer::buildStylusOverlay(propertyMap), hover, enabled)); } unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& properties) const { diff --git a/interface/src/raypick/RayPick.cpp b/interface/src/raypick/RayPick.cpp index 4e1e0386f1..7689b295db 100644 --- a/interface/src/raypick/RayPick.cpp +++ b/interface/src/raypick/RayPick.cpp @@ -48,4 +48,61 @@ PickResultPointer RayPick::getAvatarIntersection(const PickRay& pick) { PickResultPointer RayPick::getHUDIntersection(const PickRay& pick) { glm::vec3 hudRes = DependencyManager::get()->calculateRayUICollisionPoint(pick.origin, pick.direction); return std::make_shared(IntersectionType::HUD, QUuid(), glm::distance(pick.origin, hudRes), hudRes, pick); -} \ No newline at end of file +} + +glm::vec3 RayPick::intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat& rotation, const glm::vec3& registration) { + // TODO: take into account registration + glm::vec3 n = rotation * Vectors::FRONT; + float t = glm::dot(n, point - origin) / glm::dot(n, direction); + return origin + t * direction; +} + +glm::vec3 RayPick::intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction) { + glm::vec3 position = vec3FromVariant(qApp->getOverlays().getProperty(overlayID, "position").value); + glm::quat rotation = quatFromVariant(qApp->getOverlays().getProperty(overlayID, "rotation").value); + const glm::vec3 DEFAULT_REGISTRATION_POINT = glm::vec3(0.5f); + return intersectRayWithXYPlane(origin, direction, position, rotation, DEFAULT_REGISTRATION_POINT); +} + +glm::vec3 RayPick::intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction) { + auto props = DependencyManager::get()->getEntityProperties(entityID); + return intersectRayWithXYPlane(origin, direction, props.getPosition(), props.getRotation(), props.getRegistrationPoint()); +} + +glm::vec2 RayPick::projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint, bool unNormalized) { + glm::quat invRot = glm::inverse(rotation); + glm::vec3 localPos = invRot * (worldPos - position); + + glm::vec3 normalizedPos = (localPos / dimensions) + registrationPoint; + + glm::vec2 pos2D = glm::vec2(normalizedPos.x, (1.0f - normalizedPos.y)); + if (unNormalized) { + pos2D *= glm::vec2(dimensions.x, dimensions.y); + } + return pos2D; +} + +glm::vec2 RayPick::projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos, bool unNormalized) { + glm::vec3 position = vec3FromVariant(qApp->getOverlays().getProperty(overlayID, "position").value); + glm::quat rotation = quatFromVariant(qApp->getOverlays().getProperty(overlayID, "rotation").value); + glm::vec3 dimensions; + + float dpi = qApp->getOverlays().getProperty(overlayID, "dpi").value.toFloat(); + if (dpi > 0) { + // Calculate physical dimensions for web3d overlay from resolution and dpi; "dimensions" property is used as a scale. + glm::vec3 resolution = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "resolution").value), 1); + glm::vec3 scale = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "dimensions").value), 0.01f); + const float INCHES_TO_METERS = 1.0f / 39.3701f; + dimensions = (resolution * INCHES_TO_METERS / dpi) * scale; + } else { + dimensions = glm::vec3(vec2FromVariant(qApp->getOverlays().getProperty(overlayID, "dimensions").value), 0.01); + } + + const glm::vec3 DEFAULT_REGISTRATION_POINT = glm::vec3(0.5f); + return projectOntoXYPlane(worldPos, position, rotation, dimensions, DEFAULT_REGISTRATION_POINT, unNormalized); +} + +glm::vec2 RayPick::projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos, bool unNormalized) { + auto props = DependencyManager::get()->getEntityProperties(entityID); + return projectOntoXYPlane(worldPos, props.getPosition(), props.getRotation(), props.getDimensions(), props.getRegistrationPoint(), unNormalized); +} diff --git a/interface/src/raypick/RayPick.h b/interface/src/raypick/RayPick.h index 1c2b3fbb80..4a4ac69edd 100644 --- a/interface/src/raypick/RayPick.h +++ b/interface/src/raypick/RayPick.h @@ -18,7 +18,7 @@ class RayPickResult : public PickResult { public: RayPickResult() {} RayPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {} - RayPickResult(const IntersectionType type, const QUuid& objectID, const float distance, const glm::vec3& intersection, const PickRay& searchRay, const glm::vec3& surfaceNormal = glm::vec3(NAN)) : + RayPickResult(const IntersectionType type, const QUuid& objectID, float distance, const glm::vec3& intersection, const PickRay& searchRay, const glm::vec3& surfaceNormal = glm::vec3(NAN)) : PickResult(searchRay.toVariantMap()), type(type), intersects(type != NONE), objectID(objectID), distance(distance), intersection(intersection), surfaceNormal(surfaceNormal) { } @@ -67,13 +67,23 @@ public: class RayPick : public Pick { public: - RayPick(const PickFilter& filter, const float maxDistance, const bool enabled) : Pick(filter, maxDistance, enabled) {} + RayPick(const PickFilter& filter, float maxDistance, bool enabled) : Pick(filter, maxDistance, enabled) {} PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override { return std::make_shared(pickVariant); } PickResultPointer getEntityIntersection(const PickRay& pick) override; PickResultPointer getOverlayIntersection(const PickRay& pick) override; PickResultPointer getAvatarIntersection(const PickRay& pick) override; PickResultPointer getHUDIntersection(const PickRay& pick) override; + + // These are helper functions for projecting and intersecting rays + static glm::vec3 intersectRayWithEntityXYPlane(const QUuid& entityID, const glm::vec3& origin, const glm::vec3& direction); + static glm::vec3 intersectRayWithOverlayXYPlane(const QUuid& overlayID, const glm::vec3& origin, const glm::vec3& direction); + static glm::vec2 projectOntoEntityXYPlane(const QUuid& entityID, const glm::vec3& worldPos, bool unNormalized = true); + static glm::vec2 projectOntoOverlayXYPlane(const QUuid& overlayID, const glm::vec3& worldPos, bool unNormalized = true); + +private: + static glm::vec3 intersectRayWithXYPlane(const glm::vec3& origin, const glm::vec3& direction, const glm::vec3& point, const glm::quat& rotation, const glm::vec3& registration); + static glm::vec2 projectOntoXYPlane(const glm::vec3& worldPos, const glm::vec3& position, const glm::quat& rotation, const glm::vec3& dimensions, const glm::vec3& registrationPoint, bool unNormalized); }; #endif // hifi_RayPick_h diff --git a/interface/src/raypick/StaticRayPick.cpp b/interface/src/raypick/StaticRayPick.cpp index c79f87ad0e..b74afd6b5d 100644 --- a/interface/src/raypick/StaticRayPick.cpp +++ b/interface/src/raypick/StaticRayPick.cpp @@ -7,7 +7,7 @@ // #include "StaticRayPick.h" -StaticRayPick::StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance, const bool enabled) : +StaticRayPick::StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, float maxDistance, bool enabled) : RayPick(filter, maxDistance, enabled), _pickRay(position, direction) { diff --git a/interface/src/raypick/StaticRayPick.h b/interface/src/raypick/StaticRayPick.h index ded57caf4e..e4da2dbd55 100644 --- a/interface/src/raypick/StaticRayPick.h +++ b/interface/src/raypick/StaticRayPick.h @@ -13,7 +13,7 @@ class StaticRayPick : public RayPick { public: - StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, const float maxDistance = 0.0f, const bool enabled = false); + StaticRayPick(const glm::vec3& position, const glm::vec3& direction, const PickFilter& filter, float maxDistance = 0.0f, bool enabled = false); PickRay getMathematicalPick() const override; diff --git a/interface/src/raypick/StylusPick.cpp b/interface/src/raypick/StylusPick.cpp new file mode 100644 index 0000000000..f2b650b5bf --- /dev/null +++ b/interface/src/raypick/StylusPick.cpp @@ -0,0 +1,230 @@ +// +// Created by Bradley Austin Davis on 2017/10/24 +// Copyright 2013-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 +// +#include "StylusPick.h" + +#include "RayPick.h" + +#include + +#include "ui/overlays/Base3DOverlay.h" + +#include "Application.h" +#include +#include "avatar/AvatarManager.h" + +#include +#include + +using namespace bilateral; + +// TODO: make these configurable per pick +static Setting::Handle USE_FINGER_AS_STYLUS("preferAvatarFingerOverStylus", false); +static const float WEB_STYLUS_LENGTH = 0.2f; +static const float WEB_TOUCH_Y_OFFSET = 0.105f; // how far forward (or back with a negative number) to slide stylus in hand +static const glm::vec3 TIP_OFFSET{ 0.0f, WEB_STYLUS_LENGTH - WEB_TOUCH_Y_OFFSET, 0.0f }; + +struct SideData { + QString avatarJoint; + QString cameraJoint; + controller::StandardPoseChannel channel; + controller::Hand hand; + glm::vec3 grabPointSphereOffset; + + int getJointIndex(bool finger) { + const auto& jointName = finger ? avatarJoint : cameraJoint; + return DependencyManager::get()->getMyAvatar()->getJointIndex(jointName); + } +}; + +static const std::array SIDES{ { { "LeftHandIndex4", + "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", + controller::StandardPoseChannel::LEFT_HAND, + controller::Hand::LEFT, + { -0.04f, 0.13f, 0.039f } }, + { "RightHandIndex4", + "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND", + controller::StandardPoseChannel::RIGHT_HAND, + controller::Hand::RIGHT, + { 0.04f, 0.13f, 0.039f } } } }; + +std::shared_ptr StylusPickResult::compareAndProcessNewResult(const std::shared_ptr& newRes) { + auto newStylusResult = std::static_pointer_cast(newRes); + if (newStylusResult && newStylusResult->distance < distance) { + return std::make_shared(*newStylusResult); + } else { + return std::make_shared(*this); + } +} + +bool StylusPickResult::checkOrFilterAgainstMaxDistance(float maxDistance) { + return distance < maxDistance; +} + +StylusPick::StylusPick(const PickFilter& filter, Side side, bool enabled) : + Pick(filter, 0.0f, enabled), + _side(side) +{ +} + +static StylusTip getFingerWorldLocation(Side side) { + const auto& sideData = SIDES[index(side)]; + auto myAvatar = DependencyManager::get()->getMyAvatar(); + auto fingerJointIndex = myAvatar->getJointIndex(sideData.avatarJoint); + + if (fingerJointIndex == -1) { + return StylusTip(); + } + + auto fingerPosition = myAvatar->getAbsoluteJointTranslationInObjectFrame(fingerJointIndex); + auto fingerRotation = myAvatar->getAbsoluteJointRotationInObjectFrame(fingerJointIndex); + auto avatarOrientation = myAvatar->getOrientation(); + auto avatarPosition = myAvatar->getPosition(); + StylusTip result; + result.side = side; + result.orientation = avatarOrientation * fingerRotation; + result.position = avatarPosition + (avatarOrientation * fingerPosition); + return result; +} + +// controllerWorldLocation is where the controller would be, in-world, with an added offset +static StylusTip getControllerWorldLocation(Side side) { + static const std::array INPUTS{ { UserInputMapper::makeStandardInput(SIDES[0].channel), + UserInputMapper::makeStandardInput(SIDES[1].channel) } }; + const auto sideIndex = index(side); + const auto& input = INPUTS[sideIndex]; + + const auto pose = DependencyManager::get()->getPose(input); + const auto& valid = pose.valid; + StylusTip result; + if (valid) { + result.side = side; + const auto& sideData = SIDES[sideIndex]; + auto myAvatar = DependencyManager::get()->getMyAvatar(); + float sensorScaleFactor = myAvatar->getSensorToWorldScale(); + auto controllerJointIndex = myAvatar->getJointIndex(sideData.cameraJoint); + + const auto avatarOrientation = myAvatar->getOrientation(); + const auto avatarPosition = myAvatar->getPosition(); + result.orientation = avatarOrientation * myAvatar->getAbsoluteJointRotationInObjectFrame(controllerJointIndex); + + result.position = avatarPosition + (avatarOrientation * myAvatar->getAbsoluteJointTranslationInObjectFrame(controllerJointIndex)); + // add to the real position so the grab-point is out in front of the hand, a bit + result.position += result.orientation * (sideData.grabPointSphereOffset * sensorScaleFactor); + // move the stylus forward a bit + result.position += result.orientation * (TIP_OFFSET * sensorScaleFactor); + + auto worldControllerPos = avatarPosition + avatarOrientation * pose.translation; + // compute tip velocity from hand controller motion, it is more accurate than computing it from previous positions. + auto worldControllerLinearVel = avatarOrientation * pose.velocity; + auto worldControllerAngularVel = avatarOrientation * pose.angularVelocity; + result.velocity = worldControllerLinearVel + glm::cross(worldControllerAngularVel, result.position - worldControllerPos); + } + + return result; +} + +StylusTip StylusPick::getMathematicalPick() const { + StylusTip result; + if (USE_FINGER_AS_STYLUS.get()) { + result = getFingerWorldLocation(_side); + } else { + result = getControllerWorldLocation(_side); + } + return result; +} + +PickResultPointer StylusPick::getDefaultResult(const QVariantMap& pickVariant) const { + return std::make_shared(pickVariant); +} + +PickResultPointer StylusPick::getEntityIntersection(const StylusTip& pick) { + std::vector results; + for (const auto& target : getIncludeItems()) { + if (target.isNull()) { + continue; + } + + auto entity = qApp->getEntities()->getTree()->findEntityByEntityItemID(target); + // Don't interact with non-3D or invalid overlays + if (!entity) { + continue; + } + + if (!entity->getVisible() && !getFilter().doesPickInvisible()) { + continue; + } + + const auto entityRotation = entity->getRotation(); + const auto entityPosition = entity->getPosition(); + + glm::vec3 normal = entityRotation * Vectors::UNIT_Z; + float distance = glm::dot(pick.position - entityPosition, normal); + glm::vec3 intersection = pick.position - (normal * distance); + + glm::vec2 pos2D = RayPick::projectOntoEntityXYPlane(target, intersection, false); + if (pos2D == glm::clamp(pos2D, glm::vec2(0), glm::vec2(1))) { + results.push_back(StylusPickResult(IntersectionType::ENTITY, target, distance, intersection, pick, normal)); + } + } + + StylusPickResult nearestTarget(pick.toVariantMap()); + for (const auto& result : results) { + if (result.distance < nearestTarget.distance) { + nearestTarget = result; + } + } + return std::make_shared(nearestTarget); +} + +PickResultPointer StylusPick::getOverlayIntersection(const StylusTip& pick) { + std::vector results; + for (const auto& target : getIncludeItems()) { + if (target.isNull()) { + continue; + } + + auto overlay = qApp->getOverlays().getOverlay(target); + // Don't interact with non-3D or invalid overlays + if (!overlay || !overlay->is3D()) { + continue; + } + + if (!overlay->getVisible() && !getFilter().doesPickInvisible()) { + continue; + } + + auto overlay3D = std::static_pointer_cast(overlay); + const auto overlayRotation = overlay3D->getRotation(); + const auto overlayPosition = overlay3D->getPosition(); + + glm::vec3 normal = overlayRotation * Vectors::UNIT_Z; + float distance = glm::dot(pick.position - overlayPosition, normal); + glm::vec3 intersection = pick.position - (normal * distance); + + glm::vec2 pos2D = RayPick::projectOntoOverlayXYPlane(target, intersection, false); + if (pos2D == glm::clamp(pos2D, glm::vec2(0), glm::vec2(1))) { + results.push_back(StylusPickResult(IntersectionType::OVERLAY, target, distance, intersection, pick, normal)); + } + } + + StylusPickResult nearestTarget(pick.toVariantMap()); + for (const auto& result : results) { + if (result.distance < nearestTarget.distance) { + nearestTarget = result; + } + } + return std::make_shared(nearestTarget); +} + +PickResultPointer StylusPick::getAvatarIntersection(const StylusTip& pick) { + return std::make_shared(pick.toVariantMap()); +} + +PickResultPointer StylusPick::getHUDIntersection(const StylusTip& pick) { + return std::make_shared(pick.toVariantMap()); +} \ No newline at end of file diff --git a/interface/src/raypick/StylusPick.h b/interface/src/raypick/StylusPick.h new file mode 100644 index 0000000000..9b465b9cc8 --- /dev/null +++ b/interface/src/raypick/StylusPick.h @@ -0,0 +1,78 @@ +// +// Created by Bradley Austin Davis on 2017/10/24 +// Copyright 2013-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 +// +#ifndef hifi_StylusPick_h +#define hifi_StylusPick_h + +#include "pointers/Pick.h" +#include "RegisteredMetaTypes.h" + +class StylusPickResult : public PickResult { + using Side = bilateral::Side; + +public: + StylusPickResult() {} + StylusPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {} + StylusPickResult(const IntersectionType type, const QUuid& objectID, float distance, const glm::vec3& intersection, const StylusTip& stylusTip, + const glm::vec3& surfaceNormal = glm::vec3(NAN)) : + PickResult(stylusTip.toVariantMap()), type(type), intersects(type != NONE), objectID(objectID), distance(distance), intersection(intersection), surfaceNormal(surfaceNormal) { + } + + StylusPickResult(const StylusPickResult& stylusPickResult) : PickResult(stylusPickResult.pickVariant) { + type = stylusPickResult.type; + intersects = stylusPickResult.intersects; + objectID = stylusPickResult.objectID; + distance = stylusPickResult.distance; + intersection = stylusPickResult.intersection; + surfaceNormal = stylusPickResult.surfaceNormal; + } + + IntersectionType type { NONE }; + bool intersects { false }; + QUuid objectID; + float distance { FLT_MAX }; + glm::vec3 intersection { NAN }; + glm::vec3 surfaceNormal { NAN }; + + virtual QVariantMap toVariantMap() const override { + QVariantMap toReturn; + toReturn["type"] = type; + toReturn["intersects"] = intersects; + toReturn["objectID"] = objectID; + toReturn["distance"] = distance; + toReturn["intersection"] = vec3toVariant(intersection); + toReturn["surfaceNormal"] = vec3toVariant(surfaceNormal); + toReturn["stylusTip"] = PickResult::toVariantMap(); + return toReturn; + } + + bool doesIntersect() const override { return intersects; } + std::shared_ptr compareAndProcessNewResult(const std::shared_ptr& newRes) override; + bool checkOrFilterAgainstMaxDistance(float maxDistance) override; +}; + +class StylusPick : public Pick { + using Side = bilateral::Side; +public: + StylusPick(const PickFilter& filter, Side side, bool enabled); + + StylusTip getMathematicalPick() const override; + PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override; + PickResultPointer getEntityIntersection(const StylusTip& pick) override; + PickResultPointer getOverlayIntersection(const StylusTip& pick) override; + PickResultPointer getAvatarIntersection(const StylusTip& pick) override; + PickResultPointer getHUDIntersection(const StylusTip& pick) override; + +private: + const Side _side; +}; + +#endif // hifi_StylusPick_h + + + + diff --git a/interface/src/raypick/StylusPointer.cpp b/interface/src/raypick/StylusPointer.cpp index 6da755a797..80e783cfe4 100644 --- a/interface/src/raypick/StylusPointer.cpp +++ b/interface/src/raypick/StylusPointer.cpp @@ -7,621 +7,200 @@ // #include "StylusPointer.h" -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "RayPick.h" #include "Application.h" #include "avatar/AvatarManager.h" #include "avatar/MyAvatar.h" -#include "scripting/HMDScriptingInterface.h" -#include "ui/overlays/Web3DOverlay.h" -#include "ui/overlays/Sphere3DOverlay.h" -#include "avatar/AvatarManager.h" -#include "InterfaceLogging.h" +#include #include "PickScriptingInterface.h" +#include using namespace controller; -using namespace bilateral; -static Setting::Handle USE_FINGER_AS_STYLUS("preferAvatarFingerOverStylus", false); +// TODO: make these configurable per pointer static const float WEB_STYLUS_LENGTH = 0.2f; -static const float WEB_TOUCH_Y_OFFSET = 0.105f; // how far forward (or back with a negative number) to slide stylus in hand -static const vec3 TIP_OFFSET{ 0.0f, WEB_STYLUS_LENGTH - WEB_TOUCH_Y_OFFSET, 0.0f }; -static const float TABLET_MIN_HOVER_DISTANCE = 0.01f; + +static const float TABLET_MIN_HOVER_DISTANCE = -0.1f; static const float TABLET_MAX_HOVER_DISTANCE = 0.1f; -static const float TABLET_MIN_TOUCH_DISTANCE = -0.05f; -static const float TABLET_MAX_TOUCH_DISTANCE = TABLET_MIN_HOVER_DISTANCE; -static const float EDGE_BORDER = 0.075f; +static const float TABLET_MIN_TOUCH_DISTANCE = -0.1f; +static const float TABLET_MAX_TOUCH_DISTANCE = 0.01f; static const float HOVER_HYSTERESIS = 0.01f; -static const float NEAR_HYSTERESIS = 0.05f; -static const float TOUCH_HYSTERESIS = 0.002f; +static const float TOUCH_HYSTERESIS = 0.02f; -// triggered when stylus presses a web overlay/entity -static const float HAPTIC_STYLUS_STRENGTH = 1.0f; -static const float HAPTIC_STYLUS_DURATION = 20.0f; -static const float POINTER_PRESS_TO_MOVE_DELAY = 0.33f; // seconds - -static const float WEB_DISPLAY_STYLUS_DISTANCE = 0.5f; -static const float TOUCH_PRESS_TO_MOVE_DEADSPOT = 0.0481f; -static const float TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED = TOUCH_PRESS_TO_MOVE_DEADSPOT * TOUCH_PRESS_TO_MOVE_DEADSPOT; - -std::array STYLUSES; - -static OverlayID getHomeButtonID() { - return DependencyManager::get()->getCurrentHomeButtonID(); -} - -static OverlayID getTabletScreenID() { - return DependencyManager::get()->getCurrentTabletScreenID(); -} - -struct SideData { - QString avatarJoint; - QString cameraJoint; - controller::StandardPoseChannel channel; - controller::Hand hand; - vec3 grabPointSphereOffset; - - int getJointIndex(bool finger) { - const auto& jointName = finger ? avatarJoint : cameraJoint; - return DependencyManager::get()->getMyAvatar()->getJointIndex(jointName); - } -}; - -static const std::array SIDES{ { { "LeftHandIndex4", - "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", - StandardPoseChannel::LEFT_HAND, - Hand::LEFT, - { -0.04f, 0.13f, 0.039f } }, - { "RightHandIndex4", - "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND", - StandardPoseChannel::RIGHT_HAND, - Hand::RIGHT, - { 0.04f, 0.13f, 0.039f } } } }; - -static StylusTip getFingerWorldLocation(Side side) { - const auto& sideData = SIDES[index(side)]; - auto myAvatar = DependencyManager::get()->getMyAvatar(); - auto fingerJointIndex = myAvatar->getJointIndex(sideData.avatarJoint); - - if (-1 == fingerJointIndex) { - return StylusTip(); - } - - auto fingerPosition = myAvatar->getAbsoluteJointTranslationInObjectFrame(fingerJointIndex); - auto fingerRotation = myAvatar->getAbsoluteJointRotationInObjectFrame(fingerJointIndex); - auto avatarOrientation = myAvatar->getOrientation(); - auto avatarPosition = myAvatar->getPosition(); - StylusTip result; - result.side = side; - result.orientation = avatarOrientation * fingerRotation; - result.position = avatarPosition + (avatarOrientation * fingerPosition); - return result; -} - -// controllerWorldLocation is where the controller would be, in-world, with an added offset -static StylusTip getControllerWorldLocation(Side side, float sensorToWorldScale) { - static const std::array INPUTS{ { UserInputMapper::makeStandardInput(SIDES[0].channel), - UserInputMapper::makeStandardInput(SIDES[1].channel) } }; - const auto sideIndex = index(side); - const auto& input = INPUTS[sideIndex]; - - const auto pose = DependencyManager::get()->getPose(input); - const auto& valid = pose.valid; - StylusTip result; - if (valid) { - result.side = side; - const auto& sideData = SIDES[sideIndex]; - auto myAvatar = DependencyManager::get()->getMyAvatar(); - auto controllerJointIndex = myAvatar->getJointIndex(sideData.cameraJoint); - - const auto avatarOrientation = myAvatar->getOrientation(); - const auto avatarPosition = myAvatar->getPosition(); - result.orientation = avatarOrientation * myAvatar->getAbsoluteJointRotationInObjectFrame(controllerJointIndex); - result.position = - avatarPosition + (avatarOrientation * myAvatar->getAbsoluteJointTranslationInObjectFrame(controllerJointIndex)); - // add to the real position so the grab-point is out in front of the hand, a bit - result.position += result.orientation * (sideData.grabPointSphereOffset * sensorToWorldScale); - auto worldControllerPos = avatarPosition + avatarOrientation * pose.translation; - // compute tip velocity from hand controller motion, it is more accurate than computing it from previous positions. - auto worldControllerLinearVel = avatarOrientation * pose.velocity; - auto worldControllerAngularVel = avatarOrientation * pose.angularVelocity; - result.velocity = - worldControllerLinearVel + glm::cross(worldControllerAngularVel, result.position - worldControllerPos); - } - - return result; -} - -bool StylusPickResult::isNormalized() const { - return valid && (normalizedPosition == glm::clamp(normalizedPosition, vec3(0), vec3(1))); -} - -bool StylusPickResult::isNearNormal(float min, float max, float hystersis) const { - return valid && (distance == glm::clamp(distance, min - hystersis, max + hystersis)); -} - -bool StylusPickResult::isNear2D(float border, float hystersis) const { - return valid && position2D == glm::clamp(position2D, vec2(0) - border - hystersis, vec2(dimensions) + border + hystersis); -} - -bool StylusPickResult::isNear(float min, float max, float border, float hystersis) const { - // check to see if the projected stylusTip is within within the 2d border - return isNearNormal(min, max, hystersis) && isNear2D(border, hystersis); -} - -StylusPickResult::operator bool() const { - return valid; -} - -bool StylusPickResult::hasKeyboardFocus() const { - if (!overlayID.isNull()) { - return qApp->getOverlays().getKeyboardFocusOverlay() == overlayID; - } -#if 0 - if (!entityID.isNull()) { - return qApp->getKeyboardFocusEntity() == entityID; - } -#endif - return false; -} - -void StylusPickResult::setKeyboardFocus() const { - if (!overlayID.isNull()) { - qApp->getOverlays().setKeyboardFocusOverlay(overlayID); - qApp->setKeyboardFocusEntity(EntityItemID()); -#if 0 - } else if (!entityID.isNull()) { - qApp->getOverlays().setKeyboardFocusOverlay(OverlayID()); - qApp->setKeyboardFocusEntity(entityID); -#endif - } -} - -void StylusPickResult::sendHoverOverEvent() const { - if (!overlayID.isNull()) { - qApp->getOverlays().hoverOverOverlay(overlayID, PointerEvent{ PointerEvent::Move, deviceId(), position2D, position, - normal, -normal }); - } - // FIXME support entity -} - -void StylusPickResult::sendHoverEnterEvent() const { - if (!overlayID.isNull()) { - qApp->getOverlays().hoverEnterOverlay(overlayID, PointerEvent{ PointerEvent::Move, deviceId(), position2D, position, - normal, -normal }); - } - // FIXME support entity -} - -void StylusPickResult::sendTouchStartEvent() const { - if (!overlayID.isNull()) { - qApp->getOverlays().sendMousePressOnOverlay(overlayID, PointerEvent{ PointerEvent::Press, deviceId(), position2D, position, - normal, -normal, PointerEvent::PrimaryButton, - PointerEvent::PrimaryButton }); - } - // FIXME support entity -} - -void StylusPickResult::sendTouchEndEvent() const { - if (!overlayID.isNull()) { - qApp->getOverlays().sendMouseReleaseOnOverlay(overlayID, - PointerEvent{ PointerEvent::Release, deviceId(), position2D, position, normal, - -normal, PointerEvent::PrimaryButton }); - } - // FIXME support entity -} - -void StylusPickResult::sendTouchMoveEvent() const { - if (!overlayID.isNull()) { - qApp->getOverlays().sendMouseMoveOnOverlay(overlayID, PointerEvent{ PointerEvent::Move, deviceId(), position2D, position, - normal, -normal, PointerEvent::PrimaryButton, - PointerEvent::PrimaryButton }); - } - // FIXME support entity -} - -bool StylusPickResult::doesIntersect() const { - return true; -} - -// for example: if we want the closest result, compare based on distance -// if we want all results, combine them -// must return a new pointer -std::shared_ptr StylusPickResult::compareAndProcessNewResult(const std::shared_ptr& newRes) { - auto newStylusResult = std::static_pointer_cast(newRes); - if (newStylusResult && newStylusResult->distance < distance) { - return std::make_shared(*newStylusResult); - } else { - return std::make_shared(*this); - } -} - -// returns true if this result contains any valid results with distance < maxDistance -// can also filter out results with distance >= maxDistance -bool StylusPickResult::checkOrFilterAgainstMaxDistance(float maxDistance) { - return distance < maxDistance; -} - -uint32_t StylusPickResult::deviceId() const { - // 0 is reserved for hardware mouse - return index(tip.side) + 1; -} - -StylusPick::StylusPick(Side side) - : Pick(PickFilter(PickScriptingInterface::PICK_OVERLAYS()), FLT_MAX, true) - , _side(side) { -} - -StylusTip StylusPick::getMathematicalPick() const { - StylusTip result; - if (_useFingerInsteadOfStylus) { - result = getFingerWorldLocation(_side); - } else { - auto myAvatar = DependencyManager::get()->getMyAvatar(); - float sensorScaleFactor = myAvatar->getSensorToWorldScale(); - result = getControllerWorldLocation(_side, sensorScaleFactor); - result.position += result.orientation * (TIP_OFFSET * sensorScaleFactor); - } - return result; -} - -PickResultPointer StylusPick::getDefaultResult(const QVariantMap& pickVariant) const { - return std::make_shared(); -} - -PickResultPointer StylusPick::getEntityIntersection(const StylusTip& pick) { - return PickResultPointer(); -} - -PickResultPointer StylusPick::getOverlayIntersection(const StylusTip& pick) { - if (!getFilter().doesPickOverlays()) { - return PickResultPointer(); - } - - std::vector results; - for (const auto& target : getIncludeItems()) { - if (target.isNull()) { - continue; - } - - auto overlay = qApp->getOverlays().getOverlay(target); - // Don't interact with non-3D or invalid overlays - if (!overlay || !overlay->is3D()) { - continue; - } - - if (!overlay->getVisible() && !getFilter().doesPickInvisible()) { - continue; - } - - auto overlayType = overlay->getType(); - auto overlay3D = std::static_pointer_cast(overlay); - const auto overlayRotation = overlay3D->getRotation(); - const auto overlayPosition = overlay3D->getPosition(); - - StylusPickResult result; - result.tip = pick; - result.overlayID = target; - result.normal = overlayRotation * Vectors::UNIT_Z; - result.distance = glm::dot(pick.position - overlayPosition, result.normal); - result.position = pick.position - (result.normal * result.distance); - if (overlayType == Web3DOverlay::TYPE) { - result.dimensions = vec3(std::static_pointer_cast(overlay3D)->getSize(), 0.01f); - } else if (overlayType == Sphere3DOverlay::TYPE) { - result.dimensions = std::static_pointer_cast(overlay3D)->getDimensions(); - } else { - result.dimensions = vec3(0.01f); - } - auto tipRelativePosition = result.position - overlayPosition; - auto localPos = glm::inverse(overlayRotation) * tipRelativePosition; - auto normalizedPosition = localPos / result.dimensions; - result.normalizedPosition = normalizedPosition + 0.5f; - result.position2D = { result.normalizedPosition.x * result.dimensions.x, - (1.0f - result.normalizedPosition.y) * result.dimensions.y }; - result.valid = true; - results.push_back(result); - } - - StylusPickResult nearestTarget; - for (const auto& result : results) { - if (result && result.isNormalized() && result.distance < nearestTarget.distance) { - nearestTarget = result; - } - } - return std::make_shared(nearestTarget); -} - -PickResultPointer StylusPick::getAvatarIntersection(const StylusTip& pick) { - return PickResultPointer(); -} - -PickResultPointer StylusPick::getHUDIntersection(const StylusTip& pick) { - return PickResultPointer(); -} - -StylusPointer::StylusPointer(Side side) - : Pointer(DependencyManager::get()->addPick(PickQuery::Stylus, std::make_shared(side)), - false, - true) - , _side(side) - , _sideData(SIDES[index(side)]) { - setIncludeItems({ { getHomeButtonID(), getTabletScreenID() } }); - STYLUSES[index(_side)] = this; +StylusPointer::StylusPointer(const QVariant& props, const OverlayID& stylusOverlay, bool hover, bool enabled) : + Pointer(DependencyManager::get()->createStylusPick(props), enabled, hover), + _stylusOverlay(stylusOverlay) +{ } StylusPointer::~StylusPointer() { if (!_stylusOverlay.isNull()) { qApp->getOverlays().deleteOverlay(_stylusOverlay); } - STYLUSES[index(_side)] = nullptr; } -StylusPointer* StylusPointer::getOtherStylus() { - return STYLUSES[((index(_side) + 1) % 2)]; -} - -void StylusPointer::enable() { - Parent::enable(); - withWriteLock([&] { _renderingEnabled = true; }); -} - -void StylusPointer::disable() { - Parent::disable(); - withWriteLock([&] { _renderingEnabled = false; }); -} - -void StylusPointer::updateStylusTarget() { - const float minNearDistance = TABLET_MIN_TOUCH_DISTANCE * _sensorScaleFactor; - const float maxNearDistance = WEB_DISPLAY_STYLUS_DISTANCE * _sensorScaleFactor; - const float edgeBorder = EDGE_BORDER * _sensorScaleFactor; - - auto pickResult = DependencyManager::get()->getPrevPickResultTyped(_pickUID); - - if (pickResult) { - _state.target = *pickResult; - float hystersis = 0.0f; - // If we're already near the target, add hystersis to ensure we don't rapidly toggle between near and not near - // but only for the current near target - if (_previousState.nearTarget && pickResult->overlayID == _previousState.target.overlayID) { - hystersis = _nearHysteresis; - } - _state.nearTarget = pickResult->isNear(minNearDistance, maxNearDistance, edgeBorder, hystersis); - } - - // Not near anything, short circuit the rest - if (!_state.nearTarget) { - relinquishTouchFocus(); - hide(); - return; - } - - show(); - - auto minTouchDistance = TABLET_MIN_TOUCH_DISTANCE * _sensorScaleFactor; - auto maxTouchDistance = TABLET_MAX_TOUCH_DISTANCE * _sensorScaleFactor; - auto maxHoverDistance = TABLET_MAX_HOVER_DISTANCE * _sensorScaleFactor; - - float hystersis = 0.0f; - if (_previousState.nearTarget && _previousState.target.overlayID == _previousState.target.overlayID) { - hystersis = _nearHysteresis; - } - - // If we're in hover distance (calculated as the normal distance from the XY plane of the overlay) - if ((getOtherStylus() && getOtherStylus()->_state.touchingTarget) || !_state.target.isNearNormal(minTouchDistance, maxHoverDistance, hystersis)) { - relinquishTouchFocus(); - return; - } - - requestTouchFocus(_state.target); - - if (!_state.target.hasKeyboardFocus()) { - _state.target.setKeyboardFocus(); - } - - if (hasTouchFocus(_state.target) && !_previousState.touchingTarget) { - _state.target.sendHoverOverEvent(); - } - - hystersis = 0.0f; - if (_previousState.touchingTarget && _previousState.target.overlayID == _state.target.overlayID) { - hystersis = _touchHysteresis; - } - - // If we're in touch distance - if (_state.target.isNearNormal(minTouchDistance, maxTouchDistance, _touchHysteresis) && _state.target.isNormalized()) { - _state.touchingTarget = true; - } -} - -void StylusPointer::update(unsigned int pointerID, float deltaTime) { - // This only needs to be a read lock because update won't change any of the properties that can be modified from scripts - withReadLock([&] { - auto myAvatar = DependencyManager::get()->getMyAvatar(); - - // Store and reset the state - { - _previousState = _state; - _state = State(); - } - -#if 0 - // Update finger as stylus setting - { - useFingerInsteadOfStylus = (USE_FINGER_AS_STYLUS.get() && myAvatar->getJointIndex(sideData.avatarJoint) != -1); - } -#endif - - // Update scale factor - { - _sensorScaleFactor = myAvatar->getSensorToWorldScale(); - _hoverHysteresis = HOVER_HYSTERESIS * _sensorScaleFactor; - _nearHysteresis = NEAR_HYSTERESIS * _sensorScaleFactor; - _touchHysteresis = TOUCH_HYSTERESIS * _sensorScaleFactor; - } - - // Identify the current near or touching target - updateStylusTarget(); - - // If we stopped touching, or if the target overlay ID changed, send a touching exit to the previous touch target - if (_previousState.touchingTarget && - (!_state.touchingTarget || _state.target.overlayID != _previousState.target.overlayID)) { - stylusTouchingExit(); - } - - // Handle new or continuing touch - if (_state.touchingTarget) { - // If we were previously not touching, or we were touching a different overlay, add a touch enter - if (!_previousState.touchingTarget || _previousState.target.overlayID != _state.target.overlayID) { - stylusTouchingEnter(); - } else { - _touchingEnterTimer += deltaTime; - } - - stylusTouching(); - } - }); - - setIncludeItems({ { getHomeButtonID(), getTabletScreenID() } }); -} - -void StylusPointer::show() { - if (!_stylusOverlay.isNull()) { - return; - } - - auto myAvatar = DependencyManager::get()->getMyAvatar(); - // FIXME perhaps instantiate a stylus and use show / hide instead of create / destroy - // however, the current design doesn't really allow for this because it assumes that - // hide / show are idempotent and low cost, but constantly querying the visibility +OverlayID StylusPointer::buildStylusOverlay(const QVariantMap& properties) { QVariantMap overlayProperties; + // TODO: make these configurable per pointer overlayProperties["name"] = "stylus"; overlayProperties["url"] = PathUtils::resourcesPath() + "/meshes/tablet-stylus-fat.fbx"; overlayProperties["loadPriority"] = 10.0f; - overlayProperties["dimensions"] = vec3toVariant(_sensorScaleFactor * vec3(0.01f, 0.01f, WEB_STYLUS_LENGTH)); overlayProperties["solid"] = true; - overlayProperties["visible"] = true; + overlayProperties["visible"] = false; overlayProperties["ignoreRayIntersection"] = true; overlayProperties["drawInFront"] = false; - overlayProperties["parentID"] = AVATAR_SELF_ID; - overlayProperties["parentJointIndex"] = myAvatar->getJointIndex(_sideData.cameraJoint); - static const glm::quat X_ROT_NEG_90{ 0.70710678f, -0.70710678f, 0.0f, 0.0f }; - auto modelOrientation = _state.target.tip.orientation * X_ROT_NEG_90; - auto modelPositionOffset = modelOrientation * (vec3(0.0f, 0.0f, -WEB_STYLUS_LENGTH / 2.0f) * _sensorScaleFactor); - overlayProperties["position"] = vec3toVariant(_state.target.tip.position + modelPositionOffset); - overlayProperties["rotation"] = quatToVariant(modelOrientation); - _stylusOverlay = qApp->getOverlays().addOverlay("model", overlayProperties); + return qApp->getOverlays().addOverlay("model", overlayProperties); +} + +void StylusPointer::updateVisuals(const PickResultPointer& pickResult) { + auto stylusPickResult = std::static_pointer_cast(pickResult); + + if (_enabled && _renderState != DISABLED && stylusPickResult) { + StylusTip tip(stylusPickResult->pickVariant); + if (tip.side != bilateral::Side::Invalid) { + show(tip); + return; + } + } + hide(); +} + +void StylusPointer::show(const StylusTip& tip) { + if (!_stylusOverlay.isNull()) { + QVariantMap props; + static const glm::quat X_ROT_NEG_90{ 0.70710678f, -0.70710678f, 0.0f, 0.0f }; + auto modelOrientation = tip.orientation * X_ROT_NEG_90; + auto sensorToWorldScale = DependencyManager::get()->getMyAvatar()->getSensorToWorldScale(); + auto modelPositionOffset = modelOrientation * (vec3(0.0f, 0.0f, -WEB_STYLUS_LENGTH / 2.0f) * sensorToWorldScale); + props["position"] = vec3toVariant(tip.position + modelPositionOffset); + props["rotation"] = quatToVariant(modelOrientation); + props["dimensions"] = vec3toVariant(sensorToWorldScale * vec3(0.01f, 0.01f, WEB_STYLUS_LENGTH)); + props["visible"] = true; + qApp->getOverlays().editOverlay(_stylusOverlay, props); + } } void StylusPointer::hide() { - if (_stylusOverlay.isNull()) { - return; + if (!_stylusOverlay.isNull()) { + QVariantMap props; + props.insert("visible", false); + qApp->getOverlays().editOverlay(_stylusOverlay, props); + } +} + +bool StylusPointer::shouldHover(const PickResultPointer& pickResult) { + auto stylusPickResult = std::static_pointer_cast(pickResult); + if (_renderState == EVENTS_ON && stylusPickResult && stylusPickResult->intersects) { + auto sensorScaleFactor = DependencyManager::get()->getMyAvatar()->getSensorToWorldScale(); + float hysteresis = _state.hovering ? HOVER_HYSTERESIS * sensorScaleFactor : 0.0f; + bool hovering = isWithinBounds(stylusPickResult->distance, TABLET_MIN_HOVER_DISTANCE * sensorScaleFactor, + TABLET_MAX_HOVER_DISTANCE * sensorScaleFactor, hysteresis); + + _state.hovering = hovering; + return hovering; } - qApp->getOverlays().deleteOverlay(_stylusOverlay); - _stylusOverlay = OverlayID(); + _state.hovering = false; + return false; } -#if 0 - void pointFinger(bool value) { - static const QString HIFI_POINT_INDEX_MESSAGE_CHANNEL = "Hifi-Point-Index"; - static const std::array KEYS{ { "pointLeftIndex", "pointLeftIndex" } }; - if (fingerPointing != value) { - QString message = QJsonDocument(QJsonObject{ { KEYS[index(side)], value } }).toJson(); - DependencyManager::get()->sendMessage(HIFI_POINT_INDEX_MESSAGE_CHANNEL, message); - fingerPointing = value; + +bool StylusPointer::shouldTrigger(const PickResultPointer& pickResult) { + auto stylusPickResult = std::static_pointer_cast(pickResult); + if (_renderState == EVENTS_ON && stylusPickResult) { + auto sensorScaleFactor = DependencyManager::get()->getMyAvatar()->getSensorToWorldScale(); + float distance = stylusPickResult->distance; + + // If we're triggering on an object, recalculate the distance instead of using the pickResult + if (!_state.triggeredObject.objectID.isNull() && stylusPickResult->objectID != _state.triggeredObject.objectID) { + glm::vec3 intersection; + glm::vec3 origin = vec3FromVariant(stylusPickResult->pickVariant["position"]); + glm::vec3 direction = -_state.surfaceNormal; + if (_state.triggeredObject.type == ENTITY) { + intersection = RayPick::intersectRayWithEntityXYPlane(_state.triggeredObject.objectID, origin, direction); + } else if (_state.triggeredObject.type == OVERLAY) { + intersection = RayPick::intersectRayWithOverlayXYPlane(_state.triggeredObject.objectID, origin, direction); } + distance = glm::dot(intersection - origin, direction); + } + + float hysteresis = _state.triggering ? TOUCH_HYSTERESIS * sensorScaleFactor : 0.0f; + if (isWithinBounds(distance, TABLET_MIN_TOUCH_DISTANCE * sensorScaleFactor, + TABLET_MAX_TOUCH_DISTANCE * sensorScaleFactor, hysteresis)) { + if (_state.triggeredObject.objectID.isNull()) { + _state.triggeredObject = PickedObject(stylusPickResult->objectID, stylusPickResult->type); + _state.surfaceNormal = stylusPickResult->surfaceNormal; + _state.triggering = true; + } + return true; } -#endif -void StylusPointer::requestTouchFocus(const StylusPickResult& pickResult) { - if (!pickResult) { - return; - } - // send hover events to target if we can. - // record the entity or overlay we are hovering over. - if (!pickResult.overlayID.isNull() && pickResult.overlayID != _hoverOverlay && - getOtherStylus() && pickResult.overlayID != getOtherStylus()->_hoverOverlay) { - _hoverOverlay = pickResult.overlayID; - pickResult.sendHoverEnterEvent(); } + + _state.triggeredObject = PickedObject(); + _state.surfaceNormal = glm::vec3(NAN); + _state.triggering = false; + return false; } -bool StylusPointer::hasTouchFocus(const StylusPickResult& pickResult) { - return (!pickResult.overlayID.isNull() && pickResult.overlayID == _hoverOverlay); +Pointer::PickedObject StylusPointer::getHoveredObject(const PickResultPointer& pickResult) { + auto stylusPickResult = std::static_pointer_cast(pickResult); + if (!stylusPickResult) { + return PickedObject(); + } + return PickedObject(stylusPickResult->objectID, stylusPickResult->type); } -void StylusPointer::relinquishTouchFocus() { - // send hover leave event. - if (!_hoverOverlay.isNull()) { - PointerEvent pointerEvent{ PointerEvent::Move, (uint32_t)(index(_side) + 1) }; - auto& overlays = qApp->getOverlays(); - overlays.sendMouseMoveOnOverlay(_hoverOverlay, pointerEvent); - overlays.sendHoverOverOverlay(_hoverOverlay, pointerEvent); - overlays.sendHoverLeaveOverlay(_hoverOverlay, pointerEvent); - _hoverOverlay = OverlayID(); - } -}; - -void StylusPointer::stealTouchFocus() { - // send hover events to target - if (getOtherStylus() && _state.target.overlayID == getOtherStylus()->_hoverOverlay) { - getOtherStylus()->relinquishTouchFocus(); - } - requestTouchFocus(_state.target); +Pointer::Buttons StylusPointer::getPressedButtons() { + // TODO: custom buttons for styluses + Pointer::Buttons toReturn({ "Primary", "Focus" }); + return toReturn; } -void StylusPointer::stylusTouchingEnter() { - stealTouchFocus(); - _state.target.sendTouchStartEvent(); - DependencyManager::get()->triggerHapticPulse(HAPTIC_STYLUS_STRENGTH, HAPTIC_STYLUS_DURATION, - _sideData.hand); - _touchingEnterTimer = 0; - _touchingEnterPosition = _state.target.position2D; - _deadspotExpired = false; +PointerEvent StylusPointer::buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const { + QUuid pickedID; + glm::vec3 intersection, surfaceNormal, direction, origin; + auto stylusPickResult = std::static_pointer_cast(pickResult); + if (stylusPickResult) { + intersection = stylusPickResult->intersection; + surfaceNormal = _state.surfaceNormal; + const QVariantMap& stylusTip = stylusPickResult->pickVariant; + origin = vec3FromVariant(stylusTip["position"]); + direction = -_state.surfaceNormal; + pickedID = stylusPickResult->objectID; + } + + if (pickedID != target.objectID) { + if (target.type == ENTITY) { + intersection = RayPick::intersectRayWithEntityXYPlane(target.objectID, origin, direction); + } else if (target.type == OVERLAY) { + intersection = RayPick::intersectRayWithOverlayXYPlane(target.objectID, origin, direction); + } + } + glm::vec2 pos2D; + if (target.type == ENTITY) { + pos2D = RayPick::projectOntoEntityXYPlane(target.objectID, origin); + } else if (target.type == OVERLAY) { + pos2D = RayPick::projectOntoOverlayXYPlane(target.objectID, origin); + } else if (target.type == HUD) { + pos2D = DependencyManager::get()->calculatePos2DFromHUD(origin); + } + return PointerEvent(pos2D, intersection, surfaceNormal, direction); } -void StylusPointer::stylusTouchingExit() { - if (!_previousState.target) { - return; - } - // special case to handle home button. - if (_previousState.target.overlayID == getHomeButtonID()) { - DependencyManager::get()->sendLocalMessage("home", _previousState.target.overlayID.toString()); - } - - // send touch end event - _state.target.sendTouchEndEvent(); +bool StylusPointer::isWithinBounds(float distance, float min, float max, float hysteresis) { + return (distance == glm::clamp(distance, min - hysteresis, max + hysteresis)); } -void StylusPointer::stylusTouching() { - qDebug() << "QQQ " << __FUNCTION__; - if (_state.target.overlayID.isNull()) { - return; +void StylusPointer::setRenderState(const std::string& state) { + if (state == "events on") { + _renderState = EVENTS_ON; + } else if (state == "events off") { + _renderState = EVENTS_OFF; + } else if (state == "disabled") { + _renderState = DISABLED; } - - if (!_deadspotExpired) { - _deadspotExpired = - (_touchingEnterTimer > POINTER_PRESS_TO_MOVE_DELAY) || - glm::distance2(_state.target.position2D, _touchingEnterPosition) > TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED; - } - - // Only send moves if the target moves more than the deadspot position or if we've timed out the deadspot - if (_deadspotExpired) { - _state.target.sendTouchMoveEvent(); - } -} +} \ No newline at end of file diff --git a/interface/src/raypick/StylusPointer.h b/interface/src/raypick/StylusPointer.h index 5308315187..cc7f2814db 100644 --- a/interface/src/raypick/StylusPointer.h +++ b/interface/src/raypick/StylusPointer.h @@ -8,136 +8,65 @@ #ifndef hifi_StylusPointer_h #define hifi_StylusPointer_h -#include -#include - #include -#include #include #include -#include #include "ui/overlays/Overlay.h" - -class StylusPick : public Pick { - using Side = bilateral::Side; -public: - StylusPick(Side side); - - StylusTip getMathematicalPick() const override; - PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override; - PickResultPointer getEntityIntersection(const StylusTip& pick) override; - PickResultPointer getOverlayIntersection(const StylusTip& pick) override; - PickResultPointer getAvatarIntersection(const StylusTip& pick) override; - PickResultPointer getHUDIntersection(const StylusTip& pick) override; - -private: - const Side _side; - const bool _useFingerInsteadOfStylus{ false }; -}; - -struct SideData; - -struct StylusPickResult : public PickResult { - using Side = bilateral::Side; - // FIXME make into a single ID - OverlayID overlayID; - // FIXME restore entity functionality -#if 0 - EntityItemID entityID; -#endif - StylusTip tip; - float distance{ FLT_MAX }; - vec3 position; - vec2 position2D; - vec3 normal; - vec3 normalizedPosition; - vec3 dimensions; - bool valid{ false }; - - virtual bool doesIntersect() const override; - virtual std::shared_ptr compareAndProcessNewResult(const std::shared_ptr& newRes) override; - virtual bool checkOrFilterAgainstMaxDistance(float maxDistance) override; - - bool isNormalized() const; - bool isNearNormal(float min, float max, float hystersis) const; - bool isNear2D(float border, float hystersis) const; - bool isNear(float min, float max, float border, float hystersis) const; - operator bool() const; - bool hasKeyboardFocus() const; - void setKeyboardFocus() const; - void sendHoverOverEvent() const; - void sendHoverEnterEvent() const; - void sendTouchStartEvent() const; - void sendTouchEndEvent() const; - void sendTouchMoveEvent() const; - -private: - uint32_t deviceId() const; -}; - +#include "StylusPick.h" class StylusPointer : public Pointer { using Parent = Pointer; - using Side = bilateral::Side; using Ptr = std::shared_ptr; public: - StylusPointer(Side side); + StylusPointer(const QVariant& props, const OverlayID& stylusOverlay, bool hover, bool enabled); ~StylusPointer(); - void enable() override; - void disable() override; - void update(unsigned int pointerID, float deltaTime) override; + void updateVisuals(const PickResultPointer& pickResult) override; + + // Styluses have three render states: + // default: "events on" -> render and hover/trigger + // "events off" -> render, don't hover/trigger + // "disabled" -> don't render, don't hover/trigger + void setRenderState(const std::string& state) override; + void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) override {} + + static OverlayID buildStylusOverlay(const QVariantMap& properties); + +protected: + PickedObject getHoveredObject(const PickResultPointer& pickResult) override; + Buttons getPressedButtons() override; + bool shouldHover(const PickResultPointer& pickResult) override; + bool shouldTrigger(const PickResultPointer& pickResult) override; + + PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const override; private: - - virtual void setRenderState(const std::string& state) override {} - virtual void editRenderState(const std::string& state, const QVariant& startProps, const QVariant& pathProps, const QVariant& endProps) override {} - virtual PickedObject getHoveredObject(const PickResultPointer& pickResult) override { return PickedObject(); } - virtual Buttons getPressedButtons() override { return {}; } - bool shouldHover() override { return true; } - bool shouldTrigger() override { return true; } - virtual PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const override { return PointerEvent(); } - - - StylusPointer* getOtherStylus(); - - void updateStylusTarget(); - void requestTouchFocus(const StylusPickResult& pickResult); - bool hasTouchFocus(const StylusPickResult& pickResult); - void relinquishTouchFocus(); - void stealTouchFocus(); - void stylusTouchingEnter(); - void stylusTouchingExit(); - void stylusTouching(); - void show(); + void show(const StylusTip& tip); void hide(); - struct State { - StylusPickResult target; - bool nearTarget{ false }; - bool touchingTarget{ false }; + struct TriggerState { + PickedObject triggeredObject; + glm::vec3 surfaceNormal { NAN }; + bool hovering { false }; + bool triggering { false }; }; - State _state; - State _previousState; + TriggerState _state; - float _nearHysteresis{ 0.0f }; - float _touchHysteresis{ 0.0f }; - float _hoverHysteresis{ 0.0f }; + enum RenderState { + EVENTS_ON = 0, + EVENTS_OFF, + DISABLED + }; - float _sensorScaleFactor{ 1.0f }; - float _touchingEnterTimer{ 0 }; - vec2 _touchingEnterPosition; - bool _deadspotExpired{ false }; + RenderState _renderState { EVENTS_ON }; - bool _renderingEnabled; - OverlayID _stylusOverlay; - OverlayID _hoverOverlay; - const Side _side; - const SideData& _sideData; + const OverlayID _stylusOverlay; + + static bool isWithinBounds(float distance, float min, float max, float hysteresis); }; #endif // hifi_StylusPointer_h diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index 767721ba7d..e17fb8ec65 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -78,7 +78,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const PickResultPoin Buttons sameButtons; const std::string PRIMARY_BUTTON = "Primary"; bool primaryPressed = false; - if (_enabled && shouldTrigger()) { + if (_enabled && shouldTrigger(pickResult)) { buttons = getPressedButtons(); primaryPressed = buttons.find(PRIMARY_BUTTON) != buttons.end(); for (const std::string& button : buttons) { @@ -92,7 +92,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const PickResultPoin } // Hover events - bool doHover = shouldHover(); + bool doHover = shouldHover(pickResult); Pointer::PickedObject hoveredObject = getHoveredObject(pickResult); PointerEvent hoveredEvent = buildPointerEvent(hoveredObject, pickResult); hoveredEvent.setType(PointerEvent::Move); diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index 9eeeb5ea7e..0415f00d1e 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -62,8 +62,8 @@ public: virtual void setLength(float length) {} virtual void setLockEndUUID(const QUuid& objectID, bool isOverlay) {} - virtual void update(unsigned int pointerID, float deltaTime); - virtual void updateVisuals(const PickResultPointer& pickResult) {} + void update(unsigned int pointerID, float deltaTime); + virtual void updateVisuals(const PickResultPointer& pickResult) = 0; void generatePointerEvents(unsigned int pointerID, const PickResultPointer& pickResult); struct PickedObject { @@ -87,8 +87,8 @@ protected: virtual PickedObject getHoveredObject(const PickResultPointer& pickResult) = 0; virtual Buttons getPressedButtons() = 0; - virtual bool shouldHover() = 0; - virtual bool shouldTrigger() = 0; + virtual bool shouldHover(const PickResultPointer& pickResult) { return true; } + virtual bool shouldTrigger(const PickResultPointer& pickResult) { return true; } private: PickedObject _prevHoveredObject; diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index c4ac7aba14..8bb51c88f6 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -154,18 +154,30 @@ public: } }; -struct StylusTip : public MathPick { - bilateral::Side side{ bilateral::Side::Invalid }; +class StylusTip : public MathPick { +public: + StylusTip() : position(NAN), velocity(NAN) {} + StylusTip(const QVariantMap& pickVariant) : side(bilateral::Side(pickVariant["side"].toInt())), position(vec3FromVariant(pickVariant["position"])), + orientation(quatFromVariant(pickVariant["orientation"])), velocity(vec3FromVariant(pickVariant["velocity"])) {} + + bilateral::Side side { bilateral::Side::Invalid }; glm::vec3 position; glm::quat orientation; glm::vec3 velocity; - virtual operator bool() const override { return side != bilateral::Side::Invalid; } + + operator bool() const override { return side != bilateral::Side::Invalid; } + + bool operator==(const StylusTip& other) const { + return (side == other.side && position == other.position && orientation == other.orientation && velocity == other.velocity); + } + QVariantMap toVariantMap() const override { - QVariantMap pickRay; - pickRay["position"] = vec3toVariant(position); - pickRay["orientation"] = quatToVariant(orientation); - pickRay["velocity"] = vec3toVariant(velocity); - return pickRay; + QVariantMap stylusTip; + stylusTip["side"] = (int)side; + stylusTip["position"] = vec3toVariant(position); + stylusTip["orientation"] = quatToVariant(orientation); + stylusTip["velocity"] = vec3toVariant(velocity); + return stylusTip; } }; diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index 7941ec8d4c..c445895d6c 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -128,16 +128,16 @@ Script.include("/~/system/libraries/utils.js"); LaserPointers.enableLaserPointer(this.laserPointer); LaserPointers.setRenderState(this.laserPointer, this.mode); - if (HMD.tabletID !== this.tabletID || HMD.tabletButtonID !== this.tabletButtonID || HMD.tabletScreenID !== this.tabletScreenID) { + if (HMD.tabletID !== this.tabletID || HMD.homeButtonID !== this.homeButtonID || HMD.tabletScreenID !== this.tabletScreenID) { this.tabletID = HMD.tabletID; - this.tabletButtonID = HMD.tabletButtonID; + this.homeButtonID = HMD.homeButtonID; this.tabletScreenID = HMD.tabletScreenID; - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.tabletButtonID, HMD.tabletScreenID]); + LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.homeButtonID, HMD.tabletScreenID]); } }; this.pointingAtTablet = function(objectID) { - if (objectID === HMD.tabletScreenID || objectID === HMD.tabletButtonID) { + if (objectID === HMD.tabletScreenID || objectID === HMD.homeButtonID) { return true; } return false; @@ -240,7 +240,7 @@ Script.include("/~/system/libraries/utils.js"); defaultRenderStates: defaultRenderStates }); - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.tabletButtonID, HMD.tabletScreenID]); + LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.homeButtonID, HMD.tabletScreenID]); } var leftHandInEditMode = new InEditMode(LEFT_HAND); From 2c542b73a06bb011b95e4b1bd76e0fa8d3f1fd49 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 10 Nov 2017 10:22:35 +1300 Subject: [PATCH 090/187] Fix particles emitter rendering not updating when edit textures URL --- libraries/entities/src/ParticleEffectEntityItem.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index b216144ded..c2e29dd44f 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -97,7 +97,8 @@ bool operator==(const Properties& a, const Properties& b) { (a.maxParticles == b.maxParticles) && (a.emission == b.emission) && (a.polar == b.polar) && - (a.azimuth == b.azimuth); + (a.azimuth == b.azimuth) && + (a.textures == b.textures); } bool operator!=(const Properties& a, const Properties& b) { From c53c356842090db17e55cb39595f3e2394e14afa Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 10 Nov 2017 10:23:35 +1300 Subject: [PATCH 091/187] Display "no preview available" for ATP images in particles UI --- scripts/system/particle_explorer/hifi-entity-ui.js | 11 ++++++++++- scripts/system/particle_explorer/particle-style.css | 6 +++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index a1d02e287d..abf9e3cce6 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -482,14 +482,23 @@ HifiEntityUI.prototype = { textureImage.className = "texture-image no-texture"; var image = document.createElement("img"); var imageLoad = _.debounce(function (url) { - if (url.length > 0) { + if (url.slice(0, 5).toLowerCase() === "atp:/") { + image.src = ""; + image.style.display = "none"; + textureImage.classList.remove("with-texture"); textureImage.classList.remove("no-texture"); + textureImage.classList.add("no-preview"); + } else if (url.length > 0) { + textureImage.classList.remove("no-texture"); + textureImage.classList.remove("no-preview"); textureImage.classList.add("with-texture"); image.src = url; image.style.display = "block"; } else { image.src = ""; image.style.display = "none"; + textureImage.classList.remove("with-texture"); + textureImage.classList.remove("no-preview"); textureImage.classList.add("no-texture"); } self.webBridgeSync(group.id, url); diff --git a/scripts/system/particle_explorer/particle-style.css b/scripts/system/particle_explorer/particle-style.css index e8b71fdba0..1e2801c19f 100644 --- a/scripts/system/particle_explorer/particle-style.css +++ b/scripts/system/particle_explorer/particle-style.css @@ -119,6 +119,10 @@ hr.splitter:last-of-type{ background-image: url('data:image/png;base64,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'); } -.texture-image.no-texture{ +.texture-image.no-texture { background-image: url('data:image/png;base64,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'); } + +.texture-image.no-preview { + background-image: url('data:image/png;base64,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'); +} From ad661cb34563844d52f69f7f19b06bf74184ffe2 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 10 Nov 2017 10:50:07 +1300 Subject: [PATCH 092/187] Don't remove entities from list when try to delete locked entity --- scripts/system/edit.js | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 15f1c2f6c1..88f50cb080 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1424,24 +1424,29 @@ function deleteSelectedEntities() { for (var i = 0; i < newSortedSelection.length; i++) { var entityID = newSortedSelection[i]; var initialProperties = SelectionManager.savedProperties[entityID]; - var children = Entities.getChildrenIDs(entityID); - var childList = []; - recursiveDelete(children, childList, deletedIDs); - savedProperties.push({ - entityID: entityID, - properties: initialProperties, - children: childList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); + if (!initialProperties.locked) { + var children = Entities.getChildrenIDs(entityID); + var childList = []; + recursiveDelete(children, childList, deletedIDs); + savedProperties.push({ + entityID: entityID, + properties: initialProperties, + children: childList + }); + deletedIDs.push(entityID); + Entities.deleteEntity(entityID); + } } - SelectionManager.clearSelections(); - pushCommandForSelections([], savedProperties); - entityListTool.webView.emitScriptEvent(JSON.stringify({ - type: "deleted", - ids: deletedIDs - })); + if (savedProperties.length > 0) { + SelectionManager.clearSelections(); + pushCommandForSelections([], savedProperties); + + entityListTool.webView.emitScriptEvent(JSON.stringify({ + type: "deleted", + ids: deletedIDs + })); + } } } From ef55e3181dd55fc66dbe79b447335c06fed86b1b Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 9 Nov 2017 16:48:52 -0800 Subject: [PATCH 093/187] moveing controllerDispatchaer pointers to pointerUtils.js --- .../controllers/controllerDispatcher.js | 192 ++---------------- .../controllerModules/inEditMode.js | 48 ----- scripts/system/controllers/grab.js | 2 +- scripts/system/libraries/pointersUtils.js | 191 +++++++++++++++++ 4 files changed, 206 insertions(+), 227 deletions(-) create mode 100644 scripts/system/libraries/pointersUtils.js diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 401c223992..717e50f8ad 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -20,6 +20,7 @@ controllerDispatcherPluginsNeedSort = false; Script.include("/~/system/libraries/utils.js"); Script.include("/~/system/libraries/controllers.js"); Script.include("/~/system/libraries/controllerDispatcherUtils.js"); +Script.include("/~/system/libraries/pointersUtils.js"); (function() { var NEAR_MAX_RADIUS = 0.1; @@ -34,77 +35,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); PROFILE = true; } - var SEARCH_SPHERE_SIZE = 0.0132; - var dim = {x: SEARCH_SPHERE_SIZE, y: SEARCH_SPHERE_SIZE, z: SEARCH_SPHERE_SIZE}; - var halfPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var halfEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var fullPath = { - type: "line3d", - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - var fullEnd = { - type: "sphere", - dimensions: dim, - solid: true, - color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, - alpha: 0.9, - ignoreRayIntersection: true, - drawInFront: true, // Even when burried inside of something, show it. - visible: true - }; - var holdPath = { - type: "line3d", - color: COLORS_GRAB_DISTANCE_HOLD, - visible: true, - alpha: 1, - solid: true, - glow: 1.0, - lineWidth: 5, - ignoreRayIntersection: true, // always ignore this - drawInFront: true, // Even when burried inside of something, show it. - parentID: MyAvatar.SELF_ID - }; - - var renderStates = [ - {name: "half", path: halfPath, end: halfEnd}, - {name: "full", path: fullPath, end: fullEnd}, - {name: "hold", path: holdPath} - ]; - - var defaultRenderStates = [ - {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: halfPath}, - {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: fullPath}, - {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath} - ]; - function ControllerDispatcher() { var _this = this; this.lastInterval = Date.now(); @@ -115,6 +45,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); this.veryhighVarianceCount = 0; this.tabletID = null; this.blacklist = []; + this.pointerManager = new PointerManager(); // a module can occupy one or more "activity" slots while it's running. If all the required slots for a module are // not set to false (not in use), a module cannot start. When a module is using a slot, that module's name @@ -147,39 +78,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } }; - this.enableLaserForPlugin = function(plugin) { - var handLaser = plugin.parameters.handLaser; - if (handLaser !== undefined) { - _this.laserVisibleStatus[handLaser] = true; - } - }; - - this.disableLaserForPlugin = function(plugin) { - var handLaser = plugin.parameters.handLaser; - if (handLaser !== undefined) { - _this.laserVisibleStatus[handLaser] = false; - _this.laserLockStatus[handLaser] = false; - } - }; - - this.lockLaserToTarget = function(laserLockInfo, plugin) { - if (laserLockInfo !== undefined) { - var hand = laserLockInfo.hand; - if (_this.laserVisibleStatus[laserLockInfo.hand]) { - var pointer = (hand === RIGHT_HAND) ? _this.rightControllerPointer : _this.leftControllerPointer; - var targetID = laserLockInfo.targetID; - var targetIsOverlay = laserLockInfo.isOverlay; - Pointers.setLockEndUUID(pointer, targetID, targetIsOverlay); - _this.laserLockStatus[hand] = targetID; - } - } else { - var handLaser = plugin.parameters.handLaser; - if (handLaser !== undefined) { - _this.laserLockStatus[handLaser] = false; - } - } - }; - this.unmarkSlotsForPluginName = function (runningPluginName) { // this is used to free activity-slots when a plugin is deactivated while it's running. for (var activitySlot in _this.activitySlots) { @@ -255,50 +153,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } }; - this.updateRenderStateForVisibleLasers = function() { - // update left hand laser - - var HUD_LASER_OFFSET = 2; - var laserLocked; - if (_this.laserVisibleStatus[LEFT_HAND]) { - laserLocked = _this.laserLockStatus[LEFT_HAND]; - _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, _this.leftTriggerValue, laserLocked); - } else { - Pointers.setRenderState(_this.leftControllerPointer, ""); - } - - if (_this.laserVisibleStatus[RIGHT_HAND]) { - laserLocked = _this.laserLockStatus[RIGHT_HAND]; - _this.updateLaserRenderState(_this.rightControllerPointer, _this.rightTriggerClicked, _this.rightTriggerValue, laserLocked); - } else { - Pointers.setRenderState(_this.rightControllerPointer, ""); - } - - if (_this.laserVisibleStatus[LEFT_HAND + HUD_LASER_OFFSET]) { - _this.updateLaserRenderState(_this.leftControllerHudRayPick, _this.leftTriggerClicked, _this.leftTriggerValue, false); - } else { - Pointers.setRenderState(_this.leftControllerHudRayPick, ""); - } - - if (_this.laserVisibleStatus[RIGHT_HAND + HUD_LASER_OFFSET]) { - _this.updateLaserRenderState(_this.rightControllerHudRayPick, _this.rightTriggerClicked, _this.rightTriggerValue, false); - } else { - Pointers.setRenderState(_this.rightControllerHudRayPick, ""); - } - }; - - this.updateLaserRenderState = function(laser, triggerClicked, triggerValue, laserLocked) { - var mode = ""; - if (laserLocked) { - mode = "hold"; - } else if (triggerClicked) { - mode = "full"; - } else if (triggerValue > TRIGGER_ON_VALUE) { - mode = "half"; - } - Pointers.setRenderState(laser, mode); - }; - this.update = function () { if (PROFILE) { Script.beginProfileRange("dispatch.pre"); @@ -518,7 +372,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } } } - _this.updateRenderStateForVisibleLasers(); + _this.pointerManager.updatePoiniterRenderStates(false, 0); if (PROFILE) { Script.endProfileRange("dispatch.run"); } @@ -543,40 +397,32 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Controller.enableMapping(MAPPING_NAME); - this.leftControllerPointer = Pointers.createPointer(PickType.Ray, { + this.pointerManager.createPointer(false, PickType.Ray, { joint: "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES, - renderStates: renderStates, - defaultRenderStates: defaultRenderStates, triggers: [{action: Controller.Standard.LTClick, button: "Focus"}, {action: Controller.Standard.LTClick, button: "Primary"}], posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true), hover: true }); - this.leftControllerHudRayPick = Pointers.createPointer(PickType.Ray, { - joint: "_CONTROLLER_LEFTHAND", - filter: Picks.PICK_HUD, - maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, - renderStates: renderStates, - defaultRenderStates: defaultRenderStates, - posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true), - triggers: [{action: Controller.Standard.LTClick, button: "Focus"}, {action: Controller.Standard.LTClick, button: "Primary"}], - hover: true - }); - this.rightControllerPointer = Pointers.createPointer(PickType.Ray, { + this.pointerManager.createPointer(false, PickType.Ray, { joint: "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND", filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES, - renderStates: renderStates, - defaultRenderStates: defaultRenderStates, triggers: [{action: Controller.Standard.RTClick, button: "Focus"}, {action: Controller.Standard.RTClick, button: "Primary"}], posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true), hover: true }); - this.rightControllerHudRayPick = Pointers.createPointer(PickType.Ray, { + this.pointerManager.createPointer(true, PickType.Ray, { + joint: "_CONTROLLER_LEFTHAND", + filter: Picks.PICK_HUD, + maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, + posOffset: getGrabPointSphereOffset(Controller.Standard.LeftHand, true), + triggers: [{action: Controller.Standard.LTClick, button: "Focus"}, {action: Controller.Standard.LTClick, button: "Primary"}], + hover: true + }); + this.pointerManager.createPointer(true, PickType.Ray, { joint: "_CONTROLLER_RIGHTHAND", filter: Picks.PICK_HUD, maxDistance: DEFAULT_SEARCH_SPHERE_DISTANCE, - renderStates: renderStates, - defaultRenderStates: defaultRenderStates, posOffset: getGrabPointSphereOffset(Controller.Standard.RightHand, true), triggers: [{action: Controller.Standard.RTClick, button: "Focus"}, {action: Controller.Standard.RTClick, button: "Primary"}], hover: true @@ -586,16 +432,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, enabled: true }); - - Pointers.setRenderState(this.leftControllerPointer, ""); - Pointers.setRenderState(this.leftControllerHudRayPick, ""); - Pointers.setRenderState(this.rightControllerPointer, ""); - Pointers.setRenderState(this.rightControllerHudRayPick, ""); - Pointers.enablePointer(this.leftControllerPointer); - Pointers.enablePointer(this.leftControllerHudRayPick); - Pointers.enablePointer(this.rightControllerPointer); - Pointers.enablePointer(this.rightControllerHudRayPick); - this.handleHandMessage = function(channel, message, sender) { var data; if (sender === MyAvatar.sessionUUID) { diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index ff013fc833..d6a23c5436 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -42,32 +42,6 @@ Script.include("/~/system/libraries/utils.js"); return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; }; -<<<<<<< HEAD -======= - - this.processControllerTriggers = function(controllerData) { - if (controllerData.triggerClicks[this.hand]) { - this.mode = "full"; - } else if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { - this.mode = "half"; - } else { - this.mode = "none"; - } - }; - - this.updateLaserPointer = function(controllerData) { - LaserPointers.enableLaserPointer(this.laserPointer); - LaserPointers.setRenderState(this.laserPointer, this.mode); - - if (HMD.tabletID !== this.tabletID || HMD.homeButtonID !== this.homeButtonID || HMD.tabletScreenID !== this.tabletScreenID) { - this.tabletID = HMD.tabletID; - this.homeButtonID = HMD.homeButtonID; - this.tabletScreenID = HMD.tabletScreenID; - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.homeButtonID, HMD.tabletScreenID]); - } - }; - ->>>>>>> 5a78c9ebfee6685c32abcef652fb6b3b3f7dc348 this.pointingAtTablet = function(objectID) { if (objectID === HMD.tabletScreenID || objectID === HMD.homeButtonID) { return true; @@ -146,26 +120,6 @@ Script.include("/~/system/libraries/utils.js"); this.sendPickData(controllerData); return this.isReady(controllerData); }; -<<<<<<< HEAD -======= - - this.cleanup = function() { - LaserPointers.disableLaserPointer(this.laserPointer); - LaserPointers.removeLaserPointer(this.laserPointer); - }; - - this.laserPointer = LaserPointers.createLaserPointer({ - joint: (this.hand === RIGHT_HAND) ? "_CONTROLLER_RIGHTHAND" : "_CONTROLLER_LEFTHAND", - filter: Picks.PICK_ENTITIES | Picks.PICK_OVERLAYS, - maxDistance: PICK_MAX_DISTANCE, - posOffset: getGrabPointSphereOffset(this.handToController(), true), - renderStates: renderStates, - faceAvatar: true, - defaultRenderStates: defaultRenderStates - }); - - LaserPointers.setIgnoreItems(this.laserPointer, [HMD.tabletID, HMD.homeButtonID, HMD.tabletScreenID]); ->>>>>>> 5a78c9ebfee6685c32abcef652fb6b3b3f7dc348 } var leftHandInEditMode = new InEditMode(LEFT_HAND); @@ -175,8 +129,6 @@ Script.include("/~/system/libraries/utils.js"); enableDispatcherModule("RightHandInEditMode", rightHandInEditMode); function cleanup() { - leftHandInEditMode.cleanup(); - rightHandInEditMode.cleanup(); disableDispatcherModule("LeftHandInEditMode"); disableDispatcherModule("RightHandInEditMode"); } diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index 7a6b190d44..6d550d981f 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -345,7 +345,7 @@ Grabber.prototype.pressEvent = function(event) { } Pointers.setRenderState(this.mouseRayEntities, "grabbed"); - Pointers.setLockEndUid(this.mouseRayEntities, pickResults.objectID, false); + Pointers.setLockEndUUID(this.mouseRayEntities, pickResults.objectID, false); mouse.startDrag(event); diff --git a/scripts/system/libraries/pointersUtils.js b/scripts/system/libraries/pointersUtils.js new file mode 100644 index 0000000000..d9cca447c6 --- /dev/null +++ b/scripts/system/libraries/pointersUtils.js @@ -0,0 +1,191 @@ +"use strict"; + +// pointerUtils.js +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + +/* jslint bitwise: true */ + +/* global Script, Entities, Overlays, Controller, Vec3, Quat, getControllerWorldLocation, RayPick, + controllerDispatcherPlugins:true, controllerDispatcherPluginsNeedSort:true, + LEFT_HAND, RIGHT_HAND, NEAR_GRAB_PICK_RADIUS, DEFAULT_SEARCH_SPHERE_DISTANCE, DISPATCHER_PROPERTIES, + getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities, Pointers, PickType, COLORS_GRAB_SEARCHING_HALF_SQUEEZE + COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, Picks, TRIGGER_ON_VALUE +*/ + + +Script.include("/~/system/libraries/controllerDispatcherUtils.js"); +function Pointer(hudLayer, pickType, pointerData) { + this.SEARCH_SPHERE_SIZE = 0.0132; + this.dim = {x: this.SEARCH_SPHERE_SIZE, y: this.SEARCH_SPHERE_SIZE, z: this.SEARCH_SPHERE_SIZE}; + this.halfPath = { + type: "line3d", + color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, + visible: true, + alpha: 1, + solid: true, + glow: 1.0, + lineWidth: 5, + ignoreRayIntersection: true, // always ignore this + drawInFront: true, // Even when burried inside of something, show it. + drawHUDLayer: hudLayer, + parentID: MyAvatar.SELF_ID + }; + this.halfEnd = { + type: "sphere", + dimensions: this.dim, + solid: true, + color: COLORS_GRAB_SEARCHING_HALF_SQUEEZE, + alpha: 0.9, + ignoreRayIntersection: true, + drawInFront: true, // Even when burried inside of something, show it. + drawHUDLayer: hudLayer, + visible: true + }; + this.fullPath = { + type: "line3d", + color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, + visible: true, + alpha: 1, + solid: true, + glow: 1.0, + lineWidth: 5, + ignoreRayIntersection: true, // always ignore this + drawInFront: true, // Even when burried inside of something, show it. + drawHUDLayer: hudLayer, + parentID: MyAvatar.SELF_ID + }; + this.fullEnd = { + type: "sphere", + dimensions: this.dim, + solid: true, + color: COLORS_GRAB_SEARCHING_FULL_SQUEEZE, + alpha: 0.9, + ignoreRayIntersection: true, + drawInFront: true, // Even when burried inside of something, show it. + drawHUDLayer: hudLayer, + visible: true + }; + this.holdPath = { + type: "line3d", + color: COLORS_GRAB_DISTANCE_HOLD, + visible: true, + alpha: 1, + solid: true, + glow: 1.0, + lineWidth: 5, + ignoreRayIntersection: true, // always ignore this + drawInFront: true, // Even when burried inside of something, show it. + drawHUDLayer: hudLayer, + parentID: MyAvatar.SELF_ID + }; + + this.renderStates = [ + {name: "half", path: this.halfPath, end: this.halfEnd}, + {name: "full", path: this.fullPath, end: this.fullEnd}, + {name: "hold", path: this.holdPath} + ]; + + this.defaultRenderStates = [ + {name: "half", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: this.halfPath}, + {name: "full", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: this.fullPath}, + {name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: this.holdPath} + ]; + + + this.pointerID = null; + this.triggers = []; + this.joint = null; + this.visible = false; + this.locked = false; + + function createPointer(pickType, pointerData) { + if (this.pointerID) { + Pointers.removePointer(this.pointerID); + } + this.pointerID = Pointers.createPointer(pickType, pointerData); + Pointers.setRenderState(this.pointerID, ""); + Pointers.enablePointer(this.pointerID); + } + + this.enable = function() { + }; + + this.disable = function() { + }; + + this.makeVisible = function() { + this.visible = true; + }; + + this.makeInvisible = function() { + this.visible = false; + }; + + this.lockEnd = function(lockData) { + if (lockData !== undefined) { + var hand = lockData.hand; + if (this.visible) { + var targetID = lockData.targetID; + var targetIsOverlay = lockData.isOverlay; + Pointers.setLockEndUUID(this.pointer, targetID, targetIsOverlay); + this.locked = targetID; + } + } else { + this.locked = false; + } + }; + + this.updateRenderState = function(triggerClicked, triggerValue) { + var mode = ""; + if (this.visible) { + if (this.locked) { + mode = "hold"; + } else if (triggerClicked) { + mode = "full"; + } else if (triggerValue > TRIGGER_ON_VALUE) { + mode = "half"; + } + } + + Pointers.setRenderState(this.pointerID, mode); + }; + pointerData.renderStates = this.renderStates; + pointerData.defualtRenderStates = this.defualtRenderStates; + createPointer(pickType, pointerData); +} + + +function PointerManager() { + this.pointers = []; + + this.createPointer = function(hudLayer, pickType, pointerData) { + var pointer = new Pointer(hudLayer, pickType, pointerData); + this.pointers.push(pointer); + }; + + this.makePointerVisible = function(index) { + if (index < this.pointers.length) { + this.pointers[index].makeVisible(); + } + }; + + this.makePointerInvisible = function(index) { + if (index < this.pointers.length) { + this.pointers[index].makeInvisible(); + } + }; + + this.lockPointerEnd = function(index, lockData) { + if (index < this.pointers.length) { + this.pointers[index].lockEnd(lockData); + } + }; + + this.updatePointersRenderState = function(triggerClicked, triggerValue) { + for (var index = 0; index < this.pointers.length; index++) { + this.pointers[index].updateRenderState(triggerClicked, triggerValue); + } + }; +} From c6947dd165691887ac64e0fae778be96af0d6b4e Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 9 Nov 2017 18:20:06 -0800 Subject: [PATCH 094/187] some side by side plumbing for NLPackets and NLPacketLists --- libraries/networking/src/NodeList.h | 3 ++ libraries/networking/src/PacketSender.cpp | 38 ++++++++++++---- libraries/networking/src/PacketSender.h | 5 ++- .../octree/src/OctreeEditPacketSender.cpp | 44 +++++++++++++++++-- libraries/octree/src/OctreeEditPacketSender.h | 5 ++- 5 files changed, 80 insertions(+), 15 deletions(-) diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index b3a12153e5..0ebc1f0b22 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -40,6 +40,9 @@ const quint64 DOMAIN_SERVER_CHECK_IN_MSECS = 1 * 1000; const int MAX_SILENT_DOMAIN_SERVER_CHECK_INS = 5; +using PacketOrPacketList = std::pair, std::unique_ptr>; +using NodePacketOrPacketListPair = std::pair; + using NodePacketPair = std::pair>; using NodeSharedPacketPair = std::pair>; using NodeSharedReceivedMessagePair = std::pair>; diff --git a/libraries/networking/src/PacketSender.cpp b/libraries/networking/src/PacketSender.cpp index 0cfd67cc4e..01b78585c2 100644 --- a/libraries/networking/src/PacketSender.cpp +++ b/libraries/networking/src/PacketSender.cpp @@ -53,7 +53,19 @@ void PacketSender::queuePacketForSending(const SharedNodePointer& destinationNod _totalBytesQueued += packet->getDataSize(); lock(); - _packets.push_back({destinationNode, std::move(packet)}); + _packets.push_back({destinationNode, PacketOrPacketList { std::move(packet), nullptr} }); + unlock(); + + // Make sure to wake our actual processing thread because we now have packets for it to process. + _hasPackets.wakeAll(); +} + +void PacketSender::queuePacketListForSending(const SharedNodePointer& destinationNode, std::unique_ptr packetList) { + _totalPacketsQueued += packetList->getNumPackets(); + _totalBytesQueued += packetList->getMessageSize(); + + lock(); + _packets.push_back({ destinationNode, PacketOrPacketList { nullptr, std::move(packetList)} }); unlock(); // Make sure to wake our actual processing thread because we now have packets for it to process. @@ -178,7 +190,7 @@ bool PacketSender::nonThreadedProcess() { float averagePacketsPerCall = 0; // might be less than 1, if our caller calls us more frequently than the target PPS - int packetsSentThisCall = 0; + size_t packetsSentThisCall = 0; int packetsToSendThisCall = 0; // Since we're in non-threaded mode, we need to determine how many packets to send per call to process @@ -265,23 +277,31 @@ bool PacketSender::nonThreadedProcess() { while ((packetsSentThisCall < packetsToSendThisCall) && (packetsLeft > 0)) { lock(); - NodePacketPair packetPair = std::move(_packets.front()); + NodePacketOrPacketListPair packetPair = std::move(_packets.front()); _packets.pop_front(); packetsLeft = _packets.size(); unlock(); // send the packet through the NodeList... - DependencyManager::get()->sendUnreliablePacket(*packetPair.second, *packetPair.first); + //PacketOrPacketList packetOrList = packetPair.second; + bool sendAsPacket = packetPair.second.first.get(); + if (sendAsPacket) { + DependencyManager::get()->sendUnreliablePacket(*packetPair.second.first, *packetPair.first); + } else { + DependencyManager::get()->sendPacketList(*packetPair.second.second, *packetPair.first); + } - packetsSentThisCall++; - _packetsOverCheckInterval++; - _totalPacketsSent++; + size_t packetSize = sendAsPacket ? packetPair.second.first->getDataSize() : packetPair.second.second->getMessageSize(); + size_t packetCount = sendAsPacket ? 1 : packetPair.second.second->getNumPackets(); + + packetsSentThisCall += packetCount; + _packetsOverCheckInterval += packetCount; + _totalPacketsSent += packetCount; - int packetSize = packetPair.second->getDataSize(); _totalBytesSent += packetSize; - emit packetSent(packetSize); + emit packetSent(packetSize); // FIXME should include number of packets? _lastSendTime = now; } diff --git a/libraries/networking/src/PacketSender.h b/libraries/networking/src/PacketSender.h index 68faeaca47..fead49df72 100644 --- a/libraries/networking/src/PacketSender.h +++ b/libraries/networking/src/PacketSender.h @@ -39,6 +39,7 @@ public: /// Add packet to outbound queue. void queuePacketForSending(const SharedNodePointer& destinationNode, std::unique_ptr packet); + void queuePacketListForSending(const SharedNodePointer& destinationNode, std::unique_ptr packetList); void setPacketsPerSecond(int packetsPerSecond); int getPacketsPerSecond() const { return _packetsPerSecond; } @@ -99,14 +100,14 @@ protected: SimpleMovingAverage _averageProcessCallTime; private: - std::list _packets; + std::list _packets; quint64 _lastSendTime; bool threadedProcess(); bool nonThreadedProcess(); quint64 _lastPPSCheck; - int _packetsOverCheckInterval; + size_t _packetsOverCheckInterval; quint64 _started; quint64 _totalPacketsSent; diff --git a/libraries/octree/src/OctreeEditPacketSender.cpp b/libraries/octree/src/OctreeEditPacketSender.cpp index f3c9ece9fe..7b612a828c 100644 --- a/libraries/octree/src/OctreeEditPacketSender.cpp +++ b/libraries/octree/src/OctreeEditPacketSender.cpp @@ -115,6 +115,27 @@ void OctreeEditPacketSender::queuePacketToNode(const QUuid& nodeUUID, std::uniqu }); } +// This method is called when the edit packet layer has determined that it has a fully formed packet destined for +// a known nodeID. +void OctreeEditPacketSender::queuePacketListToNode(const QUuid& nodeUUID, std::unique_ptr packetList) { + + bool wantDebug = false; + DependencyManager::get()->eachNode([&](const SharedNodePointer& node) { + // only send to the NodeTypes that are getMyNodeType() + if (node->getType() == getMyNodeType() + && ((node->getUUID() == nodeUUID) || (nodeUUID.isNull())) + && node->getActiveSocket()) { + + // NOTE: unlike packets, the packet lists don't get rewritten sequence numbers. + + // add packet to history -- we don't keep track of sent PacketLists + //_sentPacketHistories[nodeUUID].packetSent(sequence, *packet); + + queuePacketListForSending(node, std::move(packetList)); + } + }); +} + void OctreeEditPacketSender::processPreServerExistsPackets() { assert(serversExist()); // we should only be here if we have jurisdictions @@ -247,7 +268,7 @@ void OctreeEditPacketSender::queueOctreeEditMessage(PacketType type, QByteArray& }); } if (isMyJurisdiction) { - std::unique_ptr& bufferedPacket = _pendingEditPackets[nodeUUID]; + std::unique_ptr& bufferedPacket = _pendingEditPackets[nodeUUID].first; //only a NLPacket for now if (!bufferedPacket) { bufferedPacket = initializePacket(type, node->getClockSkewUsec()); @@ -291,15 +312,24 @@ void OctreeEditPacketSender::releaseQueuedMessages() { } else { _packetsQueueLock.lock(); for (auto& i : _pendingEditPackets) { - if (i.second) { + if (i.second.first) { // construct a null unique_ptr to an NL packet std::unique_ptr releasedPacket; // swap the null ptr with the packet we want to release - i.second.swap(releasedPacket); + i.second.first.swap(releasedPacket); // move and release the queued packet releaseQueuedPacket(i.first, std::move(releasedPacket)); + } else if (i.second.second) { + // construct a null unique_ptr to an NLPacketList + std::unique_ptr releasedPacketList; + + // swap the null ptr with the NLPacketList we want to release + i.second.second.swap(releasedPacketList); + + // move and release the queued NLPacketList + releaseQueuedPacketList(i.first, std::move(releasedPacketList)); } } @@ -315,6 +345,14 @@ void OctreeEditPacketSender::releaseQueuedPacket(const QUuid& nodeID, std::uniqu _releaseQueuedPacketMutex.unlock(); } +void OctreeEditPacketSender::releaseQueuedPacketList(const QUuid& nodeID, std::unique_ptr packetList) { + _releaseQueuedPacketMutex.lock(); + if (packetList->getMessageSize() > 0 && packetList->getType() != PacketType::Unknown) { + queuePacketListToNode(nodeID, std::move(packetList)); + } + _releaseQueuedPacketMutex.unlock(); +} + std::unique_ptr OctreeEditPacketSender::initializePacket(PacketType type, qint64 nodeClockSkew) { auto newPacket = NLPacket::create(type); diff --git a/libraries/octree/src/OctreeEditPacketSender.h b/libraries/octree/src/OctreeEditPacketSender.h index fd8cc85f91..79c363bec5 100644 --- a/libraries/octree/src/OctreeEditPacketSender.h +++ b/libraries/octree/src/OctreeEditPacketSender.h @@ -87,15 +87,18 @@ protected: bool _shouldSend; void queuePacketToNode(const QUuid& nodeID, std::unique_ptr packet); + void queuePacketListToNode(const QUuid& nodeUUID, std::unique_ptr packetList); + void queuePendingPacketToNodes(std::unique_ptr packet); void queuePacketToNodes(std::unique_ptr packet); std::unique_ptr initializePacket(PacketType type, qint64 nodeClockSkew); void releaseQueuedPacket(const QUuid& nodeUUID, std::unique_ptr packetBuffer); // releases specific queued packet + void releaseQueuedPacketList(const QUuid& nodeID, std::unique_ptr packetList); void processPreServerExistsPackets(); // These are packets which are destined from know servers but haven't been released because they're still too small - std::unordered_map> _pendingEditPackets; + std::unordered_map _pendingEditPackets; // These are packets that are waiting to be processed because we don't yet know if there are servers int _maxPendingMessages; From 908faa13345797dd37102cf324f3aade3ba9f459 Mon Sep 17 00:00:00 2001 From: beholder Date: Fri, 10 Nov 2017 19:38:07 +0300 Subject: [PATCH 095/187] refactoring: simplify code & fix the issue with menu-es sometimes losing checked state --- interface/resources/qml/desktop/Desktop.qml | 24 +++++++++++-------- .../qml/hifi/tablet/TabletMenuStack.qml | 23 ------------------ 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/interface/resources/qml/desktop/Desktop.qml b/interface/resources/qml/desktop/Desktop.qml index 847111b8a0..e7c68b2a47 100644 --- a/interface/resources/qml/desktop/Desktop.qml +++ b/interface/resources/qml/desktop/Desktop.qml @@ -51,19 +51,23 @@ FocusScope { // The VR version of the primary menu property var rootMenu: Menu { + id: rootMenuId objectName: "rootMenu" - // for some reasons it is not possible to use just '({})' here as it gets empty when passed to TableRoot/DesktopRoot - property var exclusionGroupsByMenuItem : ListModel {} + property var exclusionGroups: ({}); + property Component exclusiveGroupMaker: Component { + ExclusiveGroup { + } + } - function addExclusionGroup(menuItem, exclusionGroup) - { - exclusionGroupsByMenuItem.append( - { - 'menuItem' : menuItem.toString(), - 'exclusionGroup' : exclusionGroup.toString() - } - ); + function addExclusionGroup(qmlAction, exclusionGroup) { + + var exclusionGroupId = exclusionGroup.toString(); + if(!exclusionGroups[exclusionGroupId]) { + exclusionGroups[exclusionGroupId] = exclusiveGroupMaker.createObject(rootMenuId); + } + + qmlAction.exclusiveGroup = exclusionGroups[exclusionGroupId] } } diff --git a/interface/resources/qml/hifi/tablet/TabletMenuStack.qml b/interface/resources/qml/hifi/tablet/TabletMenuStack.qml index ce4fac3bd5..8cd696a41b 100644 --- a/interface/resources/qml/hifi/tablet/TabletMenuStack.qml +++ b/interface/resources/qml/hifi/tablet/TabletMenuStack.qml @@ -66,7 +66,6 @@ Item { function toModel(items, newMenu) { var result = modelMaker.createObject(tabletMenu); - var exclusionGroups = {}; for (var i = 0; i < items.length; ++i) { var item = items[i]; @@ -78,28 +77,6 @@ Item { if (item.text !== "Users Online") { result.append({"name": item.text, "item": item}) } - - for(var j = 0; j < tabletMenu.rootMenu.exclusionGroupsByMenuItem.count; ++j) - { - var entry = tabletMenu.rootMenu.exclusionGroupsByMenuItem.get(j); - if(entry.menuItem == item.toString()) - { - var exclusionGroupId = entry.exclusionGroup; - console.debug('item exclusionGroupId: ', exclusionGroupId) - - if(!exclusionGroups[exclusionGroupId]) - { - exclusionGroups[exclusionGroupId] = exclusiveGroupMaker.createObject(newMenu); - console.debug('new exclusion group created: ', exclusionGroups[exclusionGroupId]) - } - - var exclusionGroup = exclusionGroups[exclusionGroupId]; - - item.exclusiveGroup = exclusionGroup - console.debug('item.exclusiveGroup: ', item.exclusiveGroup) - } - } - break; case MenuItemType.Separator: result.append({"name": "", "item": item}) From 87519cd26f0174ce273fc63ee40076bb02132a22 Mon Sep 17 00:00:00 2001 From: beholder Date: Fri, 10 Nov 2017 19:39:51 +0300 Subject: [PATCH 096/187] use conditional bindings to avoid intermediate binding states --- .../qml/hifi/tablet/TabletMenuItem.qml | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/TabletMenuItem.qml b/interface/resources/qml/hifi/tablet/TabletMenuItem.qml index 11d3cab35e..520841b33f 100644 --- a/interface/resources/qml/hifi/tablet/TabletMenuItem.qml +++ b/interface/resources/qml/hifi/tablet/TabletMenuItem.qml @@ -40,37 +40,29 @@ Item { CheckBox { id: checkbox - // FIXME: Should use radio buttons if source.exclusiveGroup. + width: 20 visible: source !== null ? source.visible && source.type === 1 && source.checkable && !source.exclusiveGroup : false - checked: setChecked() - function setChecked() { - if (!source || source.type !== 1 || !source.checkable) { - return false; - } - // FIXME this works for native QML menus but I don't think it will - // for proxied QML menus - return source.checked; + + Binding on checked { + value: source.checked; + when: source && source.type === 1 && source.checkable && !source.exclusiveGroup; } } RadioButton { id: radiobutton - // FIXME: Should use radio buttons if source.exclusiveGroup. + width: 20 visible: source !== null ? source.visible && source.type === 1 && source.checkable && source.exclusiveGroup : false - checked: setChecked() - function setChecked() { - if (!source || source.type !== 1 || !source.checkable) { - return false; - } - // FIXME this works for native QML menus but I don't think it will - // for proxied QML menus - return source.checked; + + Binding on checked { + value: source.checked; + when: source && source.type === 1 && source.checkable && source.exclusiveGroup; } } } From da49ee8bee498b9d1d9280afbc6ccb325d566d40 Mon Sep 17 00:00:00 2001 From: beholder Date: Fri, 10 Nov 2017 19:42:10 +0300 Subject: [PATCH 097/187] 9032 Current display mode can be deselected in the toolbar/tablet menu --- interface/src/Application.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b21588958e..e35407038b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7082,6 +7082,7 @@ DisplayPluginPointer Application::getActiveDisplayPlugin() const { return _displayPlugin; } +static const char* exclusionGroupKey = "exclusionGroup"; static void addDisplayPluginToMenu(DisplayPluginPointer displayPlugin, bool active = false) { auto menu = Menu::getInstance(); @@ -7117,6 +7118,8 @@ static void addDisplayPluginToMenu(DisplayPluginPointer displayPlugin, bool acti action->setCheckable(true); action->setChecked(active); displayPluginGroup->addAction(action); + + action->setProperty(exclusionGroupKey, QVariant::fromValue(displayPluginGroup)); Q_ASSERT(menu->menuItemExists(MenuOption::OutputMenu, name)); } From cbf05436460d896f46465b4a1e9f627c030b3236 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 10 Nov 2017 13:22:38 -0800 Subject: [PATCH 098/187] deadspot --- interface/src/raypick/LaserPointer.cpp | 2 +- interface/src/raypick/LaserPointer.h | 2 +- interface/src/raypick/StylusPointer.cpp | 78 +++++++++++++-------- interface/src/raypick/StylusPointer.h | 11 ++- libraries/pointers/src/pointers/Pointer.cpp | 4 +- libraries/pointers/src/pointers/Pointer.h | 2 +- 6 files changed, 64 insertions(+), 35 deletions(-) diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index bd54a24e97..5e0d61f24b 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -289,7 +289,7 @@ RenderState LaserPointer::buildRenderState(const QVariantMap& propMap) { return RenderState(startID, pathID, endID); } -PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const { +PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult, bool hover) const { QUuid pickedID; glm::vec3 intersection, surfaceNormal, direction, origin; auto rayPickResult = std::static_pointer_cast(pickResult); diff --git a/interface/src/raypick/LaserPointer.h b/interface/src/raypick/LaserPointer.h index 4874cadf0a..59be58d4ac 100644 --- a/interface/src/raypick/LaserPointer.h +++ b/interface/src/raypick/LaserPointer.h @@ -70,7 +70,7 @@ public: static RenderState buildRenderState(const QVariantMap& propMap); protected: - PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const override; + PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult, bool hover = true) const override; PickedObject getHoveredObject(const PickResultPointer& pickResult) override; Pointer::Buttons getPressedButtons() override; diff --git a/interface/src/raypick/StylusPointer.cpp b/interface/src/raypick/StylusPointer.cpp index 80e783cfe4..1a172b8894 100644 --- a/interface/src/raypick/StylusPointer.cpp +++ b/interface/src/raypick/StylusPointer.cpp @@ -17,8 +17,6 @@ #include "PickScriptingInterface.h" #include -using namespace controller; - // TODO: make these configurable per pointer static const float WEB_STYLUS_LENGTH = 0.2f; @@ -30,6 +28,10 @@ static const float TABLET_MAX_TOUCH_DISTANCE = 0.01f; static const float HOVER_HYSTERESIS = 0.01f; static const float TOUCH_HYSTERESIS = 0.02f; +static const float STYLUS_MOVE_DELAY = 0.33f * USECS_PER_SECOND; +static const float TOUCH_PRESS_TO_MOVE_DEADSPOT = 0.0481f; +static const float TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED = TOUCH_PRESS_TO_MOVE_DEADSPOT * TOUCH_PRESS_TO_MOVE_DEADSPOT; + StylusPointer::StylusPointer(const QVariant& props, const OverlayID& stylusOverlay, bool hover, bool enabled) : Pointer(DependencyManager::get()->createStylusPick(props), enabled, hover), _stylusOverlay(stylusOverlay) @@ -115,16 +117,10 @@ bool StylusPointer::shouldTrigger(const PickResultPointer& pickResult) { float distance = stylusPickResult->distance; // If we're triggering on an object, recalculate the distance instead of using the pickResult + glm::vec3 origin = vec3FromVariant(stylusPickResult->pickVariant["position"]); + glm::vec3 direction = -_state.surfaceNormal; if (!_state.triggeredObject.objectID.isNull() && stylusPickResult->objectID != _state.triggeredObject.objectID) { - glm::vec3 intersection; - glm::vec3 origin = vec3FromVariant(stylusPickResult->pickVariant["position"]); - glm::vec3 direction = -_state.surfaceNormal; - if (_state.triggeredObject.type == ENTITY) { - intersection = RayPick::intersectRayWithEntityXYPlane(_state.triggeredObject.objectID, origin, direction); - } else if (_state.triggeredObject.type == OVERLAY) { - intersection = RayPick::intersectRayWithOverlayXYPlane(_state.triggeredObject.objectID, origin, direction); - } - distance = glm::dot(intersection - origin, direction); + distance = glm::dot(findIntersection(_state.triggeredObject, origin, direction) - origin, direction); } float hysteresis = _state.triggering ? TOUCH_HYSTERESIS * sensorScaleFactor : 0.0f; @@ -132,6 +128,9 @@ bool StylusPointer::shouldTrigger(const PickResultPointer& pickResult) { TABLET_MAX_TOUCH_DISTANCE * sensorScaleFactor, hysteresis)) { if (_state.triggeredObject.objectID.isNull()) { _state.triggeredObject = PickedObject(stylusPickResult->objectID, stylusPickResult->type); + _state.intersection = findIntersection(_state.triggeredObject, origin, direction); + _state.triggerPos2D = findPos2D(_state.triggeredObject, origin); + _state.triggerStartTime = usecTimestampNow(); _state.surfaceNormal = stylusPickResult->surfaceNormal; _state.triggering = true; } @@ -140,6 +139,9 @@ bool StylusPointer::shouldTrigger(const PickResultPointer& pickResult) { } _state.triggeredObject = PickedObject(); + _state.intersection = glm::vec3(NAN); + _state.triggerPos2D = glm::vec2(NAN); + _state.triggerStartTime = 0; _state.surfaceNormal = glm::vec3(NAN); _state.triggering = false; return false; @@ -159,34 +161,30 @@ Pointer::Buttons StylusPointer::getPressedButtons() { return toReturn; } -PointerEvent StylusPointer::buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const { +PointerEvent StylusPointer::buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult, bool hover) const { QUuid pickedID; + glm::vec2 pos2D; glm::vec3 intersection, surfaceNormal, direction, origin; auto stylusPickResult = std::static_pointer_cast(pickResult); if (stylusPickResult) { intersection = stylusPickResult->intersection; - surfaceNormal = _state.surfaceNormal; + surfaceNormal = hover ? stylusPickResult->surfaceNormal : _state.surfaceNormal; const QVariantMap& stylusTip = stylusPickResult->pickVariant; origin = vec3FromVariant(stylusTip["position"]); - direction = -_state.surfaceNormal; + direction = -surfaceNormal; + pos2D = findPos2D(target, origin); pickedID = stylusPickResult->objectID; } - if (pickedID != target.objectID) { - if (target.type == ENTITY) { - intersection = RayPick::intersectRayWithEntityXYPlane(target.objectID, origin, direction); - } else if (target.type == OVERLAY) { - intersection = RayPick::intersectRayWithOverlayXYPlane(target.objectID, origin, direction); - } - } - glm::vec2 pos2D; - if (target.type == ENTITY) { - pos2D = RayPick::projectOntoEntityXYPlane(target.objectID, origin); - } else if (target.type == OVERLAY) { - pos2D = RayPick::projectOntoOverlayXYPlane(target.objectID, origin); - } else if (target.type == HUD) { - pos2D = DependencyManager::get()->calculatePos2DFromHUD(origin); + // If we just started triggering and we haven't moved too much, don't update intersection and pos2D + if (!_state.triggeredObject.objectID.isNull() && usecTimestampNow() - _state.triggerStartTime < STYLUS_MOVE_DELAY && + glm::distance2(pos2D, _state.triggerPos2D) < TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED) { + pos2D = _state.triggerPos2D; + intersection = _state.intersection; + } else if (pickedID != target.objectID) { + intersection = findIntersection(target, origin, direction); } + return PointerEvent(pos2D, intersection, surfaceNormal, direction); } @@ -203,4 +201,28 @@ void StylusPointer::setRenderState(const std::string& state) { } else if (state == "disabled") { _renderState = DISABLED; } +} + +glm::vec3 StylusPointer::findIntersection(const PickedObject& pickedObject, const glm::vec3& origin, const glm::vec3& direction) { + switch (pickedObject.type) { + case ENTITY: + return RayPick::intersectRayWithEntityXYPlane(pickedObject.objectID, origin, direction); + case OVERLAY: + return RayPick::intersectRayWithOverlayXYPlane(pickedObject.objectID, origin, direction); + default: + return glm::vec3(NAN); + } +} + +glm::vec2 StylusPointer::findPos2D(const PickedObject& pickedObject, const glm::vec3& origin) { + switch (pickedObject.type) { + case ENTITY: + return RayPick::projectOntoEntityXYPlane(pickedObject.objectID, origin); + case OVERLAY: + return RayPick::projectOntoOverlayXYPlane(pickedObject.objectID, origin); + case HUD: + return DependencyManager::get()->calculatePos2DFromHUD(origin); + default: + return glm::vec2(NAN); + } } \ No newline at end of file diff --git a/interface/src/raypick/StylusPointer.h b/interface/src/raypick/StylusPointer.h index cc7f2814db..fb2d492798 100644 --- a/interface/src/raypick/StylusPointer.h +++ b/interface/src/raypick/StylusPointer.h @@ -41,7 +41,7 @@ protected: bool shouldHover(const PickResultPointer& pickResult) override; bool shouldTrigger(const PickResultPointer& pickResult) override; - PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const override; + PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult, bool hover = true) const override; private: void show(const StylusTip& tip); @@ -49,9 +49,13 @@ private: struct TriggerState { PickedObject triggeredObject; + glm::vec3 intersection { NAN }; + glm::vec2 triggerPos2D { NAN }; glm::vec3 surfaceNormal { NAN }; - bool hovering { false }; + quint64 triggerStartTime { 0 }; bool triggering { false }; + + bool hovering { false }; }; TriggerState _state; @@ -67,6 +71,9 @@ private: const OverlayID _stylusOverlay; static bool isWithinBounds(float distance, float min, float max, float hysteresis); + static glm::vec3 findIntersection(const PickedObject& pickedObject, const glm::vec3& origin, const glm::vec3& direction); + static glm::vec2 findPos2D(const PickedObject& pickedObject, const glm::vec3& origin); + }; #endif // hifi_StylusPointer_h diff --git a/libraries/pointers/src/pointers/Pointer.cpp b/libraries/pointers/src/pointers/Pointer.cpp index e17fb8ec65..d5aa13d293 100644 --- a/libraries/pointers/src/pointers/Pointer.cpp +++ b/libraries/pointers/src/pointers/Pointer.cpp @@ -199,7 +199,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const PickResultPoin // Trigger continue for (const std::string& button : sameButtons) { - PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult, false); triggeredEvent.setID(pointerID); triggeredEvent.setType(PointerEvent::Move); triggeredEvent.setButton(chooseButton(button)); @@ -214,7 +214,7 @@ void Pointer::generatePointerEvents(unsigned int pointerID, const PickResultPoin // Trigger end for (const std::string& button : _prevButtons) { - PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult); + PointerEvent triggeredEvent = buildPointerEvent(_triggeredObjects[button], pickResult, false); triggeredEvent.setID(pointerID); triggeredEvent.setType(PointerEvent::Release); triggeredEvent.setButton(chooseButton(button)); diff --git a/libraries/pointers/src/pointers/Pointer.h b/libraries/pointers/src/pointers/Pointer.h index 0415f00d1e..6acbcf9ca0 100644 --- a/libraries/pointers/src/pointers/Pointer.h +++ b/libraries/pointers/src/pointers/Pointer.h @@ -82,7 +82,7 @@ protected: bool _enabled; bool _hover; - virtual PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult) const = 0; + virtual PointerEvent buildPointerEvent(const PickedObject& target, const PickResultPointer& pickResult, bool hover = true) const = 0; virtual PickedObject getHoveredObject(const PickResultPointer& pickResult) = 0; virtual Buttons getPressedButtons() = 0; From 03364c1893a7113574c532a8064460391d29462f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 10 Nov 2017 15:34:22 -0800 Subject: [PATCH 099/187] Cleanup DS settings for small screens --- domain-server/resources/web/css/style.css | 22 ++++++++++++++----- .../resources/web/settings/index.shtml | 5 ----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/domain-server/resources/web/css/style.css b/domain-server/resources/web/css/style.css index fb1e1aa9f5..17dcc06ccb 100644 --- a/domain-server/resources/web/css/style.css +++ b/domain-server/resources/web/css/style.css @@ -80,11 +80,23 @@ span.port { display: none; } -#setup-sidebar.affix { - /* This overrides a case where going to the bottom of the page, - * then scrolling up, causes `position: relative` to be added to the style - */ - position: fixed !important; +@media (min-width: 768px) { + #setup-sidebar.affix { + /* This overrides a case where going to the bottom of the page, + * then scrolling up, causes `position: relative` to be added to the style + */ + position: fixed !important; + } +} + +@media (max-width: 767px) { + #setup-sidebar.affix { + position: static !important; + } + + #setup-sidebar { + margin-bottom: 20px; + } } #setup-sidebar button { diff --git a/domain-server/resources/web/settings/index.shtml b/domain-server/resources/web/settings/index.shtml index 5a8184db30..d36330375a 100644 --- a/domain-server/resources/web/settings/index.shtml +++ b/domain-server/resources/web/settings/index.shtml @@ -36,11 +36,6 @@
- - -

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℘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ŐX}@}H)fuoKB|uJbRg2VmO@L&L_lwGp>Mgce?(rg9;SSJF zd7CXMB{~JQK#C-K+H@q-(v7(UKutrw0bRfcJ@3mk&lHurM)zF+1gk8(gL%99N^3mB zlRzk6WLxDXRMV3;eEcp%Ed)@Zi%5ogc!E!!T$|A)#8gcs$8@)!^Co0@3e05$6 z2;Y1pD{7I`)jTp23`|X1@v~bT+?FC*))OE#=0@mY5Z+7p+4@DAC9F=TtV+(XBpDUv z7}j9A_$c)8pPRH^P2{iUPOGG93$szZ4l zGg@J7*DQ}hOYB5}uZ`s&fF$%IB3KH`Ld>sepG;RQq=)B90%n7Sc~1?(>C^-XMWbt1 zJAy_YxHa=x{=%U7RR4$7Ar;(Hn1PjOZ4^2dx{Qf{=-25rEe6oxgJY|=U80iwN?jwl z6{2$SC#p@yT}?v`))8=MR&`2D6#wQL5-`mFQThsI_*v%0a&N9DH zsSnVkSI;kaawy3p#5~tXnQg;`6K(FTCJ2|j9~$=2){ULnV{zbLL^7T0hg!nolDz24`+Urnj ztq^<|icvp0=q|*CHbaPG$rW zw9)t@itPagwa_MyvSL>q=ThY(t%@j4gTHT}w4MRLzp%TE;rk;rj|IkhNl8P3(M}&e zIc-a3)MEp@^Rj6qeo1tj)|v=t{XttWY)Z`=t-JswHSPbOUi$GTXvewM_u5+FhzG_# z`J^BGr0|e=h%(AvnUXCpyZl}4L^)j?J8=*sV7KA5ooTqCk|}S1 z7*3GkYfz*kln8jDZ1T`0t7}Y^Mbw&kB*qBat5-C_6_=fZlN^>II-wV8b#}}>;#`5`XSSuGfd_V(m=BKra@H}<{bG@y0~$8xU<}Gc)QEkP~qw*CBRfsS=FHzMbP){wiDYp_(^w< z3?6oc@G;i15^lp0DJy3wp+c%mKC<@M5TpgCob!L=zaN&@GeKB1^jC*Te++`+lZUXz z_vOS~F&mMu-V^h=fhm%Z;RZ-Clvgbaz;5K*rkt*+Z__b1oRn3{2H;Q0Ege9*nn7>x zCx|0_M$kTWHtlgrvl|^bXOEDk60d;8ET4!1vVhD5g3E_#Va(XY!c4)-Emz3Ah?4w3 zG$P736Im5l0$w!|>lHW8$}@%xh5!(rN9v1(^n4R2rCBDlrS2jFSt{_rix$<)`?9(N zeP5>R-BfDv?Z}bR6=-E=O2E#zN6Au-*R}8YS90IomniM0wB{n3Q*q9&#P-|D0MvyF z=qjb90Rqk%=z68iWLF`!Tl@Q#1*iGTfAJrySC12ExcDSCi8~Qvfq@w09fC0ZFGYVG zQjWqkX5MR>`Za%Si}G^BI6x(OIPyVdTi4hP)2jvtQlMq>#CA@vfx+aAAA|+*Zfp>g z%EiYTP#jj$lfK6o@_gDwZ3h?`#9=yDUhagNqSN3f1OT?4TIk)l$k0F(k4QgC+~t_h zj;mMy{3QgSAGHVUY0Gu8#P@fl^QVYdsf#6}lW|Fb#v5%Fq`C^DiDT6||VL2W%QicJ@k;0pT5C+jK7Qh|D=e2+`Ol$(}zhuxTs;&y({Eg;C~ zW_hN@pNIPqnb&i_Kr_KQQfbFkN155ii0=;Tkk{}J6Zxe<;lU2G;f6^pD|C^swV2+g!_lW`PWb-3nN{$0;os0=$c6d2m}0F}owiun7m*vc0}NVc=6-X+nZ;bu@>+ zap;Az2_(oT$1MjMRq#RndWK7Avr^6i)hU{mz|1oB#K7-Bxg*ZuE+r)d=7a26fv9$| zc9Ji{#xMY}$WiV2Gu2)^wPdz;k`@&CIoTXmM%NM<7GF}POS5MGEgfHG+T8g%wBuh- z0EcwQIKopW87*9Ux2e>#Z8(8#P*&NdJ&so8<~$>_KyU>MYQGqo^x!hr~y6cB5P@#o4)pS;CBk~%pkB^6}J^xJt9!%Q|=eWA+C zI5xdJS2r(vSEx#v9dOVNpqUc5;0-InWN~$7)wru$W@puc48N3o))r}%FkjUkDiCl? zzyCfd;-s`tZ8|-N&NZ`8p>CYXyM#T$Oo=gIzi+)XZ4|q++>tcJHCE5yL#OjGJ+=I(S%_D%6}Mps?w zVdXOR$cRri3u({5q`cA zU;;|`F#MOT``m?Txf}(h^dz)PBIcdoLOg|rQjgxmB>)K{zf#d$#&I+^hmJzZSH#8h z!!H}XzIjNti+f*nXc*-bZdDE1;Jpa*Y~Zhdv!o|~+xt=8 zFlIj85OU32VjI22GC1PDKYinL2ivi%-PfPI#I0GXmDDm6Rx#zy_O1nO5hpIvYVsVm z+x7I}@~Nm;?Z`L!b*$Bsg*~3~LUsS$`O^yl!b0jy`wKuwZp9HL3&32bLYL8XU;}w& zr;q%dzBDeL`2tzNat^gm@r{C;XYHg+yis0c&(Qfe>K;#QyJ5-ogr~a3*OTr+BlChE zC6;yWL~4IxumQ23UH{*||F+=Z4ezUcM|bUAI~QO^76d+npiqP0AHb4&`2pS6K?h-_ z%H=oJ_~j6!J=W30-_@>yAJ?T{SAOD?Vsm-YiH)@SeXAQJV5u?PV(az>0V@ged=r@| z`k_NqkVx{Y_KA0FAMausYdPOAKatP~`ezRoDayL^{qXe5{ML1fAW8Z6E$@dP%91OP zs9i8Ed<^<>4HPp!II{$7W?!=W*7YXEi*aF$`A8A>T+mT22+Z_YEnuro|1oLWYr4z^ zkYQRe!^gU&Nu<5_M^bqd*VyKYtJe2!+~lZjFu#$5ogKkG@@^Gb47A8SK^i1z z-9H&)-SZ%oj-vY!G%ruLSLMl9AUH@PJ%1t3nIlZ{Q}z6Y4eMfG?WC z7I5uLLTqod)s{G^X!3O5cLSbK8jPQt1W$)5w{9T0eaTm1VT$Wr6c+Q3n^M5NzIBpW ztBbZA==DWRpS5u5o6gmHN4VlRy4`mqvbOTkIwq(}P%#^NUk_#-SH7J2D*wm=HCvx8 zbmy@{mgj;~WS%TYzRa8})2Gx2RcBFM#;<6~QSq8o8(FvsoOSInh{%_QwdQJ^N3qto z-v&>7joFvp#~Fx)Vo2*IhgEyhL=}QjcYg1{NWHY`###9#Yc;Jy!_VNA>R2s|kB{K; z2rmtVB9n&d^!(!MBz7{oBQr}Y`tPyOJa@@;4LZ-(wOB2w1@&ww09ciGd7)k7W}+kG zGZG8?YAX& zcL`F;`k)C@Ai86j6sff3l-rk!xKUp*rfy^|fVVM=#!)14cGDTZyn2e>D(Y1wrPp{p z(6U3=PLA8On4MFFZJBj@s12Yb>(ekSVyS@T{G8zMR=Nx0r8k)soe@_h?RaXlKAFYN zGTS127Q$z*cH?uYaQCKa`*UeivFi`l{cgE>PFJS5iUczQD6H6stt#31L8>d$XKohJ zz$L}lpPwwFEJ}cbWfS|iqy;sJabMb7;z=*69 z@x>2AR}Z3O-zOZoPqqz&xElniG4wDbxFn(6!$W60xpK@vM&_Zbp#Jn+s=IHRs_G1X=v=XFE(N(XrUx-98t?BW(8*u^x3|z_}!+=*#zgVnv z?a@DxgRX|h{e${KtnDv;zE-!e27hgZ{kqdi{r`2_B&f7uBU<9IF8k6wn0WmZ-5bRR z>CX%^RVX`e{Rg`wYsUVh>|$9NU49Ue=smfF+HwO(FS< zLqpI!D{ly;AIDQ_R2;MA%@BqJ7p|4oB$CezKOwRZq>3~$G?r=elvP&Ny8F@G`>`U! zd6E>3H0&9vZz>heGku7`fbKKo|2kK08wOvcqyd`sMVogh39sNyGlRyTgn>K`79|R3 zCj9q2jSLCG<0rUg`=7vA9&9w`@#kN$VyZb?q%-jpt5ML?q6IZ+$7+Lg&nyw0SN0+N>N3Smp|Ic z1f|I^$&>f_Z(bH3bA$r-=MN{%dM0k7`=?sl%Ko^|Ctt7E>A!Djo%0dPHN|AT> zMCx>@JtQC)Rk8jNkKoDo84F9Y{&xpfdo1~-P|IeTMAU7BXd1z@K?uvjUN*a8otN;+ zq00EZhPXmAop-aQPcdaXsy}5D_lK5%15bNDONd$yov{PtCo=A`m8e}XrV|BV_;F%*~cMT#)6d@oq)fu6uC*r4%4Anb8|R8z;i?%27W^oaTFADdcjjx2_{W^Z3F@eIE$ zrJokxEucdoPiM%Yhld`efmuc3ZV)EQqAyTmne`$iu^v@DASeF^iBO`(6u&=;QuFjpAosI ziMuXabY2qryK%NUk~#LOQsTCg@@ol;_+#3_!tYyVrsvafdp(C9gJ;>whMoos8p&Mtp_xX#?;6yCDaAKT6 zNLjz64EtMU8;87X3m8}h69Kv1mk-#^tt|!cH=Cv#FSzQ8ERNE-#Iyf&3u-V>_7*wy zdsgeF;%A(#0N*iXF}i1K8g6K6H;9|!S>^L_x}z1b6HSZgFj~AwYuV=2?|P zjR8Gk&Q|IiHFm~gu1&R^%rcld32=mX-SPB=B;4H~{h=qypi2IP`dVS@B6kP0)q5l?6ZQ2VnrUIBbo5C%5_h%Yn&BPxrf`7=upP1JH%YAWZjb_wZ9Ao&|RZuu-H2 z6{;PD2arY8I~nUztjBkzwi8rn`|$P$xwXk z%5&a+GYeNSym4v2%tD}^g?1`NC`)!4xjNc^kk$`4M|kS6@$?u{Dx4h#fQ^s%?yip; zK>0UQ{-}NmW-ri79t$G>wK6ytzR;#^I>`PG?YtM1RkC?tqXWkhZ7eN9MGkB?IpE&N zy=l9Z{OpDts)Xiif5WP44ne9bSeZ{M_rb9$t2NYQ1d)&#PB!_h#}6DyhuSw;4V88Y z%0P^}95M}F{;{9R)NFD1XV*xDS+%6%-^JvrkE7=MTmxQtnLkcMr`yX29a5h#+>u*4 zZC-tcY%Wa8!Csw~|NDhVLZZ4@s&hMeaHiklP_jGK$zzPm!f1(4%c+`8;@euFP~BiF zORpGD5f?Wyvl%ZA24?L-C@T9F=^sjq4>^MPWE5&tnehoP%*(x4>z;pNHxm;)P$5~k zpji!u1_}!jht5YY9WtnXfOI!BlI!js zdzIt#eu@K+Egt~2akJKF<#5>+Y!20l_Ylww%xG3_%^#psm5CiJm(ANxiw+sQ=wvjY z9phRNWXK%`%z~f^5ZH;(L0!{w>i5?7OF-%s_R#&PS=o;1BYozIX!m1;Lc^Tq_658+c>?PIk8X4W67{oG|SC z1APYlGE@KkSaP1Af8J@@|%k3NRA&4sk8_EMAxMQ4YXLf)X>a`YumX!V`Gv=mek0HMB+{*u8** zVW_Pp=u?rsVIbdHS&q<|B2(a)I8z2BdWM}AF82+`C6wc@4N@;Ri+%V-N+G#4HX#}P z*I+AFpNL#vX_!z_?(tn#)t5R|U8O6Me~gp1nTfrReq`+ek1@hvNBusS(g<)`*cS<1 z@4zF&1>_g8HFKflY8*-dYn<9#urB7LeOXYn?3W88sYm|46Q~Fvx<{9_NbyrqryAKD zdlF*3B}o99pRWv3>)ye~I|>>GA_+!5Frwv{D_A8*P@kED$_1A;VzyE* zoHsw~NZ_@IGQeA%fzX0_oBF;eyDVDZqcc}8JqPtg=V4K_jTw9$i@YRBhz8!sJP65Qv3~j0tLO3x0!zr2>mL+lA>O zGu_F9c?J>Mk+xMY)`)kheZ#Lmm#h}tfB6le2F<@F@Jgob)mkY`LG21gs1+pcnD57& z4w3`ar|i(zg&*qm^-Sevv)Lo`|Jp;_V@D}tD-Dg9cV{BQ9o!^#38ug!r6BwZ?^N4z zQL&cs#V8+H6AeQl=7t6QC|nfC!D1Y$8>2U3fLUH>NKBHRmQ`N!p~YI_hdLNIzKFLB znK>^Lsm?4bt@EsHBsN@U>=9Q%f$1(p;fs4} zCG5gxL#Au13bLge$hvl2S*ScMvO9jl7TIc;ySs8&&3792avii5~n`Ao;WY?>kREahJ}?U{uU3nm_S5i>{q7UuDZWkb`bCtSu#GPHy6c zF=*w?tZew!I-aa3pyV~zj_*h-6Kol_VmP*>SO}+mgNLU87rDJ=HE?B4VvQeX&)j$Q z@|~x*qx_z1i+b_4^4Ww)Ot91DnJgSM4D3o9UH|(&MPG`Ydlt;Y<|&#Al43j?&FzY} zbg2d+qbx1?4P3m6UEGD2w$x3mE(PtXCFZj~2|j?l5(~7Lgh@v7&E7nmD!2gV6b#mw zghdyOWounO8Q<>+Hlj$7wzR8e6t#iOQism ze{nHoF<%%GThkGZw_C~w=T~_Yrx24WD@=}@1C4kFR^nOgnH0L()KU&?RXOV@#dgZz zk2JWr8H43ak$6ua+i;LEM&el8E}YK1+x^1XwezVEwt(*dm0650`0q2}RMZqO%-*9S*oH59 zN|-=^Rng12xkklcpGg0aZ4)d}7Za%jyt*f5+T8qig`tH#LY9lW?s4jDJ8O)dBC>QB z_VZ~1*0iuup_En4>&YzjvT(SmlW!o3?*kT$T`8W{b%s+pomT4qy{mbDF4dT~7XHFs z!WZwl3qz%AD>|!o1V)t}P}u+k*4^?wq%!BGh^dJnUwu+125yzXr=|V5v}|c15EtsP zZZBX*W20EXHmevv0kztSffj>%H!*Q-C)A%lCD#>>qbQE!hi^Jax22^eHDdqttjYhh zy&|IUvpj?5Jy~k{3ok+7)5W=Ep^%x6l_aXY`hg(rY#& zNFK!iY}1>o1;C$l_PJ}$u5L?*=1+xFYtPcXDmSQKU~NMA$x8k%v2;w>rPl7 z=Vy}xI>tfK^2gfs!3UC~fn9o6jmnj`ARA8r-?^m4vdfxlG?g=bm6iAf`AOH=r4!8t z4A5f|Fgy6c;FDOHemVoa${dcW$bXOhTDfaL7lwvf7iZcYB4Wl}`% zgJw?*foj*HFXm2KY~Qv%vs4}PULn82)tk)3fKL!fg(=4xNm~o4S9lQ>@v^I2yVaEZ z)V+iG+C;C+uBqFiurqPXgz()rYI{_KghEo?T{>q_XhO@kZD+quV$%@&$X?j|BAwGCYkX7)_KnfrRdxRF%NbZ_at;82rE)*39f*K3N#x$QgQpn^Q z3vzV+yGtP@RqQG++dGWVXc2(g2H&%mA-QJ>pQ8^X7~RVMJRh9-edki{d)~6t!r|B5 zCpq1!-Y!8J=G~ME!#R2l=3lE)_d*${u>b}WJT!Ym+>U+EAQw@dhN^vb^=}V$3uz0TK$N$oxUwy^i;FW4dDec=DSlR8E+x=@`jaTL0z?acHe-U z{-<}LE#dyhn%M*5yJY*;4T04`;!-&3V;H=4i5yj(TavZjk|J|l!K3?^3v$CCL7yE; znZEkP9N@JHhU9jNiL3g+sptHdw zVnrl4#=!DXFsDG1TtAP?cPhW{9C-SlW}i;9{XM8Lu~qc`J@%(6P%qO1Uhz<-x965^ zq>W9LJw74~xEw8xo*QW+P4--BvSwLyg}P3gC^<$VSU-;pKwyPcD4P7yx&g+}C^K^ey46P}e6+M{N4!9WW1 zw%*PfqaXC$p?GnIGMifKaVl{ z%*a8PpiWY`?z?zZo6LIB0~csCjlH&B{ri0m-s+rrOcw5*R&i4a92;%un zadI%y&%Ty9{EPM+2!#(basf zgSE|Tucci@j7`?S$LWJ|OxjZaxr|j3L<_3OYcTH!!spT&#vB4kQBU|6157#A$_*du zhD#ehX_?Ry9l@nTP5TR4WnrVd47f2L+zNpwSh6lYQ9j0Tw_3;7Qpk8)#U9guZOI^Ev=8zU-Ax@}(r`tDkqkM~E%FGeI^4f$-@4^T(>B}tsY@+`+En6rr zyI(Gcum0;K`tfT|jw4dIWIx+~H#8qD7%8n&p_vduUcQi-uI4fQsK!F#KFh6r5&!Vt z`mWlsW!t_%pVQMu5KIRQI^xPNhkX9k=~+0KCYDYbH#1;Qd{_;nPv7@Xb5 z6RtY(V)jguOo{!lukP2S6(*OQ{w|bTT)ob2#~Xg@?K+wLdY=0!fElST;Ycrf){w_s zHCUT1J{1H)+jI{jhw>QcGH+csNTP>01xN0OHc{LeQCTP4(vAWz%yR-evq58+t6VH{ zYa_W!#+~XsXbx-)9-oThKClTO4SBmjB$NFioMgryg7hU%7IJg~!@0=-Hzl$5aVwF` zG1tc5cg*H~nx_A}iM2IDgc^OQ8#iw!^uD?IqxT&0`_9GhJ7dz0*@(qAcBCg}bBLiB zdfA*;i(lO0Yf$4_5(I9B|CFm~r@;F$Xg@s>iCk%Wk*-jgj7Hum1wtoViI1t@nLh73 z@RFqM>8KeT=}7+ivL}`ZodC`E%{S zs@AyG*jF&>n^9f(Xh(E%C2TFZq}c$+3!KpF5Z2MwZ3`86oHR&9zvcrMJ?Y^R#A`lx z*}g3O-dMmj@0F?Q(-&$Yt*+(KVsv_SW0N(_1EGC-J9pe9ZHo}yGruqtZWGFQ1CmdF zoie#2d%sm?OQzuyrS(bDrZw==!D6=YqcK9G!mgUG zH456w5<>%vY=0giDQcclDV;tM8En&?0Q1zcMLHj_3l_evZ7aV5iEbPgITI58%P0t2 z9)JCKp~r!HtP`c%CMv3?yIf37I(ytpoDJzeW z{=1Dfo1yegjDQzI8fAQ{dY3qWl}%(mb~WRJEBP5ODM=XB7Gf@agj8e-v7sd zOPe_ncce^mmPfCW4oUD@OR%!&O2MKzv5z_SKu6+OeR}1!mH15BFE*hTX7FasnZ$Gj zphHkQ&ulaatOf$-<#tFyD(e60d-Sjv^0lHa$Eex!FiKo8#2I_O)z*a+*O@%V zOGL7}J|&ABfTb%;b+&ovseOK;+ytL(l?Kfc{=i);J&`_6;^C%^AB{R1uG{!!ib*hR#0 z*Zu=CdZ=xsp0$2tl!P0ZkqX|^;gTO4V&$v;-iw@oQSL|d%w(^W7(HZ>k4;Ic_L2MNB!mhNX zowp}Fv*nFTFEK9JayO>fns}CA7kZImMLbKpDsg&3Vhib&e>C$;_eaQ|T{Sixt+ca_ zp3mT>g;D{e_7Rs?pjK*{7^1hr4>oK+pI>rb=2Is+La>=)VO z+3aW-+eloj%dT|Mpv_M! zF};lV2OSux!{ctwa{0e*?D?oul|_(+Dn4e-ztT zvDKIeDOs~x6d{s9c?y<}xlzbgbkE8EWa|o?79XW5xxpfZp!b zWLj5Sr6zRl1_DY?{JD@^SI%xh!cF z3S2wuNRKL@YsH!JQo4kZeJ`YbhFnS7AmxotrP_1+Mg%Ii>ed@j? z56vbwyW#t+-*yYk&`%nnv*Z?KX+&E0@`}PzV3777ct3T=S7zSTt{;7?CP{c7eJ)G1 z04(cyF|VWk(`Cup6u2nWr180D!S|NN9?H-5@~O{bujTVMJxUh?wVZDsG{LQ|1lBw$ zLp=JEwRNcY*yC2o>KxOqS>AMyf~4e}{injomHXuV7Z8oA5{;^oCXLo=_trU$#%lML zS+caH!I3_f6?lEPf7MZl$!*0_QsRArRqOZaZ>N1tlyeu#iD1!g*OHd=GmQPDcr^3lI$1itG9 zNG1MF!khoF_9-JY0;~MY54| zG`rzP2;F)Wn$5Cl$&2qsFAAj7Q;-6e6my=hR5vk6yDbG+!E2%O?4rcSCWvNK3vDe5 zq#NaEv9z1c0n3skB%z6ZW?sa=bxCBDi8g0$7QbwjaB9`1MpbE;d&^v#(2%7@Rq=j^ zehRVDrh}wQ!kd#6`8S4O+Cwm(vkqe69ONJh;d{<6S-mT5VuT%>)u;|>oqsbVXh9jdaBSyk(xNn?I8vC-B82CmXd}9F31Zl@so<&qt z7Dxq76$Qo*k; zW7kDj{=e_E{X_2l#iX~oy?JYJ1_+yr?S0!x&rF&Be#yM2uD#pqG~$?$Y?i4xFsNC5 zdYya*2(Asey49b=f3du})$M%B>|3Mxfg)FZb8j)c^NZPu;6i(j)ab|+OK;UpobV3# zw)*rsy?9qHO*e|e`sU-<_1ishxwJ6hg#{bGbHT+68;$q+40=36;zm-;m^wXn8u5Py zU{;yTvLpTN-%up2lj~T5kz6}*fz6+mqd7o%>FXBrG&Su&U@}}?uV}UR?{I08-*-ZP z-}%o1iT!5znh8Gm`_4w(UwbM=*ZxNu=}(IO{(a|P{Q(7KNpvOzR%jpGt~D`+1N}>D zGTmjJH$pcGusklrhh?f2;=?DQzaUk3)%j*YVCD<+pDq;~lV{;4`~s6iusN4SyktYd zY*Dc^f^&2{WB-v|tJo4pK{J|9VGnD; zZkfUKE)H~~(hYCR-j=5wi?&mDg}n>>55kPC00X*d-WgG($-k3Z)|7>pHfwI2*e`G9GD;B%gAVgx;8 zOa1p9d9T0~!$Q|rdR2wx9oe)wu@=fKqN~JoD~H?8K5v_+?9W~CIlCmNq%!%H;jAyi z7w_~?8@HS*)=dCuq5k)sfZM}MowaD@?w@1~QQUd!>v$K;eRT$-JUK&mq=s~Olt%PA z;ouilvd%VpT=YQ~t7ecO0L_)$b$UoteYKv1#25mbUX@75(x>eg&|lUlPG-nX3mw$K zP8AzP0Kq|hoF_6QSKBl#A(Wx(DrLwr5K`8I0M}K|3Dy)PgbQc3MGT9abe7U3+ayOH z8_gO?NWHZhE#oa5bn*Z9ks(oOG}`sJn&(JcI%<>DA#|oD8e#y}Ma-)Zb#EgM&UIPm# zVL0SOxV;D7P@?8x-tfL77ygN2XTs3D=OpzwCAK0$v72HS8767{DQks^CXe{*qLq)5 zYiq9|lz^EmECl;Qpw_bEO=~DONv+0E#X�Aee2HxTQo%p=kDdQhThl4%f>b{p1qU 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 )SRECR!mpxp4Oh9iC?C-n?o$4&1o> zT}WHMd^YQ*g0cEOb}&f{yOk_Dv(?NBq4CF}AvB^dB)4V@BX>k~^}IzFmDI<0y%FYO zkfE}3&lcHULKH~t(Xa54QIDV06>rR^&8CrLkLWE}y&!uf8zvX2#OVsIiSsskfUkpl zU;I~!O#hm7Z|)I*Zm|?xb0DX$DahGJ5f!8l^wOb)LiLi{p&bWe&C(<}oOn#^5Z>J) z&&LS-9*ysQM#z(r8K(&^Q4p14HjSZLbeNrG;du2M;%F>0=!Ou z?;H67e(5;+*)V?kB9TXvzen|P-IyhZ*ts5c$%WY2q3dzAjy0}|+xcAwU>gY6kMyWz zzW(Fx&(o|Oi*O|0lDHajMi*~fZe-)i-ud>$M(Oxh9#-c~lirE$2fLCNfz|<--FQ(* zxWq_J{rBcCaNF2)T+{(r!a+B#e?=_)<8blZ(7-C$v?TM#dM9F}M-jLV_9RxXq4@sh+iJLNf!-PcGS;6BA^9=$Dz~uVreB;FTPLv|OKKTBV zo_VX%h2O1nnbHCIVx0I9J*p%;o65|-m<`6eW^#iJw6}oGyuGgr;u>iEt--*C*l-Fsv2?s?eIqDnleRAHb$V_>Z_6b!uZEKJ zNy>Qzt`Y{1WO~aBy-;I#^e17m4estoP) zpWeFd(`E}@*x)l>9qxVx0J=clLU6l& z@9JVp2D!O~_g+3#3>Q_P{ivdJY`@8hYhfFdgDVTU*l38~FO*WmrPozfS^nrHEb5;K;iugH(xztBOMs#5MY36;~F@5I?OodU9arzTGUrvQn} z37oUo``!5G5Iqn0^8NWK90fy5ns`?wdQnbhN4$RO*`>)ydCHc-kQ-ih%EzkPK*%rl zSX<$PBOE`v&&Ft7BQx;2EwPd6_?PQyd1j!*Hu~S6tGF@-Ao$mfM*?-9w!$D zd?0#h6~CCT&inKIUGp_(|7IoQb;P`^CaL>T23SbFq^ZW@?xld`k?!X|`PkMc`J_h4G-?$RIVMrMUhaX>3G-8Z0j+jPkW zr!^7}x;fjSEz4k3SIHK##HC5WM>;(gu(7<6(Elu%TmFkL#7sg3%Bgr)$<%T${CioL zS^Lno${y%j=-f!f=zpHP^XI>woP0cYavXjk$IJ0{gnWl;R1ITWp$0?36X#H)5~_`K z$wxVG%-4SBOS_J%NuG4H1}IKxavGCwvkNO(cIZ_>>~$N4tm&*?xf=6Y?UQWeFuH1+qKAx|YlK>4a-)q%iB?vGD z{hIPlRrZsUGm%lRZFNWYbJ;riXg2>Zir@nr3WfmyudEeY) zhyEvwp&L??6Z(*J$#J^K@2!uyvlAXZ_PP8Z(fXa)ZM=NWuWFC~yRKS17RXl5?}c?_nivZBMF=T{<^Sd z19zuBGxy22eEMAznCqPK^L12bLb(jvzl4w41E4Q0`ifUS=Ed~a6?}hp|NLWdV1G?f z{w>GRboP@am(lIoiG^zlHPF!JI}>_X+l>5+7#`M*zA6?aXyt7SMp$M;%0X+~W>3{G z)_}75%>cd2W#e)b3%5w-85_C(dW1rnor02*@&*+Z&5i$~prD|*!2wV*ux9rNOT-h! z+Xm+kHh(MLvbtWSpucg0;)XupT!k;pk>Q_VC*AP@%+)cCH2nSna@OILa>Re|q|!^r zbe}1~=G=AkF~WkQB9mQ6;w=g^O{AHGNQ;z(j%>E&&qKe zW(kV&+afcknO#>Jz!jM{>7qpc2kPF~*EC?q-(v0#M=D=q*)se$ZiNqu-8fM+tIWv~ zz_&f}v^`LYkL9N+Q8A`l6%=YPnG>Q?0RbP^x+A_?CdGD!zP_dyLb}IU3m6`8wwza& z$dEpz-<97AJM_#fYV#l>Y#z~{o@tVDy}F;%tQ0EffA*YQpTb8eNtYh;-PzM5`^%m3 z(V*ccI=Iaabm((y$?eojx+N zS+!YrB~kq|v^l%R3MO`;+J1o(cU~P!(U^Ipp;!m;{0`s-UUr)LJuV|194d zFeC#%Hwwle@ZZ4&cj!F!Mq?-U7V_jd<7e;BbB0qSY-kwuP zYysG|9V*)wS8x2cvvQ!tfR?BEK9);_&-mwT1EkHHu?rt`viRq4)_}_eS;Nr3t$k1- zAjRF!W?Y#FiA25|oU7OfuWi-x=6`IqWyy)%RZ7fmOn zqwTUvX=Rh2VF%I6A(kUpwwmdt$rjto)!C+z={h-`% zP%Fyy>_<}1Jp%={kfidA9hgFU5f)rfQEQ&}Kp-i0(%(XW{mg0QUhRWxidpDQHKB@< zQ0#6042>f*Er_4iUD`53QhA=;yyUAt5RRJvUPXt(s-0fM+{s;^HTdviI2y}q^G%rO1RgVq_k5Gfb=fHMQ$3dSsU z8ak)j8@gt(saRAM+E_5}vr=*I{cR6I5Vq>A1K>S&Q*b_YPXD**nNgC#k2hhWb4$u_ z!!zc^gro;1d(h=!saTeEO?=2Hc$P7ep_Ob#v7O8MnX-#<1@w>?BRM{Bx-HB?lI{7`n?~{ zM@zRwh0Nqwc72a2q_p`%?XjBgcEdQCgPHw3Ta&&A(9%oh?V$uL!eUI;!Q3;B96GF$ zjn8grxG28C%L$1JRWeHEEel5DUX>U_LKNTtUAU>C7zmqd%W7m5j1`w{Vu&;(*(8AO zT`~dgc`8e=zgFgrRCHJ!S=VGOXc79z96ll81&;8&&*&)o3S={=B3__(2ZRcsku~%$ ze}gby193iN_^L%vpF0MI3u)YY8a~CwNCynivKX^vqDAZ!3NX4Ne7&rx#gq-`i#-`R z4-r}ywZz@tI0m#iV-EkJE4)cjBzn0-bci2nnQDDI-$sXCt7qT@&&55RJv~hL_JaQK zAsu|MLd&-{fM4hc?z%G@t%!tXyXCU$(`W@vg!38CLjd4|o)U(fOAovmq8gCzNqObO+a z)P3b-dwoyt7WH9RM87R<`DRYx*NdcvmvA`_MQkj$z=F@wF)w(8lnZdva)S28CCO5& zvxomq%p)Bymy=#-cs0mx?#SMOm*e(L)TG3-*idP4Qm{;6!rpU3pZu@sn)~wT=N@u> zO>C-mAr6HSed%%lloyCU8wM8MY=^bT( z?4yG*rwK%A5&1$J`aO-o$8{*Wo*WKg>w03R;qe3-Q=eLpmQ*vNRg^|Oy`y5{V^b7{ zhGW!(_5xn+@Ia^~8BPTPuwZA((pB_rYdpcCL=-wr@j9<%LmW6bfQZwse?^-{2lin2*l9Z z-0N|)pz_eTL>q%QD~qOd-!DF1nk;2Sckf%z9lhqv?k0q%Y6#M@*P&rmRH z{_3ddXrxiVJdMlfUv@WM_Wzn?gxbLd^A3OLV^z1S{Uza_t6U$kdk@W3fZDY8Y31|N zWhahB^N^t88OWbR4~oKdHJ&!vENg~6gjcYau^kgRxgX^9;6_Sl3H~+sK|2e08Ie?YCKn`mT^e~&ZDjh<&yk=fCs$4D@mLRWd@!HGS_$IDdH?c#op59IF`6|e5 zAx7gL_>uBtm%8W|0R>cNi9wSaG2w-0+{fi@10BEIs3L~Uvef+ziHV%h$oCQnBP);i*f%mzst;yPIAEB=skF<{#B~;MJW@~!R7<#}CY!D$$m}?5a zg!=L;2LOFwt9zMFl&E|U)jdT`3(5}Mr&Yi5X&phjiZ37aJ>h`i4Z>(c?;{%ZXYa>% zTWFMUB?7OlDvvZNA60%0tO@XlGPwvNTDhF7F$lM3g1K_W(SFUaoYpC#a`AGG%%kJw z4lWs!g^Z>d{-Ifg3uQ}klZ6}If31(Eo6c)dsIO#99_QYv#yi%OH)IA4nxI>TzFaJ7 zacOr{r=x!`RF2KhwQ(r> z(hXQK+4F>*OHzQI4VntGwx(2 zc@%hcDU!jF_R!{U*1nL&7QQomOY_7H6QY{Z2*wMUMtMp%Gc@7B3>h2wev?dH zJBll*kt*=8f9prHySzGY6Ibgx@| zZfhwsYVHGCXLE|f=}f3{D1yMXe-X*TIxlb2_MHi!DRjf3nV!s4ewS&Ar%$Y_lOZ#S0d->_DdeHi?6DxPg_3Q-;!NfWR(5HlcntY| zCaW`z3@36NK{SE-2Pk-HX(g-xK%Xmxt_HEEWhFU9`WcpLp=W2AYTQIPtrvv7K(FM_ zUl^E!ghYKlBf|t$jrU0M29)9?A7AJ&rR?f)W4`zAKkOPSl#X}4f;2yIWywp?a+GgPuSQ(@d%@gWy8=*E9_;!sESF<}T;2=%)VY?Hk$Uy#@q@_t@F z4fLu_j}&^rSz(5$j4-t65i*aV@vmC$L=MojU#}WPTvJs4JXYctT_BA#V_KCx+->>6 zVHS5C1AfuYxW}4wjrx4VU|pgGbiDF71@HI**%t}8x1Fl35(h#Pl8p8n=vt)6SA&pX zddD}MWVmS^;7S~p7rFNXWO}H2EF1NN?OLsBp(>!=j&k4r0o}z=aa4**lROqeUZJ9Qjc0(JXdmEpf8w(iFH-k#7 zb-`FDZ7FHNAeOlM&sxLh|~-B$Ysbc}8=>ikmSgJ3(-)@FXKXxiaxW-9?8j znNs^ehU14{^%lrSixk3czRs3HKzn>s{F){I#j~BT5ZcSHbIt%c;SjO2&x$1Eg&!Jn z=9F;HSKBvqA3yK*B@ZhQ5+%_Pl>JnF`$$(PG$8F4Qn0VxGMKZU5Dk@XpxonVNCg!z zxj|Cuw+tHwMp9kU`vJ7ffwfkNk^>3M>O*#)BEjYg7M!%38IfvE=nvddr6fOV4(cIa zIiX%bK%OQ!=q*v-i$^%$Y33~i#@!NbOlO7_-EJhkGfv}BBui_{I;3_|nhf2)j z8hxSaU8TbqD}UK|i(xs+obE#RwejrWt5o%MuC4Eu>QkN26##g;gaP6WAIhd52Nx5* z^BlYM;+-amOMkpCp+gDX0;2sOn_3eOzi@66P)1VIJuDYxzq?;H#^Z zs#IozD3(o)q086H+_tI!v<&a%u5Ne2Fqc!CH9-Pod>Mso5Edk>>?~RdeEoY?Q-3XB zIF`rfKH3(^K!2)FCvcMqpOg1NSA+DdPy;j;k`W}Fj#R`KkA7rNb>zDeR5X!7d6glp zW^6D!8=_n{7AduvtHU3F&n-;VTxZChT^XHvG;)XmCHjYct?A^9AyiHndx zub^;OdrsS=Cy`Rz#!HKxsph;|k}tERrWpfv%~>((&*2)zx3`#gSAXHwVMuoRxAI`qUshS&k^_? z$9UQq>lMFyr~g$sstfE^UU)7}QMopw>%=30VV`6f+_rWzbTMN6|CC{7DyF=B5y=rs z4otqfyB*3ZkBg{cJKXXBr1td&oebw7&s2js@u=rX+Yc{iV|cx4cJeoZ)aC(Q!uF|k z4L`3bf{Oe+JRIO;#k@k*Gl7FFT!ruhVJ$po;j*D~4!3b~@8VKMZwsPfbu9Q}hQrIh zbc8M_4cX`(%Tg)3xw=4#?Y$$e-Og4#x@{SdwfY~|*HY;%!X?8O&(TIv(-CFBBT*Z- zgZxsPh9r@3fJA5N4M;jEFg6b}@sU*!t2RygDbWTLX@UX_2X;`3k}bXP(lK{oPtRJc zscB-s=cT@Z^Y1FJ$n-`#&W1J*2ug`?J>sf@g!d&IVy zee)A6@Z)y2n>G0%L=m7-Y&kGCY!>dCTxfI(426y*>WoDO{OI}$$Bbtnj6rBtJA$*Y znx8j)*B;EL7faP?vE1&FdY4&JH62;Z2NUBQZ7mo1O+DpgLxjtgDi1fymALTk43x~% z{r5%Jxa9Bb`JQU7Cpy{CkkiC+z^gKW(%g|ELo11pV}`A_pI|QRWoCk7J`}9?Z>ycowXo=o~CW0&nZU-R>{ei0jY-r3BJ>IePM z#Wi-62iBCpZ|XWmd0!~iCY<&Yr^&mzv>3&M&fj`9b8YLUAy=>J0~}I||IwQ;{+a3e z%O@hFCq~)gG0STHIl1kcf`Ymxg|`jaKo#{k`+2M;9e@FnHMPn8X2d-Ap=G}7tk%Ac z&m+Y9{7ED*&~kZBNgkU0)R4iF+AioVWP6kM9id(!;7sv8KTKD(`>%XX`t&6SX}=fQ zP&K-WVwu}PZYm#3jROwFpR%&ZNt_(*M{%isyc17=d}5;>)U@Yb76?>{K9gVbXO3$d z1D09{F^$ur>W+cn8pUS8@tD`5v?KcafACRIUiwq=&rQ3C$64VJtP{CcjHO5Mh>zyC zXMNtpr5%H9<#vXi8M=aaO%cl^^)!Z~VcfSGQ3NTXqmp|zFAdBzVvACM z+}ps{zAlL4vUw zXtmTMK|Xz1lu0(hmFA`sRV)y}D(I8cGr3uFE(jE{-3(sH8I zy+qcs7coPeovVdhXkZfkPBaK6G#(bV95rvdGz?NSHMCt}_{a?59yPMM7lRu00d$YA zyMDc$cw|}Qg2omc$X3MtI@JLD_|IV{BgEY?iRgXVzk>&ZWaCEX7f?Efp=vz^h@3P* z9rC!04{8>42g(3$)Tx1*%61?XVGy4ZAF;~*;q{V7ZEv}Pib@G0XmjrvCtiIKk@N~o zc3!xOuhgDV{lqiDV;&C5pZUXx!6;ekabl>L8rPr=Y`YCw{q^hI7Qr}z9`!bwr|srf zzx~grxZf{K)^9Tm$Dl0YcOSBTO_67}y}4pBGX8o;*KqcV3kb-|n>$X!xxEKM>o3v1 zvfzfKoMJ1(h{R^uD99HYfKW03gmy$TrFO8w!o5CbUCDxy^i8j*tnS zdP4C7&L+0iB%BdG1ZcAWJA`eTBfh`XgPz!{t516X&jds2F8p$Y-}F~q6?_%zDsW<7 z3QxRAO6j+f8?S32XpnZ8hMZ6jnF0dm5^Ga{-jHKqvzcoOy7>5Xbsd~q(JK$ZNk*3slV0gNKsp%HEjICAkp~X0Ep43r@Nhiua|xsC?_$_y=FEzc_evF;hE;0 z^XCA9ynT}kxo?x$nE(8IWLGMN1N0K7>fj7#$}gn;*>>)a1t&}u1X?N31){dbZ8QNz&&)(4b!RFh6)SlI$wmGj$*t$J>1F%JEY$%~DGyGCQ=*Qgf{eC(m5q$UcH~(WND`*XHr|{Ij)G}ZCTL8PvNhr1 z%j3$$@8}?B>&$}+>VF@=nIT-WC&$LMOFAqJ)wjXJ108d=(km)$f&mV}dSim7pTslM zznVTC$+%F95=col^G}k097CE`zcsCtT9L+x(B@dbrWiB0{RMbL5Bmx(NCz)|3OAM< zb}z%DA6`>zNiE^-EWAqy2OAojZ80uHuLW0x;+9m}m&?RFmGW_CZJgAf{rl0NIaf}@ zyFoQ7MW@^lMafVRDaON8^A53vl!P-sFVo#0yVn$%UNuTZ1!?%SP3`#gmWUmhO*r|| zVlP5P)Za!SR5b~Hdj%IgE+cPZzx>ZYr!$aju7Vz;H>yq~GFP{b>vv)F26Ps0bt7M3 zWh3%Ol^s2@ge^+SQs-$!ANxFMv$C>Hsb~}(E|2zv zKxzR>ls2xlPXfSL;yUJ{UAk#IeXZjnQ<$9e(3lGL{V|{>pN!rpgCre8N6!TBLABhL zvnM3f8_izlwwAHfc%XS8j6!!!@k=(2>fxQZxtRaz9L8jLljMjq{)g~d1{A zncg}Sp)cbFCA?s84U9}jVYXUf0nwyFj^}oYt>V*&CTIy;B8ckNev%Q#0Jc?e%%CPS zQAHWj70eEGd4vZ>YRG!=0b-^fvP^P9`F1u+JWVmWTI2xEp@Pq$hZ>*Eo_!_9)JZea zNbQ$`w7AEbJokocg^Pd0g0ZHV4wtccr<`~h>vrY8k1}wuAs**6wD}S{QNO?W_S?5? zAm0vB*qbrgr^)bU{51Pa9HWOrwiS1v%`y`R!%o9a$Ob1Y)FPM|h9X46?<_1RxZtrQK_m(*oS zd{>;h63ec`E=j;4d`ADR9DPvH{o7nz9gQ*UnZTHCUWP2g!0Nw(olYY33k`=Q;6;p_ z+bIWi-AQ?W0Q*6*ak(aYYVy%ErAHW*GLiGvBt5CB>Qi6tcni~Hr43XUN5Q72 zS)j7ThuhuW+E``qPWiF4Eh)y?D;c_hWd%}ZkbOH|uZd6&f>YtZr~(*wwxf}cLn6}E zL>%#M6Nn`I6|S2u2R|ci;$#6U#G{fO&oQ_<+7q#v^0;kLwn&7ecrnNiw99yvn)>up zCGhi2(Jr{i+-;3RkDT|P?R%M2Qd941XGJM@TrnRrTH*{Hv~l&``}_;iLd7{Zy`S`Q zze8!~qjF{k-nC4XG=S>i)@;`M-;}Dh^Kv;2pCviL=xdUscqI$Ra_LL8a`l0YUG(|V zoVc%r|8mnnMf$&GIc9S-p|-|vyje(T)ain*v(YbT=oA#LDWr~XZ`LcNZ{7;NMPU~6 zbMcyjtxfKw;C%YriJ~>zK}v9&Z^tfQg;>}m)ZhCIz1o6v96Ar^{>MijBUl1mb;oi; zr{ZKNzn{gr9JyE(utX*Y*U<;*37v9?JUes{e2`&uC&KG|Vd-B)*P~~{DC#287Rx{O z~G8iL_~ni zgM`X(C%`d-GUcoV7T~k!&yKUw>@_)Mfr_`%*Rin9d}7d29Op7XMObpm`jTPcl9t{E zLyxj$*}H`^V%i~+lY)nw1mCth(URFJhY*2WuX1sw=q@ndkl>!zhb$UcPs?+EpgK$)z>_n^PFJ4h;M&4DZHi_>QNh5 zYGcte;)wD7cK(fQcy}u<@8`O)_7nf@tKsnN`P$#GAe5kzQkr(*wtxdf=hdlT`Db^h zMwOrEg2f_jRf#+@#-GZoj};ya2-3*j`^{#`mS*PUY5gx%}$K}8GnuETB{M`gPXFys#nG#oCPlk0^DtC znrfP{ZHjzSE0m;lMW@_@a|KXL(hnrS8xYHmv~+)eXeM=sra8Wtr>>$gmHg~C*|zrG ziD6y1Ear}9sb`GF3pQYiSq;?}GaNZ5`TMba4)5GHWu~BkN*HyQaCMB3scff$PwMEn z_@I@=aLd9?Vz%X+4VSu#st%wJ zA0X@BI(Juh`hs%X*Jtu^qYJ*E|2%@o+mWE){gk{?=4*;-ZN02E%R$JIoB25Hw~wse zUbrc_d~iHc8DnmsDB;8QJ!R2RRih`fn8LPTf}WngV`oypPK<<2ch$mA1zmbFu*#x*?|C zVCD14hrm@wvchX_nf|?h*AyFl^THKGfJ|XGWSi^a{gs(crWTR5J^kR9#i(_prQDY| zN?2Dcz_S*NX@5aHthvhlo_)aF`Qe(vs*WR|czMAhyF?5M+BZbJ(Gb(d_r~71IP;RSY>XTD4*VOf3Kb7GxsCCn#bQn0rU2u(cmdhT-l|UedTdH1p zJtPzSPE?Ks68{A$q3Z2vT*vHrX$tVgTf=#p3yYxERDRVK(}a^fyN;X(f-)VU4Lgqc zEb|=e0mi9;0ZETo4wM`vv(xQsH!c`}+n0N8O#hC+f>q#8&-5`M;TIPsd7=G-e1A^4 zxf4XkA}$Xkznvbb(NbEnoBRxW;nq~r>MU`^mUktte$}vtjhEPKi%Z+PUo)rgbxpzW zPv83a%I!x?$I@a{#|dxU+V$u9z4D(NJSX@w?Of)_L!u0|;;}Y6_O-=^&AC!8G}Mu4 zn!JDxvHx5cv#|r?>`xz%Ln7fpAx71xjXO0dx+mgiU?aZnSV7Cg&H$>{+Vrl6c=|@a zuHX7$M0r|^e)GWPCwAUUF2W-Hol-#dvz!3#O{t*qr*)*xB3ugm*;Keo`t66=+Xr|4 z;T#|m&uFaAm9UewYL-b3khr&5GxMC7kA!?>FKE%!udQne`X4IS6j>45ejCH*ub1?mTa0>W{}_v4 z1V$cT z$WWlyq6v}Dh&+KD^ z4s*u#RaD`O=TBy+0llBilp0?Rz-(`tP&Ph?ac2$;nwAU08Y5ph4BC?0> zw-xx##TB4B*jl6-nDi>lCgfjAixF4A@9H<&ndYVg>uIv~oz2D$es&VccF6lc+vKhQ z3r~A9hyvT#tJcwP@4wWC$!Sc_T3e1>}M{lO@)#~Da+ zuY-Fhqcw=D9R5Adg4g)3B2*nx5(!!Ntdq~HpjQSApK!^3`Wl&1IXIka-Jvl^RyI^ zMS~9<*Z2>!OvSS`(5YoF0##K5mq|YO}ey!CUgwPyY5_=d&}XiL?e zU)A_~(n$VOaz2g;kHCtxIR%&0ntIb*WgI%*OXMCH-86a1^_6a-zL_mw0OIkedC&+PiG~sAbP@FbR_> zl}VQk+1C^a4(Eyj2Bfd-uRwt|j{EW+K_6sS6#tZ(b+3TxPxmznCv+^C>#{M+_bAscgauKP@+ zrQR3n6P_N@`_cOg$aCUL7Ac_B`SekqwkYZi(>-qO(A5-n)N}njPIoxl+V&64?9;c1i^Hhdf9p|M z*A%ZyuPMYpUuMOQr4sbhfLL&D9s*#YxNem{}T+Zs4sw!}2`ev_n9jod_xYM}<&6RV`7|2kZT!BrYuw89IX8z#NePH3NwM=t?5?hw4ZJ21ZMpU)pH(b{tdtXkVh>Ww6oj6m-K zEw$BO^Ck&)!hx5(A8%XP4fRm2_~Pu-X@g+j(5TP8OzU7D>YJAle9;PbYGWU5=pg)vSVpW$5a%;87TgxwW(M^LEU zpMBk|6U!Cx)#TL6R6AZ?#uM_#CVpjfnQOG6u3vX$T)I*wW7 zo|(W8#%@pV79Z-!8Mynnyd+W56R|T^hu*O<=LAB&xM4fpk?dJIJROhP?0DUkCv5Ts zDB}NGlB@i5=~w;76IZ%j{yns;DvXg)@G(#V1WUyum!%8GR88aHbJKI{J#~E4(yZfQ zN<{Clg^*#HzTppDy;7ioB2}Ay2yXqRn2gD{HU@tS+?%(z_O`b+0nd$l6vmU9^!F^! z6Hj5dRB{j^Sk05=V+^kjeK*P14m+c2d-?!Sc=>gHE8&_0^ zYMMpA*B_k5jr=~09|@D%zbxZizow{)@ji-A?GL}?+FFgz{bzcl-Y8!QGpp8E8Nb7L7B^(Kp$%itoKwaXiAq0V?>^R=hi&9!$j@uFtGA^ZjxqTdndpS zGv}{wEfN#}c!}o0A446CerbspwQaL9*rFJKwC3>T@j|UMgF%AJRHqYWG&Ro$9dP)t z?fvaqUTYD7oD6^QsCw`mYE3e5ZCr>CcLFs@GDe^64WA^w1CHK=cB*%QD zzv^(Y8ZF<VRV&!xLN*`1^I$+`6Z)=>3zv!5%MF?$wG71#Ge6&j1)e_24yt*b zcdUtLGZOnNMifyx;5>od&m5%z{ShO=N^>{qv%QO>WdEByh0JCX;IRq>ApBqRA~f=`CDYjz}GyP`M`!Eam#XX=Q#_)NfWX1O>J| z=u~Wbf~Wd0cN~+?U128NA@ub&2`?pIeIF=s7nh4)j)1*yH!(YGr)hNJ{n^b6j2nLM zJEv@RwA+B;+pvJWF0NmV6$i^57M&tO+>BYV%z+)N^A3wPuVxTZ=JQw787~zRqEOtB z!leQpXy+z=yJuk1hQWJ3|27TV?H%!2d+`XQ`YH(ZgXV6>=^LaZ>&KD}^V^7gIr013 zN`0oSAEfTc=E=sbY@B$S@L82K@GmJ5o`M}V zxtb}nRpST&;pq*M5As@8oi9WbBqli0%ieWpEfq!ELI$I}f6vQ)N}u9p0+M?5O89U# z4xC9Du*~PdT%o)xDNbgT$hUho(emUPAbweqhFX3E7R)Kf*e#Aunx}7=O^3&dMv0DYCW{>vMetCgS;Gd|bD zzhgG@0^TbGJ}p3JpkK+7rR10p|B`4lS50hCD>n^DigmE}L3K*R{@GJs*@paHfGJzJ zi(0*^`Rt!dKELPGD6c|HOI*q_>YM-$*33PiRdyc2Flw)e^rz8l zKxdpoNV^Vd4b^6A;Vah^i>29y$#T)?4*cuMrK^O>&#}f2w7KB_DrL?u@`InPtH$N4 zHW1ZT$2`T~cN)FLaghtoB=xOMqIg8u<1E(xP?a2dA1U-#&#!Z>?#j;!$1>xlA=9UV z96G|4UGG|7tNo;uGmRuz;)!63{K|n6_vi#n-u%vQ3-|joI)o3!5b2bG9C`kv|586= zDpxfhKCG(@oB7eBx3c z!2EYvKTgv*1ZmAoLT-XoZxt(+r~UHu*2f~V&xkgY)Cv8ilowY5T+$rk3G2+PE*QN# zf4FV;2sun2aI2PE^q)A3>_-~Po*%Hw=RN95cvhg!%W`%_I-5^)Po=*l6%dq1TmT{- zFml7o4wUMP;r*ehU+r>)I+k!{aTs|+3%7v=sd`Ugxen#FZ=8a*0jXax*&l%djv}F> z>rO)1X&|SAFf#+>-Ej?AbWlK`k%zhwY3VNmv(-rBci|&-dBj#X!h-+RA%kBo5bzF2 z)EjbWnFaIJaY#qv!DvSBYLIzmM`bqa3+(c&^G0}I7Dp3x-jeE1sjM{9 zbw}C}4}%yUu^&-FnNqVDngdI>2tWlZU6bdv$Wyr zW6UsIGP{~;J3r5ANx-0B+SGSD`^^O$<~v(Rj} z^uHvrbu;2eLIUv=NGF`{Rm%?BRkk_jzovNWHeWNtun{~Pk1#fb+t_Sxe~eFma-lpY zkCQioK1k8t0~3=R0k;b4_RWSeK2`7k2C-xB8Cq@av=^E(Dldmaznd`WilCy!Vo83E ze8HjqPL>QTO?dM@6<{c<6HP?qPd&15sGI_|*8%CTfN$ffKcWuhI;LK?=@#zewDFow z>S@z7b>U4r_et{+=7^icNd>Cx9br800;kBBj!KF!rf!}@c;N*{wp=eU7+v<MWaA^Pf3a&{61t>I^X6+ zsrvIUp0Z%%6WpH>&pAf_Fx_O`@3Ce}Ry83A+uspr2<*=tWJh+DyvY_yI?}L}*|A&X zFXjx%WV2EuZfriklDMX*pLQW?pfBOssf|aSsh_^)XLX!J2FO$;DfO^!x z#il59U}?O;VQ;qH)&vdyQ7JOq(9h?5JReXEcO5pJ!Xo@CBfRP;A8Qv6R9QMNp;tK6 zA-yWNrP!j4I2&uu|I%D#Glh={=Y*2Zm){N7{u4ZrIZuBk4|u*jM3_Jn@g7(>Dk!ka z9SeEqDw@lWKutQf`7G0iDUU4p9<(iw1bfX>C7HFm^Or&6UJ_Ls2aL4RlTLH#pH^V; z-R$SDWj2s@Ar2nqzw>cA$_ym!56I^HOu!P;G>iLWwq4qjpDzinP((8USADvGZu#=PR6C1pgnwQOhTET?z*IBxB<%0Ab8WdL!1UiVgqS$O4gCD?E(T8j`j9wq+L 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

f+f))OEkFX~sl~09Y#at^3eH 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 literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/DamagedHelmet/Default_albedo.jpg b/interface/resources/meshes/DamagedHelmet/Default_albedo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15d64855c732130451cfd511d61ffb07b2d97e1f GIT binary patch literal 935629 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›SgH}ZWE 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�IerS>+u8$I%ioz!lB85|m5O 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�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 BTtWssko)=ry)h4TKtFRGvNW5YrY5`m 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 z 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

-