var _fatLines = [];
function _createFatLine( lineStrip, geometry, materialOptions ) {
var vertexCount = geometry.vertices.length;
var positions = [];
for ( var i=0 ; i < vertexCount ; i++ ) {
var v = geometry.vertices[i];
positions.push( v.x, v.y, v.z );
// For a line strip, duplicate all but the first and last vertices.
if ( lineStrip && i > 0 && i < vertexCount - 1 ) {
positions.push( v.x, v.y, v.z );
}
}
geometry = new THREE.LineSegmentsGeometry();
geometry.setPositions( positions );
var material = new THREE.LineMaterial( materialOptions );
material.resolution = new THREE.Vector2( window.innerWidth, window.innerHeight );
var line = new THREE.LineSegments2( geometry, material );
line.computeLineDistances();
line.scale.set( 1, 1, 1 );
_fatLines.push( line );
return line;
}
function createFatLineStrip( geometry, materialOptions ) {
return _createFatLine( true, geometry, materialOptions );
}
function createFatLineSegments( geometry, materialOptions ) {
return _createFatLine( false, geometry, materialOptions );
}
function rescaleFatLines() {
var res = new THREE.Vector2( window.innerWidth, window.innerHeight );
var n = _fatLines.length;
for ( var i=0 ; i < n ; i++ ) {
_fatLines[i].material.resolution = res;
}
}