80 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			80 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js'; | ||
|  | 
 | ||
|  | class LineGeometry extends LineSegmentsGeometry { | ||
|  | 
 | ||
|  | 	constructor() { | ||
|  | 
 | ||
|  | 		super(); | ||
|  | 
 | ||
|  | 		this.isLineGeometry = true; | ||
|  | 
 | ||
|  | 		this.type = 'LineGeometry'; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	setPositions( array ) { | ||
|  | 
 | ||
|  | 		// converts [ x1, y1, z1,  x2, y2, z2, ... ] to pairs format
 | ||
|  | 
 | ||
|  | 		const length = array.length - 3; | ||
|  | 		const points = new Float32Array( 2 * length ); | ||
|  | 
 | ||
|  | 		for ( let i = 0; i < length; i += 3 ) { | ||
|  | 
 | ||
|  | 			points[ 2 * i ] = array[ i ]; | ||
|  | 			points[ 2 * i + 1 ] = array[ i + 1 ]; | ||
|  | 			points[ 2 * i + 2 ] = array[ i + 2 ]; | ||
|  | 
 | ||
|  | 			points[ 2 * i + 3 ] = array[ i + 3 ]; | ||
|  | 			points[ 2 * i + 4 ] = array[ i + 4 ]; | ||
|  | 			points[ 2 * i + 5 ] = array[ i + 5 ]; | ||
|  | 
 | ||
|  | 		} | ||
|  | 
 | ||
|  | 		super.setPositions( points ); | ||
|  | 
 | ||
|  | 		return this; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	setColors( array ) { | ||
|  | 
 | ||
|  | 		// converts [ r1, g1, b1,  r2, g2, b2, ... ] to pairs format
 | ||
|  | 
 | ||
|  | 		const length = array.length - 3; | ||
|  | 		const colors = new Float32Array( 2 * length ); | ||
|  | 
 | ||
|  | 		for ( let i = 0; i < length; i += 3 ) { | ||
|  | 
 | ||
|  | 			colors[ 2 * i ] = array[ i ]; | ||
|  | 			colors[ 2 * i + 1 ] = array[ i + 1 ]; | ||
|  | 			colors[ 2 * i + 2 ] = array[ i + 2 ]; | ||
|  | 
 | ||
|  | 			colors[ 2 * i + 3 ] = array[ i + 3 ]; | ||
|  | 			colors[ 2 * i + 4 ] = array[ i + 4 ]; | ||
|  | 			colors[ 2 * i + 5 ] = array[ i + 5 ]; | ||
|  | 
 | ||
|  | 		} | ||
|  | 
 | ||
|  | 		super.setColors( colors ); | ||
|  | 
 | ||
|  | 		return this; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	fromLine( line ) { | ||
|  | 
 | ||
|  | 		const geometry = line.geometry; | ||
|  | 
 | ||
|  | 		this.setPositions( geometry.attributes.position.array ); // assumes non-indexed
 | ||
|  | 
 | ||
|  | 		// set colors, maybe
 | ||
|  | 
 | ||
|  | 		return this; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | export { LineGeometry }; |