raycastWorldUnits function

void raycastWorldUnits(
  1. LineSegments2 lineSegments,
  2. List<Intersection> intersects
)

Implementation

void raycastWorldUnits(LineSegments2 lineSegments,List<Intersection> intersects ) {
	final matrixWorld = lineSegments.matrixWorld;
	final geometry = lineSegments.geometry!;
	final instanceStart = geometry.attributes['instanceStart'];
	final instanceEnd = geometry.attributes['instanceEnd'];
	final segmentCount = math.min<int>( geometry.instanceCount!, instanceStart.count );

	for (int i = 0, l = segmentCount; i < l; i ++ ) {
		_line.start.fromBuffer( instanceStart, i );
		_line.end.fromBuffer( instanceEnd, i );

		_line.applyMatrix4( matrixWorld );

		final pointOnLine = Vector3();
		final point = Vector3();

		_ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
		final isInside = point.distanceTo( pointOnLine ) < _lineWidth * 0.5;

		if ( isInside ) {

			intersects.add(
        LineIntersection(
          point: point,
          distance: _ray.origin.distanceTo( point ),
          object: lineSegments,
          face: null,
          faceIndex: i,
          uv: null,
          pointOnLine: pointOnLine,
          uv2: null,
        )
      );
		}
	}
}