spite/THREE.MeshLine

ThreeJS r125 is incompatible with MeshLine

Blakeinstein opened this issue · 2 comments

Since THREE.Geometry got deprecated, this section breaks

MeshLine.prototype.setGeometry = function(g, c) {
		// as the input geometry are mutated we store them
		// for later retreival when necessary (declaritive architectures)
		this._geometry = g;
		if (g instanceof THREE.Geometry) {
			this.setPoints(g.vertices, c);
		} else if (g instanceof THREE.BufferGeometry) {
			this.setPoints(g.getAttribute("position").array, c);
		} else {
			this.setPoints(g, c);
		}
}

A simple removal of if (g instanceof THREE.Geometry) should resolve this issue.

A simple workaround, for the users currently is to add the following code to their js files.

MeshLine.prototype.setGeometry = function(g, c) {
	// as the input geometry are mutated we store them
	// for later retreival when necessary (declaritive architectures)
	this._geometry = g;
	if (g instanceof THREE.BufferGeometry) {
		this.setPoints(g.getAttribute("position").array, c);
	} else {
		this.setPoints(g, c);
	}
}

Another way to go around this issue is to use setPoints instead of setGeometry

const line = new MeshLine();
line.setPoints(new Float32Array(positions));