|
@@ -289,33 +289,39 @@
|
|
inverseMatrix.getInverse( object.matrixWorld );
|
|
inverseMatrix.getInverse( object.matrixWorld );
|
|
localRay.copy( raycaster.ray ).applyMatrix4( inverseMatrix );
|
|
localRay.copy( raycaster.ray ).applyMatrix4( inverseMatrix );
|
|
|
|
|
|
- var vertices = geometry.vertices;
|
|
|
|
- var nbVertices = vertices.length;
|
|
|
|
- var interSegment = new THREE.Vector3();
|
|
|
|
- var interRay = new THREE.Vector3();
|
|
|
|
- var step = object.type === THREE.LineStrip ? 1 : 2;
|
|
|
|
|
|
+ /* if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
|
+
|
|
|
|
+ } else */ if ( geometry instanceof THREE.Geometry ) {
|
|
|
|
|
|
- for ( var i = 0; i < nbVertices - 1; i = i + step ) {
|
|
|
|
|
|
+ var vertices = geometry.vertices;
|
|
|
|
+ var nbVertices = vertices.length;
|
|
|
|
+ var interSegment = new THREE.Vector3();
|
|
|
|
+ var interRay = new THREE.Vector3();
|
|
|
|
+ var step = object.type === THREE.LineStrip ? 1 : 2;
|
|
|
|
|
|
- var distSq = localRay.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );
|
|
|
|
|
|
+ for ( var i = 0; i < nbVertices - 1; i = i + step ) {
|
|
|
|
|
|
- if ( distSq > precisionSq ) continue;
|
|
|
|
|
|
+ var distSq = localRay.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );
|
|
|
|
|
|
- var distance = localRay.origin.distanceTo( interRay );
|
|
|
|
|
|
+ if ( distSq > precisionSq ) continue;
|
|
|
|
|
|
- if ( distance < raycaster.near || distance > raycaster.far ) continue;
|
|
|
|
|
|
+ var distance = localRay.origin.distanceTo( interRay );
|
|
|
|
|
|
- intersects.push( {
|
|
|
|
|
|
+ if ( distance < raycaster.near || distance > raycaster.far ) continue;
|
|
|
|
|
|
- distance: distance,
|
|
|
|
- // What do we want? intersection point on the ray or on the segment??
|
|
|
|
- // point: raycaster.ray.at( distance ),
|
|
|
|
- point: interSegment.clone().applyMatrix4( object.matrixWorld ),
|
|
|
|
- face: null,
|
|
|
|
- faceIndex: null,
|
|
|
|
- object: object
|
|
|
|
|
|
+ intersects.push( {
|
|
|
|
|
|
- } );
|
|
|
|
|
|
+ distance: distance,
|
|
|
|
+ // What do we want? intersection point on the ray or on the segment??
|
|
|
|
+ // point: raycaster.ray.at( distance ),
|
|
|
|
+ point: interSegment.clone().applyMatrix4( object.matrixWorld ),
|
|
|
|
+ face: null,
|
|
|
|
+ faceIndex: null,
|
|
|
|
+ object: object
|
|
|
|
+
|
|
|
|
+ } );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|