home button improvments

This commit is contained in:
Dante Ruiz 2017-01-21 00:34:24 +00:00
parent ff17aa7745
commit 41bf65ed5e
5 changed files with 39 additions and 12 deletions

View file

@ -235,6 +235,10 @@ QObject* TabletProxy::addButton(const QVariant& properties) {
return tabletButtonProxy.data(); return tabletButtonProxy.data();
} }
bool TabletProxy::onHomeScreen() {
return _state == State::Home;
}
void TabletProxy::removeButton(QObject* tabletButtonProxy) { void TabletProxy::removeButton(QObject* tabletButtonProxy) {
std::lock_guard<std::mutex> guard(_mutex); std::lock_guard<std::mutex> guard(_mutex);

View file

@ -121,7 +121,8 @@ public:
* @param msg {object|string} * @param msg {object|string}
*/ */
Q_INVOKABLE void emitScriptEvent(QVariant msg); Q_INVOKABLE void emitScriptEvent(QVariant msg);
Q_INVOKABLE bool onHomeScreen();
QObject* getTabletSurface(); QObject* getTabletSurface();

View file

@ -23,13 +23,12 @@ var SENSOR_TO_ROOM_MATRIX = -2;
var CAMERA_MATRIX = -7; var CAMERA_MATRIX = -7;
var ROT_Y_180 = {x: 0, y: 1, z: 0, w: 0}; var ROT_Y_180 = {x: 0, y: 1, z: 0, w: 0};
var TABLET_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/Tablet-Model-v1-x.fbx"; var TABLET_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx";
// will need to be recaclulated if dimensions of fbx model change. // will need to be recaclulated if dimensions of fbx model change.
var TABLET_NATURAL_DIMENSIONS = {x: 33.797, y: 50.129, z: 2.269}; var TABLET_NATURAL_DIMENSIONS = {x: 33.797, y: 50.129, z: 2.269};
var HOME_BUTTON_TEXTURE = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-close.png";
var HOME_BUTTON_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-home-button.fbx"; var TABLET_MODEL_PATH = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx";
// returns object with two fields: // returns object with two fields:
// * position - position in front of the user // * position - position in front of the user
// * rotation - rotation of entity so it faces the user. // * rotation - rotation of entity so it faces the user.
@ -94,7 +93,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
var tabletProperties = { var tabletProperties = {
name: "WebTablet Tablet", name: "WebTablet Tablet",
type: "Model", type: "Model",
modelURL: TABLET_URL, modelURL: TABLET_MODEL_PATH,
userData: JSON.stringify({ userData: JSON.stringify({
"grabbableKey": {"grabbable": true} "grabbableKey": {"grabbable": true}
}), }),
@ -130,14 +129,14 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
}); });
var HOME_BUTTON_Y_OFFSET = (this.height / 2) - 0.035; var HOME_BUTTON_Y_OFFSET = (this.height / 2) - 0.035;
this.homeButtonEntity = Overlays.addOverlay("model", { this.homeButtonEntity = Overlays.addOverlay("sphere", {
name: "homeButton", name: "homeButton",
url: Script.resourcesPath() + "meshes/tablet-home-button.fbx",
localPosition: {x: 0.0, y: -HOME_BUTTON_Y_OFFSET, z: -0.01}, localPosition: {x: 0.0, y: -HOME_BUTTON_Y_OFFSET, z: -0.01},
localRotation: Quat.angleAxis(0, Y_AXIS), localRotation: Quat.angleAxis(0, Y_AXIS),
solid: true,
visible: true,
dimensions: { x: 0.04, y: 0.04, z: 0.02}, dimensions: { x: 0.04, y: 0.04, z: 0.02},
alpha: 0.0,
visible: true,
alpha: 0.0,
drawInFront: false, drawInFront: false,
parentID: this.tabletEntityID, parentID: this.tabletEntityID,
parentJointIndex: -1 parentJointIndex: -1
@ -146,7 +145,13 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
this.receive = function (channel, senderID, senderUUID, localOnly) { this.receive = function (channel, senderID, senderUUID, localOnly) {
if (_this.homeButtonEntity === parseInt(senderID)) { if (_this.homeButtonEntity === parseInt(senderID)) {
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
tablet.gotoHomeScreen(); var onHomeScreen = tablet.onHomeScreen();
if (onHomeScreen) {
HMD.closeTablet();
} else {
tablet.gotoHomeScreen();
_this.setHomeButtonTexture();
}
} }
}; };
@ -189,6 +194,11 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
this.initialLocalPosition = {x: 0, y: 0, z: 0}; this.initialLocalPosition = {x: 0, y: 0, z: 0};
}; };
WebTablet.prototype.setHomeButtonTexture = function() {
print(this.homeButtonEntity);
Entities.editEntity(this.tabletEntityID, {textures: JSON.stringify({"tex.close": HOME_BUTTON_TEXTURE})});
}
WebTablet.prototype.setURL = function (url) { WebTablet.prototype.setURL = function (url) {
Overlays.editOverlay(this.webOverlayID, { url: url }); Overlays.editOverlay(this.webOverlayID, { url: url });
}; };
@ -321,7 +331,13 @@ WebTablet.prototype.mousePressEvent = function (event) {
var overlayPickResults = Overlays.findRayIntersection(pickRay); var overlayPickResults = Overlays.findRayIntersection(pickRay);
if (overlayPickResults.intersects && overlayPickResults.overlayID === HMD.homeButtonID) { if (overlayPickResults.intersects && overlayPickResults.overlayID === HMD.homeButtonID) {
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
tablet.gotoHomeScreen(); var onHomeScreen = tablet.onHomeScreen();
if (onHomeScreen) {
HMD.closeTablet();
} else {
tablet.gotoHomeScreen();
this.setHomeButtonTexture();
}
} else if (!overlayPickResults.intersects || !overlayPickResults.overlayID === this.webOverlayID) { } else if (!overlayPickResults.intersects || !overlayPickResults.overlayID === this.webOverlayID) {
this.dragging = true; this.dragging = true;
var invCameraXform = new Xform(Camera.orientation, Camera.position).inv(); var invCameraXform = new Xform(Camera.orientation, Camera.position).inv();

View file

@ -19,6 +19,7 @@ var MARKETPLACE_URL = "https://metaverse.highfidelity.com/marketplace";
var MARKETPLACE_URL_INITIAL = MARKETPLACE_URL + "?"; // Append "?" to signal injected script that it's the initial page. var MARKETPLACE_URL_INITIAL = MARKETPLACE_URL + "?"; // Append "?" to signal injected script that it's the initial page.
var MARKETPLACES_URL = Script.resolvePath("../html/marketplaces.html"); var MARKETPLACES_URL = Script.resolvePath("../html/marketplaces.html");
var MARKETPLACES_INJECT_SCRIPT_URL = Script.resolvePath("../html/js/marketplacesInject.js"); var MARKETPLACES_INJECT_SCRIPT_URL = Script.resolvePath("../html/js/marketplacesInject.js");
var HOME_BUTTON_TEXTURE = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png";
// Event bridge messages. // Event bridge messages.
var CLARA_IO_DOWNLOAD = "CLARA.IO DOWNLOAD"; var CLARA_IO_DOWNLOAD = "CLARA.IO DOWNLOAD";
@ -96,6 +97,8 @@ function showMarketplace() {
} }
function toggleMarketplace() { function toggleMarketplace() {
var entity = HMD.tabletID;
Entities.editEntity(entity, {textures: JSON.stringify({"tex.close": HOME_BUTTON_TEXTURE})});
showMarketplace(); showMarketplace();
} }

View file

@ -9,6 +9,7 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// //
var HOME_BUTTON_TEXTURE = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png";
(function() { (function() {
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
var button = tablet.addButton({ var button = tablet.addButton({
@ -18,6 +19,8 @@
function onClicked() { function onClicked() {
var entity = HMD.tabletID;
Entities.editEntity(entity, {textures: JSON.stringify({"tex.close": HOME_BUTTON_TEXTURE})});
tablet.gotoMenuScreen(); tablet.gotoMenuScreen();
} }