Skip to content

Commit

Permalink
LineGeometry: Override setFromPoints method (#29681)
Browse files Browse the repository at this point in the history
* Added setFromPoints method to LineGeometry

* Added method to the docs
  • Loading branch information
felixwri authored Nov 19, 2024
1 parent 9f05e61 commit de9b967
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
6 changes: 6 additions & 0 deletions docs/examples/en/lines/LineGeometry.html
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ <h3>[method:this setPositions]( [param:Array array] )</h3>
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>
Expand Down
25 changes: 25 additions & 0 deletions examples/jsm/lines/LineGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit de9b967

Please sign in to comment.