import { Line } from './Line.js'; import { Vector3 } from '../math/Vector3.js'; import { Float32BufferAttribute } from '../core/BufferAttribute.js'; const _start = /*@__PURE__*/ new Vector3(); const _end = /*@__PURE__*/ new Vector3(); class LineSegments extends Line { constructor(geometry, material) { super(geometry, material); this.type = 'LineSegments'; } computeLineDistances() { const geometry = this.geometry; if (geometry.isBufferGeometry) { // we assume non-indexed geometry if (geometry.index === null) { const positionAttribute = geometry.attributes.position; const lineDistances = []; for (let i = 0, l = positionAttribute.count; i < l; i += 2) { _start.fromBufferAttribute(positionAttribute, i); _end.fromBufferAttribute(positionAttribute, i + 1); lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1]; lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end); } geometry.setAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1)); } else { console.warn('THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.'); } } else if (geometry.isGeometry) { console.error('THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); } return this; } } LineSegments.prototype.isLineSegments = true; export { LineSegments };