Browse Source

LineGeometry: Override setFromPoints method (#29681)

* Added setFromPoints method to LineGeometry

* Added method to the docs
felixwri 1 year ago
parent
commit
de9b967720
2 changed files with 31 additions and 0 deletions
  1. 6 0
      docs/examples/en/lines/LineGeometry.html
  2. 25 0
      examples/jsm/lines/LineGeometry.js

+ 6 - 0
docs/examples/en/lines/LineGeometry.html

@@ -75,6 +75,12 @@
 			The length must be a multiple of three.
 		</p>
 
+		<h3>[method:this setFromPoints]( [param:Array points] )</h3>
+		<p>
+			Replace the vertex positions with an array of points.
+			Can be either a `Vector3` or `Vector2` array.
+		</p>
+
 		<h2>Source</h2>
 
 		<p>

+ 25 - 0
examples/jsm/lines/LineGeometry.js

@@ -62,6 +62,31 @@ class LineGeometry extends LineSegmentsGeometry {
 
 	}
 
+	setFromPoints( points ) {
+
+		// converts a vector3 or vector2 array to pairs format
+
+		const length = points.length - 1;
+		const positions = new Float32Array( 6 * length );
+
+		for ( let i = 0; i < length; i ++ ) {
+
+			positions[ 6 * i ] = points[ i ].x;
+			positions[ 6 * i + 1 ] = points[ i ].y;
+			positions[ 6 * i + 2 ] = points[ i ].z || 0;
+
+			positions[ 6 * i + 3 ] = points[ i + 1 ].x;
+			positions[ 6 * i + 4 ] = points[ i + 1 ].y;
+			positions[ 6 * i + 5 ] = points[ i + 1 ].z || 0;
+
+		}
+
+		super.setPositions( positions );
+
+		return this;
+
+	}
+
 	fromLine( line ) {
 
 		const geometry = line.geometry;

粤ICP备19079148号