diff --git a/src/slice.js b/src/slice.js index 381e155..a5228ff 100644 --- a/src/slice.js +++ b/src/slice.js @@ -123,6 +123,9 @@ module.exports = function(THREE) { }; GeometryBuilder.prototype.closeHoles = function() { + if ( ! this.newEdges[0].length) { + return; + } facesFromEdges(this.newEdges) .forEach(function(faceIndices) { var normal = this.faceNormal(faceIndices); diff --git a/src/test/slice.spec.js b/src/test/slice.spec.js index 05eb235..b5b6893 100644 --- a/src/test/slice.spec.js +++ b/src/test/slice.spec.js @@ -481,6 +481,17 @@ describe("three.js slice geometry", function() { expect(sliced.faces).toEqual(geometry.faces); expect(sliced.faceVertexUvs).toEqual(geometry.faceVertexUvs); }); + + it("sliced with whole geometry in front of plane, with closing holes", function() { + var plane = new THREE.Plane( + new THREE.Vector3(1, 0, 0), + 2 + ); + var sliced = sliceGeometry(geometry, plane, true); + expect(sliced.vertices).toEqual(geometry.vertices); + expect(sliced.faces).toEqual(geometry.faces); + expect(sliced.faceVertexUvs).toEqual(geometry.faceVertexUvs); + }); }); describe("closed geometry", function() {