mirror of
https://github.com/lubosz/overte.git
synced 2025-04-08 10:43:56 +02:00
Merge branch 'vive-ui' of https://github.com/highfidelity/hifi into goto-button
This commit is contained in:
commit
91450addd3
5 changed files with 193 additions and 31 deletions
|
@ -96,6 +96,11 @@ void OpenVrDisplayPlugin::internalDeactivate() {
|
|||
Parent::internalDeactivate();
|
||||
_container->setIsOptionChecked(StandingHMDSensorMode, false);
|
||||
if (_system) {
|
||||
// Invalidate poses. It's fine if someone else sets these shared values, but we're about to stop updating them, and
|
||||
// we don't want ViveControllerManager to consider old values to be valid.
|
||||
for (int i = 0; i < vr::k_unMaxTrackedDeviceCount; i++) {
|
||||
_trackedDevicePose[i].bPoseIsValid = false;
|
||||
}
|
||||
releaseOpenVrSystem();
|
||||
_system = nullptr;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ Script.load("system/away.js");
|
|||
Script.load("system/users.js");
|
||||
Script.load("system/examples.js");
|
||||
Script.load("system/goto.js");
|
||||
Script.load("system/hmd.js");
|
||||
Script.load("system/edit.js");
|
||||
Script.load("system/selectAudioDevice.js");
|
||||
Script.load("system/notifications.js");
|
||||
|
|
102
scripts/system/assets/images/tools/hmd-switch-01.svg
Normal file
102
scripts/system/assets/images/tools/hmd-switch-01.svg
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 50 150" style="enable-background:new 0 0 50 150;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{opacity:0.49;}
|
||||
.st1{fill:#1E1E1E;}
|
||||
.st2{opacity:0.9;}
|
||||
.st3{fill:#FFFFFF;}
|
||||
.st4{fill:#333333;}
|
||||
.st5{fill:#CBCBCB;}
|
||||
.st6{enable-background:new ;}
|
||||
.st7{fill:#CBCBCB;stroke:#CBCBCB;stroke-width:0.2978;stroke-linecap:square;stroke-miterlimit:10;}
|
||||
.st8{fill:#CBCBCB;stroke:#CBCBCB;stroke-width:9.574610e-03;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st9{fill:#EAEAEA;}
|
||||
.st10{opacity:0.47;}
|
||||
.st11{opacity:0.49;fill:#EAEAEA;}
|
||||
.st12{opacity:0.47;enable-background:new ;}
|
||||
.st13{opacity:0.5;}
|
||||
</style>
|
||||
<g>
|
||||
<g class="st2">
|
||||
<path class="st3" d="M50,46.3c0,2.2-1.8,4-4,4H4c-2.2,0-4-1.8-4-4v-42c0-2.2,1.8-4,4-4h42c2.2,0,4,1.8,4,4V46.3z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g class="st2">
|
||||
<path class="st1" d="M50,96.3c0,2.2-1.8,4-4,4H4c-2.2,0-4-1.8-4-4v-42c0-2.2,1.8-4,4-4h42c2.2,0,4,1.8,4,4V96.3z"/>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M21.6,21.5c-1.4,1.4-2.8,2.8-4.2,4.2c-0.3-0.3-0.7-0.7-1-1c1.4-1.4,2.8-2.8,4.2-4.2l-1.1-1.1c-1.6,1.6-3.2,3.2-4.9,4.8
|
||||
c-0.3,0.3-0.5,0.7-0.6,1.2c-0.2,1.3-0.4,2.6-0.6,4c0.1,0,0.2,0,0.3,0c1.3-0.3,2.5-0.5,3.8-0.8c0.2-0.1,0.5-0.2,0.7-0.4
|
||||
c1.7-1.7,3.4-3.4,5.1-5.1L21.6,21.5z"/>
|
||||
<path d="M28.2,10.6c0.5-0.5,1.1-1.1,1.7-1.7c0.2-0.2,0.5-0.2,0.7,0c1,1,2,2,3,3c0.2,0.2,0.2,0.5,0,0.8c-0.6,0.6-1.2,1.2-1.7,1.7
|
||||
C30.7,13.2,29.4,11.9,28.2,10.6z"/>
|
||||
<path d="M29.4,19.1c-0.3,0.1-0.4,0-0.6-0.2c-0.4-0.4-0.8-0.8-1.2-1.2c1-1,1.9-1.9,2.9-2.9c0.1-0.1,0.2-0.2,0.2-0.2
|
||||
c-1.3-1.3-2.5-2.5-3.8-3.9c-0.1,0.1-0.1,0.2-0.2,0.3c-1,1-1.9,1.9-2.9,2.9c-1.8-1.8-3.5-3.5-5.3-5.3c-0.1-0.1-0.3-0.3-0.4-0.4
|
||||
c-1-0.7-2.2-0.6-3,0.3c-0.8,0.9-0.7,2.2,0.1,3c2.6,2.6,5.3,5.3,7.9,7.9c0.9,0.9,1.7,1.7,2.6,2.6c0.1,0.1,0.2,0.2,0.1,0.4
|
||||
c-0.1,0.4-0.2,0.8-0.2,1.2c-0.2,2.5,1.4,4.7,3.9,5.4c1,0.3,2,0.2,3.1-0.2c-0.1-0.1-0.2-0.2-0.3-0.2c-0.7-0.7-1.5-1.5-2.2-2.2
|
||||
c-0.5-0.5-0.6-1.4-0.1-1.9c0.4-0.4,0.8-0.8,1.2-1.2c0.6-0.5,1.3-0.5,1.8,0c0.1,0.1,0.2,0.2,0.3,0.3c0.7,0.7,1.5,1.5,2.2,2.2
|
||||
c0,0,0.1,0,0.1,0c0.1-0.4,0.2-0.8,0.2-1.3C36.3,20.9,32.9,18.1,29.4,19.1z M16.7,10.6c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.8,0.7-0.8
|
||||
c0.4,0,0.8,0.4,0.8,0.7C17.4,10.3,17.1,10.6,16.7,10.6z M27.1,13c0.3,0.3,0.6,0.7,1,1c-0.7,0.7-1.4,1.4-2.1,2.1
|
||||
c-0.3-0.3-0.7-0.7-1-1C25.7,14.4,26.4,13.7,27.1,13z"/>
|
||||
<g>
|
||||
<path d="M18.2,41.3v1.1h-4.4V36h4.4v1.1H15v1.5h2.7v1H15v1.7H18.2z"/>
|
||||
<path d="M19.4,42.4V36h2.3c0.5,0,1,0.1,1.4,0.3c0.4,0.2,0.7,0.4,1,0.7c0.3,0.3,0.5,0.6,0.6,1c0.1,0.4,0.2,0.8,0.2,1.2
|
||||
c0,0.5-0.1,0.9-0.2,1.3c-0.1,0.4-0.4,0.7-0.6,1c-0.3,0.3-0.6,0.5-1,0.6c-0.4,0.2-0.8,0.2-1.3,0.2H19.4z M23.6,39.2
|
||||
c0-0.3,0-0.6-0.1-0.8c-0.1-0.3-0.2-0.5-0.4-0.7c-0.2-0.2-0.4-0.3-0.6-0.4c-0.2-0.1-0.5-0.2-0.8-0.2h-1.1v4.2h1.1
|
||||
c0.3,0,0.6-0.1,0.8-0.2c0.2-0.1,0.4-0.3,0.6-0.4c0.2-0.2,0.3-0.4,0.4-0.7C23.6,39.8,23.6,39.5,23.6,39.2z"/>
|
||||
<path d="M26.1,42.4V36h1.2v6.4H26.1z"/>
|
||||
<path d="M33.6,37.1h-2v5.3h-1.2v-5.3h-2V36h5.3V37.1z"/>
|
||||
</g>
|
||||
<path class="st9" d="M21.9,71.5c-1.4,1.4-2.8,2.8-4.2,4.2c-0.3-0.3-0.7-0.7-1-1c1.4-1.4,2.8-2.8,4.2-4.2l-1.1-1.1
|
||||
c-1.6,1.6-3.2,3.2-4.9,4.8c-0.3,0.3-0.5,0.7-0.6,1.2c-0.2,1.3-0.4,2.6-0.6,4c0.1,0,0.2,0,0.3,0c1.3-0.3,2.5-0.5,3.8-0.8
|
||||
c0.2-0.1,0.5-0.2,0.7-0.4c1.7-1.7,3.4-3.4,5.1-5.1L21.9,71.5z"/>
|
||||
<path class="st9" d="M28.5,60.6c0.5-0.5,1.1-1.1,1.7-1.7c0.2-0.2,0.5-0.2,0.7,0c1,1,2,2,3,3c0.2,0.2,0.2,0.5,0,0.8
|
||||
c-0.6,0.6-1.2,1.2-1.7,1.7C31,63.2,29.8,61.9,28.5,60.6z"/>
|
||||
<path class="st9" d="M29.7,69.1c-0.3,0.1-0.4,0-0.6-0.2c-0.4-0.4-0.8-0.8-1.2-1.2c1-1,1.9-1.9,2.9-2.9c0.1-0.1,0.2-0.2,0.2-0.2
|
||||
c-1.3-1.3-2.5-2.5-3.8-3.9c-0.1,0.1-0.1,0.2-0.2,0.3c-1,1-1.9,1.9-2.9,2.9c-1.8-1.8-3.5-3.5-5.3-5.3c-0.1-0.1-0.3-0.3-0.4-0.4
|
||||
c-1-0.7-2.2-0.6-3,0.3c-0.8,0.9-0.7,2.2,0.1,3c2.6,2.6,5.3,5.3,7.9,7.9c0.9,0.9,1.7,1.7,2.6,2.6c0.1,0.1,0.2,0.2,0.1,0.4
|
||||
c-0.1,0.4-0.2,0.8-0.2,1.2c-0.2,2.5,1.4,4.7,3.9,5.4c1,0.3,2,0.2,3.1-0.2c-0.1-0.1-0.2-0.2-0.3-0.2c-0.7-0.7-1.5-1.5-2.2-2.2
|
||||
c-0.5-0.5-0.6-1.4-0.1-1.9c0.4-0.4,0.8-0.8,1.2-1.2c0.6-0.5,1.3-0.5,1.8,0c0.1,0.1,0.2,0.2,0.3,0.3c0.7,0.7,1.5,1.5,2.2,2.2
|
||||
c0,0,0.1,0,0.1,0c0.1-0.4,0.2-0.8,0.2-1.3C36.6,70.9,33.2,68.1,29.7,69.1z M17,60.6c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.8,0.7-0.8
|
||||
c0.4,0,0.8,0.4,0.8,0.7C17.7,60.3,17.4,60.6,17,60.6z M27.4,63c0.3,0.3,0.6,0.7,1,1c-0.7,0.7-1.4,1.4-2.1,2.1c-0.3-0.3-0.7-0.7-1-1
|
||||
C26,64.4,26.7,63.7,27.4,63z"/>
|
||||
<g>
|
||||
<path class="st9" d="M18.5,91.4v1.1H14v-6.4h4.4v1.1h-3.1v1.5H18v1h-2.7v1.7H18.5z"/>
|
||||
<path class="st9" d="M19.7,92.4v-6.4H22c0.5,0,1,0.1,1.4,0.3s0.7,0.4,1,0.7c0.3,0.3,0.5,0.6,0.6,1c0.1,0.4,0.2,0.8,0.2,1.2
|
||||
c0,0.5-0.1,0.9-0.2,1.3c-0.1,0.4-0.4,0.7-0.6,1c-0.3,0.3-0.6,0.5-1,0.6c-0.4,0.2-0.8,0.2-1.3,0.2H19.7z M23.9,89.2
|
||||
c0-0.3,0-0.6-0.1-0.8s-0.2-0.5-0.4-0.7c-0.2-0.2-0.4-0.3-0.6-0.4c-0.2-0.1-0.5-0.2-0.8-0.2H21v4.2H22c0.3,0,0.6-0.1,0.8-0.2
|
||||
c0.2-0.1,0.4-0.3,0.6-0.4s0.3-0.4,0.4-0.7C23.9,89.8,23.9,89.5,23.9,89.2z"/>
|
||||
<path class="st9" d="M26.4,92.4v-6.4h1.2v6.4H26.4z"/>
|
||||
<path class="st9" d="M34,87.1h-2v5.3h-1.2v-5.3h-2v-1.1H34V87.1z"/>
|
||||
</g>
|
||||
<g class="st0">
|
||||
<g class="st2">
|
||||
<path class="st1" d="M50,146.3c0,2.2-1.8,4-4,4H4c-2.2,0-4-1.8-4-4v-42c0-2.2,1.8-4,4-4h42c2.2,0,4,1.8,4,4V146.3z"/>
|
||||
</g>
|
||||
</g>
|
||||
<path class="st11" d="M21.9,121.5c-1.4,1.4-2.8,2.8-4.2,4.2c-0.3-0.3-0.7-0.7-1-1c1.4-1.4,2.8-2.8,4.2-4.2l-1.1-1.1
|
||||
c-1.6,1.6-3.2,3.2-4.9,4.8c-0.3,0.3-0.5,0.7-0.6,1.2c-0.2,1.3-0.4,2.6-0.6,4c0.1,0,0.2,0,0.3,0c1.3-0.3,2.5-0.5,3.8-0.8
|
||||
c0.2-0.1,0.5-0.2,0.7-0.4c1.7-1.7,3.4-3.4,5.1-5.1L21.9,121.5z"/>
|
||||
<path class="st11" d="M28.5,110.6c0.5-0.5,1.1-1.1,1.7-1.7c0.2-0.2,0.5-0.2,0.7,0c1,1,2,2,3,3c0.2,0.2,0.2,0.5,0,0.8
|
||||
c-0.6,0.6-1.2,1.2-1.7,1.7C31,113.2,29.8,111.9,28.5,110.6z"/>
|
||||
<path class="st11" d="M29.7,119.1c-0.3,0.1-0.4,0-0.6-0.2c-0.4-0.4-0.8-0.8-1.2-1.2c1-1,1.9-1.9,2.9-2.9c0.1-0.1,0.2-0.2,0.2-0.2
|
||||
c-1.3-1.3-2.5-2.5-3.8-3.9c-0.1,0.1-0.1,0.2-0.2,0.3c-1,1-1.9,1.9-2.9,2.9c-1.8-1.8-3.5-3.5-5.3-5.3c-0.1-0.1-0.3-0.3-0.4-0.4
|
||||
c-1-0.7-2.2-0.6-3,0.3c-0.8,0.9-0.7,2.2,0.1,3c2.6,2.6,5.3,5.3,7.9,7.9c0.9,0.9,1.7,1.7,2.6,2.6c0.1,0.1,0.2,0.2,0.1,0.4
|
||||
c-0.1,0.4-0.2,0.8-0.2,1.2c-0.2,2.5,1.4,4.7,3.9,5.4c1,0.3,2,0.2,3.1-0.2c-0.1-0.1-0.2-0.2-0.3-0.2c-0.7-0.7-1.5-1.5-2.2-2.2
|
||||
c-0.5-0.5-0.6-1.4-0.1-1.9c0.4-0.4,0.8-0.8,1.2-1.2c0.6-0.5,1.3-0.5,1.8,0c0.1,0.1,0.2,0.2,0.3,0.3c0.7,0.7,1.5,1.5,2.2,2.2
|
||||
c0,0,0.1,0,0.1,0c0.1-0.4,0.2-0.8,0.2-1.3C36.6,120.9,33.2,118.1,29.7,119.1z M17,110.6c-0.4,0-0.7-0.3-0.7-0.7
|
||||
c0-0.4,0.3-0.8,0.7-0.8c0.4,0,0.8,0.4,0.8,0.7C17.7,110.3,17.4,110.6,17,110.6z M27.4,113c0.3,0.3,0.6,0.7,1,1
|
||||
c-0.7,0.7-1.4,1.4-2.1,2.1c-0.3-0.3-0.7-0.7-1-1C26,114.4,26.7,113.7,27.4,113z"/>
|
||||
<g class="st0">
|
||||
<path class="st9" d="M18.5,141.4v1.1H14v-6.4h4.4v1.1h-3.1v1.5H18v1h-2.7v1.7H18.5z"/>
|
||||
<path class="st9" d="M19.7,142.4v-6.4H22c0.5,0,1,0.1,1.4,0.3s0.7,0.4,1,0.7c0.3,0.3,0.5,0.6,0.6,1c0.1,0.4,0.2,0.8,0.2,1.2
|
||||
c0,0.5-0.1,0.9-0.2,1.3c-0.1,0.4-0.4,0.7-0.6,1c-0.3,0.3-0.6,0.5-1,0.6c-0.4,0.2-0.8,0.2-1.3,0.2H19.7z M23.9,139.2
|
||||
c0-0.3,0-0.6-0.1-0.8s-0.2-0.5-0.4-0.7c-0.2-0.2-0.4-0.3-0.6-0.4c-0.2-0.1-0.5-0.2-0.8-0.2H21v4.2H22c0.3,0,0.6-0.1,0.8-0.2
|
||||
c0.2-0.1,0.4-0.3,0.6-0.4s0.3-0.4,0.4-0.7C23.9,139.8,23.9,139.5,23.9,139.2z"/>
|
||||
<path class="st9" d="M26.4,142.4v-6.4h1.2v6.4H26.4z"/>
|
||||
<path class="st9" d="M34,137.1h-2v5.3h-1.2v-5.3h-2v-1.1H34V137.1z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.2 KiB |
|
@ -27,6 +27,7 @@
|
|||
|
||||
// UTILITIES -------------
|
||||
//
|
||||
function ignore() { }
|
||||
|
||||
// Utility to make it easier to setup and disconnect cleanly.
|
||||
function setupHandler(event, handler) {
|
||||
|
@ -106,7 +107,7 @@ function Trigger() {
|
|||
};
|
||||
that.full = function () {
|
||||
return (that.state === 'full') ? 1.0 : 0.0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// VERTICAL FIELD OF VIEW ---------
|
||||
|
@ -229,10 +230,9 @@ function updateSeeking() {
|
|||
}
|
||||
averageMouseVelocity = lastIntegration = 0;
|
||||
var lookAt2D = HMD.getHUDLookAtPosition2D();
|
||||
if (!lookAt2D) {
|
||||
// FIXME - determine if this message is useful but make it so it doesn't spam the
|
||||
// log in the case that it is happening
|
||||
//print('Cannot seek without lookAt position');
|
||||
if (!lookAt2D) { // If this happens, something has gone terribly wrong.
|
||||
print('Cannot seek without lookAt position');
|
||||
isSeeking = false;
|
||||
return;
|
||||
} // E.g., if parallel to location in HUD
|
||||
var copy = Reticle.position;
|
||||
|
@ -305,7 +305,7 @@ var leftTrigger = new Trigger();
|
|||
var rightTrigger = new Trigger();
|
||||
var activeTrigger = rightTrigger;
|
||||
var activeHand = Controller.Standard.RightHand;
|
||||
function toggleHand() {
|
||||
function toggleHand() { // unequivocally switch which hand controls mouse position
|
||||
if (activeHand === Controller.Standard.RightHand) {
|
||||
activeHand = Controller.Standard.LeftHand;
|
||||
activeTrigger = leftTrigger;
|
||||
|
@ -314,6 +314,13 @@ function toggleHand() {
|
|||
activeTrigger = rightTrigger;
|
||||
}
|
||||
}
|
||||
function makeToggleAction(hand) { // return a function(0|1) that makes the specified hand control mouse when 1
|
||||
return function (on) {
|
||||
if (on && (activeHand !== hand)) {
|
||||
toggleHand();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
var clickMapping = Controller.newMapping(Script.resolvePath('') + '-click');
|
||||
Script.scriptEnding.connect(clickMapping.disable);
|
||||
|
@ -321,25 +328,14 @@ Script.scriptEnding.connect(clickMapping.disable);
|
|||
// Gather the trigger data for smoothing.
|
||||
clickMapping.from(Controller.Standard.RT).peek().to(rightTrigger.triggerPress);
|
||||
clickMapping.from(Controller.Standard.LT).peek().to(leftTrigger.triggerPress);
|
||||
// The next two lines will be removed soon. Right now I want both trigger and button so we can compare.
|
||||
clickMapping.from(Controller.Standard.RightPrimaryThumb).peek().to(Controller.Actions.ReticleClick);
|
||||
clickMapping.from(Controller.Standard.LeftPrimaryThumb).peek().to(Controller.Actions.ReticleClick);
|
||||
// Full somoothed trigger is a click.
|
||||
// Full smoothed trigger is a click.
|
||||
clickMapping.from(rightTrigger.full).to(Controller.Actions.ReticleClick);
|
||||
clickMapping.from(leftTrigger.full).to(Controller.Actions.ReticleClick);
|
||||
clickMapping.from(Controller.Standard.RightSecondaryThumb).peek().to(Controller.Actions.ContextMenu);
|
||||
clickMapping.from(Controller.Standard.LeftSecondaryThumb).peek().to(Controller.Actions.ContextMenu);
|
||||
// Partial smoothed trigger is activation.
|
||||
clickMapping.from(rightTrigger.partial).to(function (on) {
|
||||
if (on && (activeHand !== Controller.Standard.RightHand)) {
|
||||
toggleHand();
|
||||
}
|
||||
});
|
||||
clickMapping.from(leftTrigger.partial).to(function (on) {
|
||||
if (on && (activeHand !== Controller.Standard.LeftHand)) {
|
||||
toggleHand();
|
||||
}
|
||||
});
|
||||
clickMapping.from(rightTrigger.partial).to(makeToggleAction(Controller.Standard.RightHand));
|
||||
clickMapping.from(leftTrigger.partial).to(makeToggleAction(Controller.Standard.LeftHand));
|
||||
clickMapping.enable();
|
||||
|
||||
// VISUAL AID -----------
|
||||
|
@ -374,6 +370,7 @@ function turnOffVisualization(optionalEnableClicks) { // because we're showing c
|
|||
}
|
||||
var MAX_RAY_SCALE = 32000; // Anything large. It's a scale, not a distance.
|
||||
function updateVisualization(controllerPosition, controllerDirection, hudPosition3d, hudPosition2d) {
|
||||
ignore(controllerPosition, controllerDirection, hudPosition2d);
|
||||
// Show an indication of where the cursor will appear when crossing a HUD element,
|
||||
// and where in-world clicking will occur.
|
||||
//
|
||||
|
@ -408,21 +405,21 @@ function updateVisualization(controllerPosition, controllerDirection, hudPositio
|
|||
function update() {
|
||||
var now = Date.now();
|
||||
if (!handControllerLockOut.expired(now)) {
|
||||
return turnOffVisualization();
|
||||
} // Let them use mouse it in peace.
|
||||
return turnOffVisualization(); // Let them use mouse it in peace.
|
||||
}
|
||||
if (!Menu.isOptionChecked("First Person")) {
|
||||
return turnOffVisualization();
|
||||
} // What to do? menus can be behind hand!
|
||||
if (!Window.hasFocus()) { // Don't mess with other apps
|
||||
return turnOffVisualization();
|
||||
return turnOffVisualization(); // What to do? menus can be behind hand!
|
||||
}
|
||||
if (!Window.hasFocus()) {
|
||||
return turnOffVisualization(); // Don't mess with other apps
|
||||
}
|
||||
leftTrigger.update();
|
||||
rightTrigger.update();
|
||||
var controllerPose = Controller.getPoseValue(activeHand);
|
||||
// Valid if any plugged-in hand controller is "on". (uncradled Hydra, green-lighted Vive...)
|
||||
if (!controllerPose.valid) {
|
||||
return turnOffVisualization();
|
||||
} // Controller is cradled.
|
||||
return turnOffVisualization(); // Controller is cradled.
|
||||
}
|
||||
var controllerPosition = Vec3.sum(Vec3.multiplyQbyV(MyAvatar.orientation, controllerPose.translation),
|
||||
MyAvatar.position);
|
||||
// This gets point direction right, but if you want general quaternion it would be more complicated:
|
||||
|
@ -430,9 +427,9 @@ function update() {
|
|||
|
||||
var hudPoint3d = calculateRayUICollisionPoint(controllerPosition, controllerDirection);
|
||||
if (!hudPoint3d) {
|
||||
// FIXME - determine if this message is useful but make it so it doesn't spam the
|
||||
// log in the case that it is happening
|
||||
//print('Controller is parallel to HUD');
|
||||
if (Menu.isOptionChecked("Overlays")) { // With our hud resetting strategy, hudPoint3d should be valid here
|
||||
print('Controller is parallel to HUD'); // so let us know that our assumptions are wrong.
|
||||
}
|
||||
return turnOffVisualization();
|
||||
}
|
||||
var hudPoint2d = overlayFromWorldPoint(hudPoint3d);
|
||||
|
|
57
scripts/system/hmd.js
Normal file
57
scripts/system/hmd.js
Normal file
|
@ -0,0 +1,57 @@
|
|||
//
|
||||
// hmd.js
|
||||
// scripts/system/
|
||||
//
|
||||
// Created by Howard Stearns on 2 Jun 2016
|
||||
// Copyright 2016 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
Script.include("libraries/toolBars.js");
|
||||
|
||||
var headset; // The preferred headset. Default to the first one found in the following list.
|
||||
var displayMenuName = "Display";
|
||||
var desktopMenuItemName = "Desktop";
|
||||
['OpenVR (Vive)', 'Oculus Rift'].forEach(function (name) {
|
||||
if (!headset && Menu.menuItemExists(displayMenuName, name)) {
|
||||
headset = name;
|
||||
}
|
||||
});
|
||||
|
||||
function initialPosition(windowDimensions, toolbar) {
|
||||
return {
|
||||
x: windowDimensions.x / 2 + (2 * Tool.IMAGE_WIDTH),
|
||||
y: windowDimensions.y
|
||||
};
|
||||
}
|
||||
var toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL, "highfidelity.hmd.toolbar", initialPosition, {
|
||||
x: -Tool.IMAGE_WIDTH / 2,
|
||||
y: -Tool.IMAGE_HEIGHT
|
||||
});
|
||||
var button = toolBar.addTool({
|
||||
imageURL: Script.resolvePath("assets/images/tools/hmd-switch-01.svg"),
|
||||
subImage: {
|
||||
x: 0,
|
||||
y: Tool.IMAGE_WIDTH,
|
||||
width: Tool.IMAGE_WIDTH,
|
||||
height: Tool.IMAGE_HEIGHT
|
||||
},
|
||||
width: Tool.IMAGE_WIDTH,
|
||||
height: Tool.IMAGE_HEIGHT,
|
||||
alpha: 0.9,
|
||||
visible: true,
|
||||
showButtonDown: true
|
||||
});
|
||||
function onMousePress (event) {
|
||||
if (event.isLeftButton && button === toolBar.clicked(Overlays.getOverlayAtPoint(event))) {
|
||||
var isDesktop = Menu.isOptionChecked(desktopMenuItemName);
|
||||
Menu.setIsOptionChecked(isDesktop ? headset : desktopMenuItemName, true);
|
||||
}
|
||||
};
|
||||
Controller.mousePressEvent.connect(onMousePress)
|
||||
Script.scriptEnding.connect(function () {
|
||||
Controller.mousePressEvent.disconnect(onMousePress)
|
||||
toolBar.cleanup();
|
||||
});
|
Loading…
Reference in a new issue