raycastWorldUnits function
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,
)
);
}
}
}