| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * @author mrdoob / http://mrdoob.com/
- * @author bhouston / http://exocortex.com/
- * @author stephomi / http://stephaneginier.com/
- */
- ( function ( THREE ) {
- THREE.Raycaster = function ( origin, direction, near, far ) {
- this.ray = new THREE.Ray( origin, direction );
- // direction is assumed to be normalized (for accurate distance calculations)
- this.near = near || 0;
- this.far = far || Infinity;
- this.params = {
- Sprite: {},
- Mesh: {},
- PointCloud: { threshold: 1 },
- LOD: {},
- Line: {}
- };
- };
- var descSort = function ( a, b ) {
- return a.distance - b.distance;
- };
- var intersectObject = function ( object, raycaster, intersects, recursive ) {
- object.raycast( raycaster, intersects );
- if ( recursive === true ) {
- var children = object.children;
- for ( var i = 0, l = children.length; i < l; i ++ ) {
- intersectObject( children[ i ], raycaster, intersects, true );
- }
- }
- };
- //
-
- THREE.Raycaster.prototype = {
- constructor: THREE.Raycaster,
- precision: 0.0001,
- linePrecision: 1,
- set: function ( origin, direction ) {
- this.ray.set( origin, direction );
- // direction is assumed to be normalized (for accurate distance calculations)
- },
- intersectObject: function ( object, recursive ) {
- var intersects = [];
- intersectObject( object, this, intersects, recursive );
- intersects.sort( descSort );
- return intersects;
- },
- intersectObjects: function ( objects, recursive ) {
- var intersects = [];
- for ( var i = 0, l = objects.length; i < l; i ++ ) {
- intersectObject( objects[ i ], this, intersects, recursive );
- }
- intersects.sort( descSort );
- return intersects;
- }
- };
- }( THREE ) );
|