From 1a01209020d78919c0cf04ed34ee9c16e2b3b351 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 31 Aug 2017 13:02:31 -0700 Subject: [PATCH] Fixes for scaling tablet at high frame rates --- scripts/system/controllers/handControllerGrab.js | 8 ++------ scripts/system/libraries/WebTablet.js | 2 +- scripts/system/libraries/utils.js | 9 +++++---- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/scripts/system/controllers/handControllerGrab.js b/scripts/system/controllers/handControllerGrab.js index 8ee9128210..56b52eb1a7 100644 --- a/scripts/system/controllers/handControllerGrab.js +++ b/scripts/system/controllers/handControllerGrab.js @@ -3031,9 +3031,7 @@ function MyController(hand) { Overlays.editOverlay(this.grabbedThingID, reparentProps); // AJT: resize tablet to allow it to counter scale. if (this.grabbedThingID === HMD.tabletID) { - var DEFAULT_TABLET_WIDTH = 0.4375; - var tabletScalePercentage = getTabletScalePercentageFromSettings(); - resizeTablet(DEFAULT_TABLET_WIDTH * (tabletScalePercentage / 100)); + resizeTablet(getTabletWidthFromSettings(), reparentProps.parentJointIndex); } } else { if (grabbedProperties.userData.length > 0) { @@ -3813,9 +3811,7 @@ function MyController(hand) { }); // AJT: resizeTablet to counter adjust offsets to account for change of scale from sensorToWorldMatrix if (this.grabbedThingID === HMD.tabletID) { - var DEFAULT_TABLET_WIDTH = 0.4375; - var tabletScalePercentage = getTabletScalePercentageFromSettings(); - resizeTablet(DEFAULT_TABLET_WIDTH * (tabletScalePercentage / 100)); + resizeTablet(getTabletWidthFromSettings(), this.previousParentJointIndex[this.grabbedThingID]); } } else { // we're putting this back as a child of some other parent, so zero its velocity diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index e28b9be4e4..56dc06cf78 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -178,7 +178,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) { localPosition: {x: -0.001, y: -HOME_BUTTON_Y_OFFSET, z: 0.0}, localRotation: {x: 0, y: 1, z: 0, w: 0}, dimensions: { x: 4 * tabletScaleFactor, y: 4 * tabletScaleFactor, z: 4 * tabletScaleFactor}, - alpha: 1.0, + alpha: 0.0, visible: visible, drawInFront: false, parentID: this.tabletEntityID, diff --git a/scripts/system/libraries/utils.js b/scripts/system/libraries/utils.js index b0437820d9..b79ff03550 100644 --- a/scripts/system/libraries/utils.js +++ b/scripts/system/libraries/utils.js @@ -352,7 +352,8 @@ flatten = function(array) { return [].concat.apply([], array); } -getTabletScalePercentageFromSettings = function () { +getTabletWidthFromSettings = function () { + var DEFAULT_TABLET_WIDTH = 0.4375; var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var toolbarMode = tablet.toolbarMode; var DEFAULT_TABLET_SCALE = 100; @@ -364,10 +365,10 @@ getTabletScalePercentageFromSettings = function () { tabletScalePercentage = Settings.getValue("desktopTabletScale") || DEFAULT_TABLET_SCALE; } } - return tabletScalePercentage; + return DEFAULT_TABLET_WIDTH * (tabletScalePercentage / 100); }; -resizeTablet = function (width, newParentJointID) { +resizeTablet = function (width, newParentJointIndex) { if (!HMD.tabletID || !HMD.tabletScreenID || !HMD.homeButtonID) { return; @@ -376,7 +377,7 @@ resizeTablet = function (width, newParentJointID) { var sensorScaleFactor = MyAvatar.sensorToWorldScale; var sensorScaleOffsetOverride = 1; var SENSOR_TO_ROOM_MATRIX = 65534; - var parentJointIndex = Overlays.getProperty(HMD.tabletID, "parentJointIndex"); + var parentJointIndex = newParentJointIndex || Overlays.getProperty(HMD.tabletID, "parentJointIndex"); if (parentJointIndex === SENSOR_TO_ROOM_MATRIX) { sensorScaleOffsetOverride = 1 / sensorScaleFactor; }