Spaces:
Running
Running
| 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 }; | |