|
@@ -107329,6 +107329,7 @@ var BABYLON;
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
+ this._cachedAngularSensibility = { angularSensibilityX: null, angularSensibilityY: null, angularSensibility: null };
|
|
|
this.beforeRender = function () {
|
|
|
if (_this._leftController && _this._leftController._activePointer) {
|
|
|
_this._castRayAndSelectObject(_this._leftController);
|
|
@@ -107481,6 +107482,7 @@ var BABYLON;
|
|
|
// Create VR cameras
|
|
|
if (webVROptions.createFallbackVRDeviceOrientationFreeCamera) {
|
|
|
this._vrDeviceOrientationCamera = new BABYLON.VRDeviceOrientationFreeCamera("VRDeviceOrientationVRHelper", this._position, this._scene);
|
|
|
+ this._vrDeviceOrientationCamera.angularSensibility = Number.MAX_VALUE;
|
|
|
}
|
|
|
this._webVRCamera = new BABYLON.WebVRFreeCamera("WebVRHelper", this._position, this._scene, webVROptions);
|
|
|
this._webVRCamera.useStandingMatrix();
|
|
@@ -107903,6 +107905,7 @@ var BABYLON;
|
|
|
this._position = this._scene.activeCamera.position.clone();
|
|
|
if (this.vrDeviceOrientationCamera) {
|
|
|
this.vrDeviceOrientationCamera.rotation = BABYLON.Quaternion.FromRotationMatrix(this._scene.activeCamera.getWorldMatrix().getRotationMatrix()).toEulerAngles();
|
|
|
+ this.vrDeviceOrientationCamera.angularSensibility = 2000;
|
|
|
}
|
|
|
if (this.webVRCamera) {
|
|
|
var currentYRotation = this.webVRCamera.deviceRotationQuaternion.toEulerAngles().y;
|
|
@@ -107913,6 +107916,19 @@ var BABYLON;
|
|
|
}
|
|
|
// make sure that we return to the last active camera
|
|
|
this._existingCamera = this._scene.activeCamera;
|
|
|
+ // Remove and cache angular sensability to avoid camera rotation when in VR
|
|
|
+ if (this._existingCamera.angularSensibilityX) {
|
|
|
+ this._cachedAngularSensibility.angularSensibilityX = this._existingCamera.angularSensibilityX;
|
|
|
+ this._existingCamera.angularSensibilityX = Number.MAX_VALUE;
|
|
|
+ }
|
|
|
+ if (this._existingCamera.angularSensibilityY) {
|
|
|
+ this._cachedAngularSensibility.angularSensibilityY = this._existingCamera.angularSensibilityY;
|
|
|
+ this._existingCamera.angularSensibilityY = Number.MAX_VALUE;
|
|
|
+ }
|
|
|
+ if (this._existingCamera.angularSensibility) {
|
|
|
+ this._cachedAngularSensibility.angularSensibility = this._existingCamera.angularSensibility;
|
|
|
+ this._existingCamera.angularSensibility = Number.MAX_VALUE;
|
|
|
+ }
|
|
|
}
|
|
|
if (this._webVRrequesting) {
|
|
|
return;
|
|
@@ -107960,16 +107976,45 @@ var BABYLON;
|
|
|
if (this._scene.activeCamera) {
|
|
|
this._position = this._scene.activeCamera.position.clone();
|
|
|
}
|
|
|
+ if (this.vrDeviceOrientationCamera) {
|
|
|
+ this.vrDeviceOrientationCamera.angularSensibility = Number.MAX_VALUE;
|
|
|
+ }
|
|
|
if (this._deviceOrientationCamera) {
|
|
|
this._deviceOrientationCamera.position = this._position;
|
|
|
this._scene.activeCamera = this._deviceOrientationCamera;
|
|
|
if (this._canvas) {
|
|
|
this._scene.activeCamera.attachControl(this._canvas);
|
|
|
}
|
|
|
+ // Restore angular sensibility
|
|
|
+ if (this._cachedAngularSensibility.angularSensibilityX) {
|
|
|
+ this._deviceOrientationCamera.angularSensibilityX = this._cachedAngularSensibility.angularSensibilityX;
|
|
|
+ this._cachedAngularSensibility.angularSensibilityX = null;
|
|
|
+ }
|
|
|
+ if (this._cachedAngularSensibility.angularSensibilityY) {
|
|
|
+ this._deviceOrientationCamera.angularSensibilityY = this._cachedAngularSensibility.angularSensibilityY;
|
|
|
+ this._cachedAngularSensibility.angularSensibilityY = null;
|
|
|
+ }
|
|
|
+ if (this._cachedAngularSensibility.angularSensibility) {
|
|
|
+ this._deviceOrientationCamera.angularSensibility = this._cachedAngularSensibility.angularSensibility;
|
|
|
+ this._cachedAngularSensibility.angularSensibility = null;
|
|
|
+ }
|
|
|
}
|
|
|
else if (this._existingCamera) {
|
|
|
this._existingCamera.position = this._position;
|
|
|
this._scene.activeCamera = this._existingCamera;
|
|
|
+ // Restore angular sensibility
|
|
|
+ if (this._cachedAngularSensibility.angularSensibilityX) {
|
|
|
+ this._existingCamera.angularSensibilityX = this._cachedAngularSensibility.angularSensibilityX;
|
|
|
+ this._cachedAngularSensibility.angularSensibilityX = null;
|
|
|
+ }
|
|
|
+ if (this._cachedAngularSensibility.angularSensibilityY) {
|
|
|
+ this._existingCamera.angularSensibilityY = this._cachedAngularSensibility.angularSensibilityY;
|
|
|
+ this._cachedAngularSensibility.angularSensibilityY = null;
|
|
|
+ }
|
|
|
+ if (this._cachedAngularSensibility.angularSensibility) {
|
|
|
+ this._existingCamera.angularSensibility = this._cachedAngularSensibility.angularSensibility;
|
|
|
+ this._cachedAngularSensibility.angularSensibility = null;
|
|
|
+ }
|
|
|
}
|
|
|
this.updateButtonVisibility();
|
|
|
if (this._interactionsEnabled) {
|