diff --git a/scripts/system/controllers/handControllerPointer.js b/scripts/system/controllers/handControllerPointer.js index ce9b8e403f..5e8c0cb6ba 100644 --- a/scripts/system/controllers/handControllerPointer.js +++ b/scripts/system/controllers/handControllerPointer.js @@ -511,10 +511,6 @@ function update() { return off(); // Let them use mouse in peace. } - if (!Menu.isOptionChecked("First Person")) { - return off(); // What to do? menus can be behind hand! - } - if ((!Window.hasFocus() && !HMD.active) || !Reticle.allowMouseCapture) { // In desktop it's pretty clear when another app is on top. In that case we bail, because // hand controllers might be sputtering "valid" data and that will keep someone from deliberately diff --git a/scripts/system/hmd.js b/scripts/system/hmd.js index e1c846806f..bac8580222 100644 --- a/scripts/system/hmd.js +++ b/scripts/system/hmd.js @@ -26,7 +26,7 @@ var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system"); var button; // Independent and Entity mode make people sick. Third Person and Mirror have traps that we need to work through. // Disable them in hmd. -var desktopOnlyViews = ['Third Person', 'Mirror', 'Independent Mode', 'Entity Mode']; +var desktopOnlyViews = ['Mirror', 'Independent Mode', 'Entity Mode']; function onHmdChanged(isHmd) { button.writeProperty('buttonState', isHmd ? 0 : 1); button.writeProperty('defaultState', isHmd ? 0 : 1); diff --git a/scripts/system/libraries/controllers.js b/scripts/system/libraries/controllers.js index 38febf2de4..51b44ecc5c 100644 --- a/scripts/system/libraries/controllers.js +++ b/scripts/system/libraries/controllers.js @@ -42,6 +42,9 @@ getControllerWorldLocation = function (handController, doOffset) { if (doOffset) { position = Vec3.sum(position, Vec3.multiplyQbyV(orientation, getGrabPointSphereOffset(handController))); } + if (Menu.isOptionChecked("Third Person")) { + position = Vec3.sum(position, Vec3.subtract(Camera.position, MyAvatar.getEyePosition())); + } } else if (!HMD.isHandControllerAvailable()) { position = MyAvatar.getHeadPosition(); orientation = Quat.multiply(MyAvatar.headOrientation, Quat.angleAxis(-90, { x: 1, y: 0, z: 0 }));