|
@@ -54,6 +54,20 @@ THREE.SelectionBox = ( function () {
|
|
startPoint = startPoint || this.startPoint;
|
|
startPoint = startPoint || this.startPoint;
|
|
endPoint = endPoint || this.endPoint;
|
|
endPoint = endPoint || this.endPoint;
|
|
|
|
|
|
|
|
+ // Avoid invalid frustum
|
|
|
|
+
|
|
|
|
+ if ( startPoint.x === endPoint.x ) {
|
|
|
|
+
|
|
|
|
+ endPoint.x += Number.EPSILON;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ( startPoint.y === endPoint.y ) {
|
|
|
|
+
|
|
|
|
+ endPoint.y += Number.EPSILON;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
this.camera.updateProjectionMatrix();
|
|
this.camera.updateProjectionMatrix();
|
|
this.camera.updateMatrixWorld();
|
|
this.camera.updateMatrixWorld();
|
|
|
|
|
|
@@ -65,7 +79,7 @@ THREE.SelectionBox = ( function () {
|
|
endPoint.x = Math.max( startPoint.x, endPoint.x );
|
|
endPoint.x = Math.max( startPoint.x, endPoint.x );
|
|
endPoint.y = Math.min( startPoint.y, endPoint.y );
|
|
endPoint.y = Math.min( startPoint.y, endPoint.y );
|
|
|
|
|
|
- vecNear.copy( this.camera.position );
|
|
|
|
|
|
+ vecNear.setFromMatrixPosition( this.camera.matrixWorld );
|
|
vecTopLeft.copy( tmpPoint );
|
|
vecTopLeft.copy( tmpPoint );
|
|
vecTopRight.set( endPoint.x, tmpPoint.y, 0 );
|
|
vecTopRight.set( endPoint.x, tmpPoint.y, 0 );
|
|
vecDownRight.copy( endPoint );
|
|
vecDownRight.copy( endPoint );
|
|
@@ -102,8 +116,6 @@ THREE.SelectionBox = ( function () {
|
|
|
|
|
|
} else if ( this.camera.isOrthographicCamera ) {
|
|
} else if ( this.camera.isOrthographicCamera ) {
|
|
|
|
|
|
- if ( startPoint.equals( endPoint ) ) endPoint.addScalar( Number.EPSILON ); // avoid invalid frustum
|
|
|
|
-
|
|
|
|
var left = Math.min( startPoint.x, endPoint.x );
|
|
var left = Math.min( startPoint.x, endPoint.x );
|
|
var top = Math.max( startPoint.y, endPoint.y );
|
|
var top = Math.max( startPoint.y, endPoint.y );
|
|
var right = Math.max( startPoint.x, endPoint.x );
|
|
var right = Math.max( startPoint.x, endPoint.x );
|