From c2c432a6fef94e41bbee31bdf6ab9da8a72ebd47 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Fri, 6 May 2016 19:45:03 +0200 Subject: [PATCH] update create lines --- src/sliceActions/createLines.js | 42 ++++++++++++++++----------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/sliceActions/createLines.js b/src/sliceActions/createLines.js index b57b429..6b43817 100644 --- a/src/sliceActions/createLines.js +++ b/src/sliceActions/createLines.js @@ -1,18 +1,14 @@ import THREE from 'three.js'; function addLine(geometry, lineLookup, lines, a, b) { - let index = lineLookup[`${b}_${a}`]; + const index = lines.length; + lineLookup[`${a}_${b}`] = index; - if (index === undefined) { - index = lines.length; - lineLookup[`${a}_${b}`] = index; - - lines.push({ - line: new THREE.Line3(geometry.vertices[a], geometry.vertices[b]), - connects: [], - normals: [] - }); - } + lines.push({ + line: new THREE.Line3(geometry.vertices[a], geometry.vertices[b]), + connects: [], + normals: [] + }); return index; } @@ -28,20 +24,24 @@ export default function createLines(geometry, settings) { if (face.normal.y !== 1 && face.normal.y !== -1) { const normal = new THREE.Vector2(face.normal.z, face.normal.x).normalize(); - // check for only adding unique lines + const lookupA = lineLookup[`${face.b}_${face.a}`]; + const lookupB = lineLookup[`${face.c}_${face.b}`]; + const lookupC = lineLookup[`${face.a}_${face.c}`]; + + // only add unique lines // returns index of said line - const a = addLine(geometry, lineLookup, lines, face.a, face.b); - const b = addLine(geometry, lineLookup, lines, face.b, face.c); - const c = addLine(geometry, lineLookup, lines, face.c, face.a); + const indexA = lookupA !== undefined ? lookupA : addLine(geometry, lineLookup, lines, face.a, face.b); + const indexB = lookupB !== undefined ? lookupB : addLine(geometry, lineLookup, lines, face.b, face.c); + const indexC = lookupC !== undefined ? lookupC : addLine(geometry, lineLookup, lines, face.c, face.a); // set connecting lines (based on face) - lines[a].connects.push(b, c); - lines[b].connects.push(c, a); - lines[c].connects.push(a, b); + lines[indexA].connects.push(indexB, indexC); + lines[indexB].connects.push(indexC, indexA); + lines[indexC].connects.push(indexA, indexB); - lines[a].normals.push(normal); - lines[b].normals.push(normal); - lines[c].normals.push(normal); + lines[indexA].normals.push(normal); + lines[indexB].normals.push(normal); + lines[indexC].normals.push(normal); } }