Fix mini tablet sizing for different sizes of avatar

This commit is contained in:
David Rowe 2018-09-29 13:51:00 +12:00
parent 8464a70c9e
commit 2449868ea9

View file

@ -277,14 +277,14 @@
Overlays.editOverlay(miniOverlay, {
parentID: MyAvatar.SELF_ID,
parentJointIndex: handJointIndex(hand),
localPosition: Vec3.multiply(MyAvatar.scale, MINI_POSITIONS[hand]),
localPosition: Vec3.multiply(MyAvatar.sensorToWorldScale, MINI_POSITIONS[hand]),
localRotation: MINI_ROTATIONS[hand],
dimensions: Vec3.multiply(initialScale, MINI_DIMENSIONS),
grabbable: true,
visible: true
});
Overlays.editOverlay(miniUIOverlay, {
localPosition: Vec3.multiply(MyAvatar.scale, MINI_UI_LOCAL_POSITION),
localPosition: Vec3.multiply(MyAvatar.sensorToWorldScale, MINI_UI_LOCAL_POSITION),
localRotation: MINI_UI_LOCAL_ROTATION,
dimensions: Vec3.multiply(initialScale, MINI_UI_DIMENSIONS),
dpi: MINI_UI_DPI / initialScale,
@ -346,7 +346,8 @@
localRotation,
localPosition;
tabletScaleFactor = MyAvatar.scale * (1 + scaleFactor * (miniTargetWidth - miniInitialWidth) / miniInitialWidth);
tabletScaleFactor = MyAvatar.sensorToWorldScale
* (1 + scaleFactor * (miniTargetWidth - miniInitialWidth) / miniInitialWidth);
dimensions = Vec3.multiply(tabletScaleFactor, MINI_DIMENSIONS);
localRotation = Quat.mix(miniExpandLocalRotation, miniTargetLocalRotation, scaleFactor);
localPosition =
@ -444,7 +445,7 @@
function create() {
miniOverlay = Overlays.addOverlay("model", {
url: MINI_MODEL,
dimensions: Vec3.multiply(MyAvatar.scale, MINI_DIMENSIONS),
dimensions: Vec3.multiply(MyAvatar.sensorToWorldScale, MINI_DIMENSIONS),
solid: true,
grabbable: true,
showKeyboardFocusHighlight: false,
@ -454,10 +455,10 @@
miniUIOverlay = Overlays.addOverlay("web3d", {
url: MINI_UI_HTML,
parentID: miniOverlay,
localPosition: Vec3.multiply(MyAvatar.scale, MINI_UI_LOCAL_POSITION),
localPosition: Vec3.multiply(MyAvatar.sensorToWorldScale, MINI_UI_LOCAL_POSITION),
localRotation: MINI_UI_LOCAL_ROTATION,
dimensions: Vec3.multiply(MyAvatar.scale, MINI_UI_DIMENSIONS),
dpi: MINI_UI_DPI / MyAvatar.scale,
dimensions: Vec3.multiply(MyAvatar.sensorToWorldScale, MINI_UI_DIMENSIONS),
dpi: MINI_UI_DPI / MyAvatar.sensorToWorldScale,
alpha: 0, // Hide overlay while its content is being created.
grabbable: false,
showKeyboardFocusHighlight: false,
@ -641,7 +642,7 @@
handOrientation =
Quat.multiply(MyAvatar.orientation, MyAvatar.getAbsoluteJointRotationInObjectFrame(jointIndex));
uiPositionAndOrientation = ui.getUIPositionAndRotation(hand);
miniPosition = Vec3.sum(handPosition, Vec3.multiply(MyAvatar.scale,
miniPosition = Vec3.sum(handPosition, Vec3.multiply(MyAvatar.sensorToWorldScale,
Vec3.multiplyQbyV(handOrientation, uiPositionAndOrientation.position)));
miniOrientation = Quat.multiply(handOrientation, uiPositionAndOrientation.rotation);
miniToCameraDirection = Vec3.normalize(Vec3.subtract(Camera.position, miniPosition));
@ -698,7 +699,7 @@
function scaleMiniDown() {
var scaleFactor = (Date.now() - miniScaleStart) / MINI_SCALE_DURATION;
if (scaleFactor < 1) {
ui.size((1 - scaleFactor) * MyAvatar.scale);
ui.size((1 - scaleFactor) * MyAvatar.sensorToWorldScale);
miniScaleTimer = Script.setTimeout(scaleMiniDown, MINI_SCALE_TIMEOUT);
return;
}
@ -727,12 +728,12 @@
function scaleMiniUp() {
var scaleFactor = (Date.now() - miniScaleStart) / MINI_SCALE_DURATION;
if (scaleFactor < 1) {
ui.size(scaleFactor * MyAvatar.scale);
ui.size(scaleFactor * MyAvatar.sensorToWorldScale);
miniScaleTimer = Script.setTimeout(scaleMiniUp, MINI_SCALE_TIMEOUT);
return;
}
miniScaleTimer = null;
ui.size(MyAvatar.scale);
ui.size(MyAvatar.sensorToWorldScale);
setState(MINI_VISIBLE);
}