Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function merge(geometry, object) {
- if (geometry.xParts === undefined)
- geometry.xParts = new Array();
- // Id of the next push'd element is the current
- // length of the array.
- var id = geometry.xParts.length;
- // Storing informations about the mesh, and its
- // offset inside the object.
- geometry.xParts.push({
- vertices: [geometry.vertices.length, object.vertices.length],
- faces: [geometry.faces.length, object.vertices.length],
- uvs: [geometry.uvs.length, object.vertices.length]
- });
- // Now that everything has been saved, we can make
- // the merge.
- THREE.GeometryUtils.merge(geometry, object);
- return id;
- }
- function remove(geometry, id) {
- if (geometry.xParts === undefined)
- return ;
- if (geometry.xParts.length >= id)
- return ;
- if (geometry.xParts[id] === null)
- return ;
- // We must not be able to remove same mesh twice
- // But we can't just splice it, or all others ids will
- // be invalids.
- var part = geometry.xParts[id];
- geometry.xParts[id] = null;
- // Removing mesh informations
- geometry.vertices.slice(part.vertices[0], part.vertices[1]);
- geometry.faces.slice(part.faces[0], part.faces[1]);
- geometry.uvs.slice(part.uvs[0], part.uvs[1]);
- // Updating index of next geometry parts
- for (var t = id; t < geometry.xParts.length; ++t) {
- var temp = geometry.xParts[t];
- temp.vertices[0] -= part.vertices[1];
- temp.faces[0] -= part.faces[1];
- temp.uvs[0] -= part.uvs[1];
- }
- }
Add Comment
Please, Sign In to add comment