THREE.MeshLine icon indicating copy to clipboard operation
THREE.MeshLine copied to clipboard

Is there a reason MeshLine does not inherit from Geometry?

Open drcmda opened this issue 5 years ago • 2 comments

I have to admit i am new to this fantastic lib, but i don't understand why MeshLine has to be a factory class, from the docs it seems like we are supposed to do line.geometry in order to work with it. Couldn't it straight inherit from BufferGeometry instead as well as letting us pass point data via constructor? So that we could do:

const geo = new THREE.MeshLineGeometry(points)
const mat = new THREE.MeshLineMaterial({...})
const mesh = new THREE.Mesh(geo, mat)

I am writing a lib that's supposed to remove imperative object handling in three, and it works well with most datatypes, but the oop stuff in MeshLine is throwing a wrench into it, forcing the user to go out of the declarative, see: https://codesandbox.io/s/kky7yk087v

drcmda avatar Mar 30 '19 14:03 drcmda

It totally could be like that. Not sure why it isn't. Most likely it was simply some imperative code somewhere before being published, and it was easy to just stick it in a class while not modifying the implementation much.

trusktr avatar Nov 27 '19 00:11 trusktr

Ryan King has made this: https://github.com/ryanking1809/three-line-raycast

This allows you to use THREE's own Line2 and LineSegments2 with full raycasting just by dropping it in.

I like it best so far and it can be fully declarative: https://codesandbox.io/s/react-three-fiber-sharper-threejs-qci13 👍

drcmda avatar Nov 27 '19 08:11 drcmda