|
@@ -1,5 +1,6 @@
|
|
|
import {
|
|
|
EventDispatcher,
|
|
|
+ MathUtils,
|
|
|
MOUSE,
|
|
|
Quaternion,
|
|
|
Vector2,
|
|
@@ -43,6 +44,9 @@ class TrackballControls extends EventDispatcher {
|
|
|
this.minDistance = 0;
|
|
|
this.maxDistance = Infinity;
|
|
|
|
|
|
+ this.minZoom = 0;
|
|
|
+ this.maxZoom = Infinity;
|
|
|
+
|
|
|
this.keys = [ 'KeyA' /*A*/, 'KeyS' /*S*/, 'KeyD' /*D*/ ];
|
|
|
|
|
|
this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };
|
|
@@ -205,8 +209,13 @@ class TrackballControls extends EventDispatcher {
|
|
|
|
|
|
} else if ( scope.object.isOrthographicCamera ) {
|
|
|
|
|
|
- scope.object.zoom /= factor;
|
|
|
- scope.object.updateProjectionMatrix();
|
|
|
+ scope.object.zoom = MathUtils.clamp( scope.object.zoom / factor, scope.minZoom, scope.maxZoom );
|
|
|
+
|
|
|
+ if ( lastZoom !== scope.object.zoom ) {
|
|
|
+
|
|
|
+ scope.object.updateProjectionMatrix();
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
} else {
|
|
|
|
|
@@ -226,8 +235,13 @@ class TrackballControls extends EventDispatcher {
|
|
|
|
|
|
} else if ( scope.object.isOrthographicCamera ) {
|
|
|
|
|
|
- scope.object.zoom /= factor;
|
|
|
- scope.object.updateProjectionMatrix();
|
|
|
+ scope.object.zoom = MathUtils.clamp( scope.object.zoom / factor, scope.minZoom, scope.maxZoom );
|
|
|
+
|
|
|
+ if ( lastZoom !== scope.object.zoom ) {
|
|
|
+
|
|
|
+ scope.object.updateProjectionMatrix();
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
} else {
|
|
|
|