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();
}
bool TabletProxy::onHomeScreen() {
return _state == State::Home;
}
void TabletProxy::removeButton(QObject* tabletButtonProxy) {
std::lock_guard<std::mutex> guard(_mutex);

View file

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

View file

@ -23,13 +23,12 @@ var SENSOR_TO_ROOM_MATRIX = -2;
var CAMERA_MATRIX = -7;
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.
var TABLET_NATURAL_DIMENSIONS = {x: 33.797, y: 50.129, z: 2.269};
var HOME_BUTTON_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-home-button.fbx";
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 TABLET_MODEL_PATH = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx";
// returns object with two fields:
// * position - position in front of the user
// * rotation - rotation of entity so it faces the user.
@ -94,7 +93,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
var tabletProperties = {
name: "WebTablet Tablet",
type: "Model",
modelURL: TABLET_URL,
modelURL: TABLET_MODEL_PATH,
userData: JSON.stringify({
"grabbableKey": {"grabbable": true}
}),
@ -130,14 +129,14 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
});
var HOME_BUTTON_Y_OFFSET = (this.height / 2) - 0.035;
this.homeButtonEntity = Overlays.addOverlay("model", {
this.homeButtonEntity = Overlays.addOverlay("sphere", {
name: "homeButton",
url: Script.resourcesPath() + "meshes/tablet-home-button.fbx",
localPosition: {x: 0.0, y: -HOME_BUTTON_Y_OFFSET, z: -0.01},
localRotation: Quat.angleAxis(0, Y_AXIS),
solid: true,
visible: true,
dimensions: { x: 0.04, y: 0.04, z: 0.02},
alpha: 0.0,
visible: true,
alpha: 0.0,
drawInFront: false,
parentID: this.tabletEntityID,
parentJointIndex: -1
@ -146,7 +145,13 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
this.receive = function (channel, senderID, senderUUID, localOnly) {
if (_this.homeButtonEntity === parseInt(senderID)) {
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};
};
WebTablet.prototype.setHomeButtonTexture = function() {
print(this.homeButtonEntity);
Entities.editEntity(this.tabletEntityID, {textures: JSON.stringify({"tex.close": HOME_BUTTON_TEXTURE})});
}
WebTablet.prototype.setURL = function (url) {
Overlays.editOverlay(this.webOverlayID, { url: url });
};
@ -321,7 +331,13 @@ WebTablet.prototype.mousePressEvent = function (event) {
var overlayPickResults = Overlays.findRayIntersection(pickRay);
if (overlayPickResults.intersects && overlayPickResults.overlayID === HMD.homeButtonID) {
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) {
this.dragging = true;
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 MARKETPLACES_URL = Script.resolvePath("../html/marketplaces.html");
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.
var CLARA_IO_DOWNLOAD = "CLARA.IO DOWNLOAD";
@ -96,6 +97,8 @@ function showMarketplace() {
}
function toggleMarketplace() {
var entity = HMD.tabletID;
Entities.editEntity(entity, {textures: JSON.stringify({"tex.close": HOME_BUTTON_TEXTURE})});
showMarketplace();
}

View file

@ -9,6 +9,7 @@
// 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() {
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
var button = tablet.addButton({
@ -18,6 +19,8 @@
function onClicked() {
var entity = HMD.tabletID;
Entities.editEntity(entity, {textures: JSON.stringify({"tex.close": HOME_BUTTON_TEXTURE})});
tablet.gotoMenuScreen();
}