getChildren() const;
bool hasChildren() const;
diff --git a/scripts/system/commerce/wallet.js b/scripts/system/commerce/wallet.js
index cde44e78c9..b3e3134380 100644
--- a/scripts/system/commerce/wallet.js
+++ b/scripts/system/commerce/wallet.js
@@ -103,6 +103,7 @@
case 'transactionHistory_linkClicked':
tablet.gotoWebScreen(message.marketplaceLink, MARKETPLACES_INJECT_SCRIPT_URL);
break;
+ case 'goToPurchases_fromWalletHome':
case 'goToPurchases':
tablet.pushOntoStack(MARKETPLACE_PURCHASES_QML_PATH);
break;
diff --git a/scripts/system/html/js/marketplacesInject.js b/scripts/system/html/js/marketplacesInject.js
index 698dd93f29..fb49de1050 100644
--- a/scripts/system/html/js/marketplacesInject.js
+++ b/scripts/system/html/js/marketplacesInject.js
@@ -29,7 +29,7 @@
var commerceMode = false;
var userIsLoggedIn = false;
var walletNeedsSetup = false;
- var metaverseServerURL = "https://metaverse.highfidelity.com";
+ var marketplaceBaseURL = "https://highfidelity.com";
function injectCommonCode(isDirectoryPage) {
@@ -58,7 +58,7 @@
);
// Footer.
- var isInitialHiFiPage = location.href === metaverseServerURL + "/marketplace?";
+ var isInitialHiFiPage = location.href === marketplaceBaseURL + "/marketplace?";
$("body").append(
'' +
(!isInitialHiFiPage ? '' : '') +
@@ -70,7 +70,7 @@
// Footer actions.
$("#back-button").on("click", function () {
- (document.referrer !== "") ? window.history.back() : window.location = (metaverseServerURL + "/marketplace?");
+ (document.referrer !== "") ? window.history.back() : window.location = (marketplaceBaseURL + "/marketplace?");
});
$("#all-markets").on("click", function () {
EventBridge.emitWebEvent(GOTO_DIRECTORY);
@@ -89,7 +89,7 @@
window.location = "https://clara.io/library?gameCheck=true&public=true";
});
$('#exploreHifiMarketplace').on('click', function () {
- window.location = "http://www.highfidelity.com/marketplace";
+ window.location = marketplaceBaseURL + "/marketplace";
});
}
@@ -250,7 +250,8 @@
itemName: name,
itemPrice: price ? parseInt(price, 10) : 0,
itemHref: href,
- referrer: referrer
+ referrer: referrer,
+ itemAuthor: author
}));
}
@@ -657,9 +658,9 @@
var HIFI_ITEM_PAGE = 3;
var pageType = DIRECTORY;
- if (location.href.indexOf("highfidelity.com/") !== -1) { pageType = HIFI; }
+ if (location.href.indexOf(marketplaceBaseURL + "/") !== -1) { pageType = HIFI; }
if (location.href.indexOf("clara.io/") !== -1) { pageType = CLARA; }
- if (location.href.indexOf("highfidelity.com/marketplace/items/") !== -1) { pageType = HIFI_ITEM_PAGE; }
+ if (location.href.indexOf(marketplaceBaseURL + "/marketplace/items/") !== -1) { pageType = HIFI_ITEM_PAGE; }
injectCommonCode(pageType === DIRECTORY);
switch (pageType) {
@@ -693,7 +694,10 @@
commerceMode = !!parsedJsonMessage.data.commerceMode;
userIsLoggedIn = !!parsedJsonMessage.data.userIsLoggedIn;
walletNeedsSetup = !!parsedJsonMessage.data.walletNeedsSetup;
- metaverseServerURL = parsedJsonMessage.data.metaverseServerURL;
+ marketplaceBaseURL = parsedJsonMessage.data.metaverseServerURL;
+ if (marketplaceBaseURL.indexOf('metaverse.') !== -1) {
+ marketplaceBaseURL = marketplaceBaseURL.replace('metaverse.', '');
+ }
injectCode();
}
}
diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js
index 15e72c8e8a..a5360974f6 100644
--- a/scripts/system/marketplaces/marketplaces.js
+++ b/scripts/system/marketplaces/marketplaces.js
@@ -8,7 +8,8 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
-/* global Tablet, Script, HMD, UserActivityLogger, Entities */
+/* global Tablet, Script, HMD, UserActivityLogger, Entities, Account, Wallet, ContextOverlay, Settings, Camera, Vec3,
+ Quat, MyAvatar, Clipboard, Menu, Grid, Uuid, GlobalServices, openLoginWindow */
/* eslint indent: ["error", 4, { "outerIIFEBody": 0 }] */
var selectionDisplay = null; // for gridTool.js to ignore
@@ -219,6 +220,41 @@ var selectionDisplay = null; // for gridTool.js to ignore
function rezEntity(itemHref, isWearable) {
var success = Clipboard.importEntities(itemHref);
+ var wearableLocalPosition = null;
+ var wearableLocalRotation = null;
+ var wearableLocalDimensions = null;
+ var wearableDimensions = null;
+
+ if (isWearable) {
+ var wearableTransforms = Settings.getValue("io.highfidelity.avatarStore.checkOut.transforms");
+ if (!wearableTransforms) {
+ // TODO delete this clause
+ wearableTransforms = Settings.getValue("io.highfidelity.avatarStore.checkOut.tranforms");
+ }
+ var certPos = itemHref.search("certificate_id="); // TODO how do I parse a URL from here?
+ if (certPos >= 0) {
+ certPos += 15; // length of "certificate_id="
+ var certURLEncoded = itemHref.substring(certPos);
+ var certB64Encoded = decodeURIComponent(certURLEncoded);
+ for (var key in wearableTransforms) {
+ if (wearableTransforms.hasOwnProperty(key)) {
+ var certificateTransforms = wearableTransforms[key].certificateTransforms;
+ if (certificateTransforms) {
+ for (var certID in certificateTransforms) {
+ if (certificateTransforms.hasOwnProperty(certID) &&
+ certID == certB64Encoded) {
+ var certificateTransform = certificateTransforms[certID];
+ wearableLocalPosition = certificateTransform.localPosition;
+ wearableLocalRotation = certificateTransform.localRotation;
+ wearableLocalDimensions = certificateTransform.localDimensions;
+ wearableDimensions = certificateTransform.dimensions;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
if (success) {
var VERY_LARGE = 10000;
@@ -287,6 +323,24 @@ var selectionDisplay = null; // for gridTool.js to ignore
}
}
}
+
+ if (isWearable) {
+ // apply the relative offsets saved during checkout
+ var offsets = {};
+ if (wearableLocalPosition) {
+ offsets.localPosition = wearableLocalPosition;
+ }
+ if (wearableLocalRotation) {
+ offsets.localRotation = wearableLocalRotation;
+ }
+ if (wearableLocalDimensions) {
+ offsets.localDimensions = wearableLocalDimensions;
+ } else if (wearableDimensions) {
+ offsets.dimensions = wearableDimensions;
+ }
+ // we currently assume a wearable is a single entity
+ Entities.editEntity(pastedEntityIDs[0], offsets);
+ }
} else {
Window.notifyEditError("Can't import entities: entities would be out of bounds.");
}
diff --git a/tests/gpu-test/src/TestShapes.cpp b/tests/gpu-test/src/TestShapes.cpp
index 253d89cf61..67a348c002 100644
--- a/tests/gpu-test/src/TestShapes.cpp
+++ b/tests/gpu-test/src/TestShapes.cpp
@@ -29,19 +29,18 @@ void TestShapes::renderTest(size_t testId, RenderArgs* args) {
float seconds = secTimestampNow() - startSecs;
seconds /= 4.0f;
batch.setModelTransform(Transform());
- batch._glColor4f(0.8f, 0.25f, 0.25f, 1.0f);
+ const auto color = glm::vec4(0.8f, 0.25f, 0.25f, 1.0f);
bool wire = (seconds - floorf(seconds) > 0.5f);
int shapeIndex = ((int)seconds) % TYPE_COUNT;
if (wire) {
- geometryCache->renderWireShape(batch, SHAPE[shapeIndex]);
+ geometryCache->renderWireShape(batch, SHAPE[shapeIndex], color);
} else {
- geometryCache->renderShape(batch, SHAPE[shapeIndex]);
+ geometryCache->renderShape(batch, SHAPE[shapeIndex], color);
}
batch.setModelTransform(Transform().setScale(1.01f));
- batch._glColor4f(1, 1, 1, 1);
- geometryCache->renderWireCube(batch);
+ geometryCache->renderWireCube(batch, glm::vec4(1,1,1,1));
}