From a0c41f26d1fd80131ad1a2e8bde18ccd7b2b4955 Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 30 Jan 2018 23:44:00 +0300 Subject: [PATCH 1/5] FB11855 - Change bubble icon on tablet --- .../resources/icons/tablet-icons/bubble-a.svg | 111 +++--------------- .../resources/icons/tablet-icons/bubble-i.svg | 51 ++------ 2 files changed, 27 insertions(+), 135 deletions(-) diff --git a/interface/resources/icons/tablet-icons/bubble-a.svg b/interface/resources/icons/tablet-icons/bubble-a.svg index 553636bfbb..6f9c75a0c2 100644 --- a/interface/resources/icons/tablet-icons/bubble-a.svg +++ b/interface/resources/icons/tablet-icons/bubble-a.svg @@ -1,96 +1,15 @@ - - - -image/svg+xml \ No newline at end of file + + + + + + + + + diff --git a/interface/resources/icons/tablet-icons/bubble-i.svg b/interface/resources/icons/tablet-icons/bubble-i.svg index d7c8948e01..567a36d7ba 100644 --- a/interface/resources/icons/tablet-icons/bubble-i.svg +++ b/interface/resources/icons/tablet-icons/bubble-i.svg @@ -1,46 +1,19 @@ - - + - - - - - - - - - - - - - - - - + + + + From 46bace97cf77acb62e5913e9a06e7915ea079bda Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Fri, 2 Feb 2018 19:08:50 +0300 Subject: [PATCH 2/5] FB11844 - Disable Preview enabled some time after unchecking the Display >Disable Preview option. --- scripts/system/commerce/wallet.js | 15 +++-------- scripts/system/marketplaces/marketplaces.js | 28 +++++++++++++++++---- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/scripts/system/commerce/wallet.js b/scripts/system/commerce/wallet.js index 46672a3f66..6c3a0a5488 100644 --- a/scripts/system/commerce/wallet.js +++ b/scripts/system/commerce/wallet.js @@ -561,14 +561,9 @@ openLoginWindow(); break; case 'disableHmdPreview': - isHmdPreviewDisabled = Menu.isOptionChecked("Disable Preview"); - DesktopPreviewProvider.setPreviewDisabledReason("SECURE_SCREEN"); - Menu.setIsOptionChecked("Disable Preview", true); - break; + break; // do nothing here, handled in marketplaces.js case 'maybeEnableHmdPreview': - DesktopPreviewProvider.setPreviewDisabledReason("USER"); - Menu.setIsOptionChecked("Disable Preview", isHmdPreviewDisabled); - break; + break; // do nothing here, handled in marketplaces.js case 'passphraseReset': onButtonClicked(); onButtonClicked(); @@ -643,11 +638,7 @@ // -Called when the TabletScriptingInterface::screenChanged() signal is emitted. The "type" argument can be either the string // value of "Home", "Web", "Menu", "QML", or "Closed". The "url" argument is only valid for Web and QML. function onTabletScreenChanged(type, url) { - var onWalletScreenNow = (type === "QML" && url === WALLET_QML_SOURCE); - if (!onWalletScreenNow && onWalletScreen) { - DesktopPreviewProvider.setPreviewDisabledReason("USER"); - } - onWalletScreen = onWalletScreenNow; + onWalletScreen = (type === "QML" && url === WALLET_QML_SOURCE); wireEventBridge(onWalletScreen); // Change button to active when window is first openend, false otherwise. if (button) { diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index ee3a9ce7ec..a5ff9b79e4 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -114,9 +114,19 @@ var selectionDisplay = null; // for gridTool.js to ignore var filterText; // Used for updating Purchases QML function onScreenChanged(type, url) { onMarketplaceScreen = type === "Web" && url.indexOf(MARKETPLACE_URL) !== -1; - onWalletScreen = url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1; + var onWalletScreenNow = url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1; onCommerceScreen = type === "QML" && (url.indexOf(MARKETPLACE_CHECKOUT_QML_PATH) !== -1 || url === MARKETPLACE_PURCHASES_QML_PATH || url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1); + + if (!onWalletScreenNow && onWalletScreen) { // exiting wallet screen + if (isHmdPreviewDisabledBySecurity) { + DesktopPreviewProvider.setPreviewDisabledReason("USER"); + Menu.setIsOptionChecked("Disable Preview", false); + isHmdPreviewDisabledBySecurity = false; + } + } + + onWalletScreen = onWalletScreenNow; wireEventBridge(onMarketplaceScreen || onCommerceScreen || onWalletScreen); if (url === MARKETPLACE_PURCHASES_QML_PATH) { @@ -480,7 +490,7 @@ var selectionDisplay = null; // for gridTool.js to ignore // Description: // -Called when a message is received from Checkout.qml. The "message" argument is what is sent from the Checkout QML // in the format "{method, params}", like json-rpc. - var isHmdPreviewDisabled = true; + var isHmdPreviewDisabledBySecurity = false; function fromQml(message) { switch (message.method) { case 'purchases_openWallet': @@ -548,11 +558,19 @@ var selectionDisplay = null; // for gridTool.js to ignore openLoginWindow(); break; case 'disableHmdPreview': - isHmdPreviewDisabled = Menu.isOptionChecked("Disable Preview"); - Menu.setIsOptionChecked("Disable Preview", true); + var isHmdPreviewDisabled = Menu.isOptionChecked("Disable Preview"); + if (!isHmdPreviewDisabled) { + DesktopPreviewProvider.setPreviewDisabledReason("SECURE_SCREEN"); + Menu.setIsOptionChecked("Disable Preview", true); + isHmdPreviewDisabledBySecurity = true; + } break; case 'maybeEnableHmdPreview': - Menu.setIsOptionChecked("Disable Preview", isHmdPreviewDisabled); + if (isHmdPreviewDisabledBySecurity) { + DesktopPreviewProvider.setPreviewDisabledReason("USER"); + Menu.setIsOptionChecked("Disable Preview", false); + isHmdPreviewDisabledBySecurity = false; + } break; case 'purchases_openGoTo': tablet.loadQMLSource("hifi/tablet/TabletAddressDialog.qml"); From 151f20a92f96f9bf615963eea99de92b9833fe8b Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 6 Feb 2018 21:25:41 +0300 Subject: [PATCH 3/5] define onWalletScreen in this marketplaces.js scope --- scripts/system/marketplaces/marketplaces.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index a5ff9b79e4..6f1c930807 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -112,6 +112,8 @@ var selectionDisplay = null; // for gridTool.js to ignore var referrerURL; // Used for updating Purchases QML var filterText; // Used for updating Purchases QML + + var onWalletScreen = false; function onScreenChanged(type, url) { onMarketplaceScreen = type === "Web" && url.indexOf(MARKETPLACE_URL) !== -1; var onWalletScreenNow = url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1; From 672520f3bfa53be81acac93d1a9f69298fa12a5b Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 6 Feb 2018 12:06:27 -0800 Subject: [PATCH 4/5] quickfix for velocity spike for Tractor action --- libraries/physics/src/ObjectActionTractor.cpp | 39 +++++++++++-------- libraries/physics/src/ObjectActionTractor.h | 1 + 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/libraries/physics/src/ObjectActionTractor.cpp b/libraries/physics/src/ObjectActionTractor.cpp index ec34023926..03e6533c87 100644 --- a/libraries/physics/src/ObjectActionTractor.cpp +++ b/libraries/physics/src/ObjectActionTractor.cpp @@ -77,13 +77,18 @@ bool ObjectActionTractor::prepareForTractorUpdate(btScalar deltaTimeStep) { return false; } + bool doLinearTraction = _positionalTargetSet && (_linearTimeScale < MAX_TRACTOR_TIMESCALE); + bool doAngularTraction = _rotationalTargetSet && (_angularTimeScale < MAX_TRACTOR_TIMESCALE); + if (!doLinearTraction && !doAngularTraction) { + // nothing to do + return false; + } + glm::quat rotation; glm::vec3 position; glm::vec3 angularVelocity; - bool linearValid = false; int linearTractorCount = 0; - bool angularValid = false; int angularTractorCount = 0; QList tractorDerivedActions; @@ -105,7 +110,6 @@ bool ObjectActionTractor::prepareForTractorUpdate(btScalar deltaTimeStep) { linearTimeScale, angularTimeScale); if (success) { if (angularTimeScale < MAX_TRACTOR_TIMESCALE) { - angularValid = true; angularTractorCount++; angularVelocity += angularVelocityForAction; if (tractorAction.get() == this) { @@ -115,41 +119,40 @@ bool ObjectActionTractor::prepareForTractorUpdate(btScalar deltaTimeStep) { } if (linearTimeScale < MAX_TRACTOR_TIMESCALE) { - linearValid = true; linearTractorCount++; position += positionForAction; } } } - if ((angularValid && angularTractorCount > 0) || (linearValid && linearTractorCount > 0)) { + if (angularTractorCount > 0 || linearTractorCount > 0) { withWriteLock([&]{ - if (linearValid && linearTractorCount > 0) { + if (doLinearTraction && linearTractorCount > 0) { position /= linearTractorCount; - if (_positionalTargetSet) { - _lastPositionTarget = _positionalTarget; - _positionalTarget = position; - if (deltaTimeStep > EPSILON) { + _lastPositionTarget = _positionalTarget; + _positionalTarget = position; + if (deltaTimeStep > EPSILON) { + if (_havePositionTargetHistory) { // blend the new velocity with the old (low-pass filter) glm::vec3 newVelocity = (1.0f / deltaTimeStep) * (_positionalTarget - _lastPositionTarget); const float blend = 0.25f; _linearVelocityTarget = (1.0f - blend) * _linearVelocityTarget + blend * newVelocity; + } else { + _havePositionTargetHistory = true; } } - _positionalTargetSet = true; _active = true; } - if (angularValid && angularTractorCount > 0) { + if (doAngularTraction && angularTractorCount > 0) { angularVelocity /= angularTractorCount; _rotationalTarget = rotation; _angularVelocityTarget = angularVelocity; - _rotationalTargetSet = true; _active = true; } }); } - return linearValid || angularValid; + return true; } @@ -239,7 +242,9 @@ bool ObjectActionTractor::updateArguments(QVariantMap arguments) { // targets are required, tractor-constants are optional bool ok = true; positionalTarget = EntityDynamicInterface::extractVec3Argument("tractor action", arguments, "targetPosition", ok, false); - if (!ok) { + if (ok) { + _positionalTargetSet = true; + } else { positionalTarget = _desiredPositionalTarget; } ok = true; @@ -250,7 +255,9 @@ bool ObjectActionTractor::updateArguments(QVariantMap arguments) { ok = true; rotationalTarget = EntityDynamicInterface::extractQuatArgument("tractor action", arguments, "targetRotation", ok, false); - if (!ok) { + if (ok) { + _rotationalTargetSet = true; + } else { rotationalTarget = _desiredRotationalTarget; } diff --git a/libraries/physics/src/ObjectActionTractor.h b/libraries/physics/src/ObjectActionTractor.h index a17526f5f9..2273a1e720 100644 --- a/libraries/physics/src/ObjectActionTractor.h +++ b/libraries/physics/src/ObjectActionTractor.h @@ -39,6 +39,7 @@ protected: glm::vec3 _lastPositionTarget; float _linearTimeScale; bool _positionalTargetSet; + bool _havePositionTargetHistory { false }; glm::quat _rotationalTarget; glm::quat _desiredRotationalTarget; From 3e913cfcfeaf546cc130a07370232c3108940cc2 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 7 Feb 2018 10:45:13 -0800 Subject: [PATCH 5/5] AvatarActionHold has positional and rotational targets --- interface/src/avatar/AvatarActionHold.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index 66184513da..d4fe8574ca 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -31,6 +31,9 @@ AvatarActionHold::AvatarActionHold(const QUuid& id, EntityItemPointer ownerEntit myAvatar->addHoldAction(this); } + _positionalTargetSet = true; + _rotationalTargetSet = true; + #if WANT_DEBUG qDebug() << "AvatarActionHold::AvatarActionHold" << (void*)this; #endif