浏览代码

Merge pull request #951 from RaananW/fix-arc-rotate-panning

Fix arc rotate panning
Raanan Weber 9 年之前
父节点
当前提交
46193d5d17
共有 2 个文件被更改,包括 12 次插入4 次删除
  1. 6 2
      src/Cameras/babylon.arcRotateCamera.js
  2. 6 2
      src/Cameras/babylon.arcRotateCamera.ts

+ 6 - 2
src/Cameras/babylon.arcRotateCamera.js

@@ -42,7 +42,7 @@ var BABYLON;
             this._keys = [];
             this._viewMatrix = new BABYLON.Matrix();
             // Panning
-            this.panningAxis = new BABYLON.Vector3(1, 0, 1);
+            this.panningAxis = new BABYLON.Vector3(1, 1, 0);
             this._isRightClick = false;
             this._isCtrlPushed = false;
             this.checkCollisions = false;
@@ -405,9 +405,13 @@ var BABYLON;
                 if (Math.abs(this.inertialPanningY) < BABYLON.Engine.Epsilon)
                     this.inertialPanningY = 0;
                 this._localDirection.copyFromFloats(this.inertialPanningX, this.inertialPanningY, this.inertialPanningY);
+                this._localDirection.multiplyInPlace(this.panningAxis);
                 this._viewMatrix.invertToRef(this._cameraTransformMatrix);
                 BABYLON.Vector3.TransformNormalToRef(this._localDirection, this._cameraTransformMatrix, this._transformedDirection);
-                this._transformedDirection.multiplyInPlace(this.panningAxis);
+                //Eliminate y if map panning is enabled (panningAxis == 1,0,1)
+                if (!this.panningAxis.y) {
+                    this._transformedDirection.y = 0;
+                }
                 this.target.addInPlace(this._transformedDirection);
             }
             // Limits

+ 6 - 2
src/Cameras/babylon.arcRotateCamera.ts

@@ -46,7 +46,7 @@
         private _MSGestureHandler: MSGesture;
 
         // Panning
-        public panningAxis: Vector3 = new Vector3(1, 0, 1);
+        public panningAxis: Vector3 = new Vector3(1, 1, 0);
         private _localDirection: Vector3;
         private _transformedDirection: Vector3;
         private _isRightClick: boolean = false;
@@ -440,9 +440,13 @@
                     this.inertialPanningY = 0;
 
                 this._localDirection.copyFromFloats(this.inertialPanningX, this.inertialPanningY, this.inertialPanningY);
+                this._localDirection.multiplyInPlace(this.panningAxis);
                 this._viewMatrix.invertToRef(this._cameraTransformMatrix);
                 Vector3.TransformNormalToRef(this._localDirection, this._cameraTransformMatrix, this._transformedDirection);
-                this._transformedDirection.multiplyInPlace(this.panningAxis);
+                //Eliminate y if map panning is enabled (panningAxis == 1,0,1)
+                if (!this.panningAxis.y) {
+					this._transformedDirection.y = 0;
+				}
                 this.target.addInPlace(this._transformedDirection);
             }