!function e(t,n,r){function i(s,u){if(!n[s]){if(!t[s]){var a="function"==typeof require&&require;if(!u&&a)return a(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var h=n[s]={exports:{}};t[s][0].call(h.exports,function(e){var n=t[s][1][e];return i(n||e)},h,h.exports,e,t,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s0;){var i=r.pop();if(i===n){for(var o=i,s=[];o.parent;)s.push(o),o=o.parent;return this.cleanUp(s),s.reverse()}i.closed=!0;for(var u=this.neighbours(e,i),a=0,c=u.length;a0&&(this.content[0]=t,this.bubbleUp(0)),e}},{key:"remove",value:function(e){var t=this.content.indexOf(e),n=this.content.pop();t!==this.content.length-1&&(this.content[t]=n,this.scoreFunction(n)0;){var n=(e+1>>1)-1,r=this.content[n];if(!(this.scoreFunction(t)1e4)){i.array_intersect(e.vertexIds,t.polygons[n].vertexIds).length>=2&&e.neighbours.push(t.polygons[n])}}},{key:"_buildPolygonsFromGeometry",value:function(e){var t=this,n=[],r=e.vertices,i=e.faceVertexUvs;e.faces.forEach(function(e){n.push({id:o++,vertexIds:[e.a,e.b,e.c],centroid:e.centroid,normal:e.normal,neighbours:[]})});var s={polygons:n,vertices:r,faceVertexUvs:i};return n.forEach(function(e){t._buildPolygonNeighbours(e,s)}),s}},{key:"_getSharedVerticesInOrder",value:function(e,t){var n=e.vertexIds,r=t.vertexIds,i=[];return n.forEach(function(e){r.includes(e)&&i.push(e)}),i.length<2?[]:(i.includes(n[0])&&i.includes(n[n.length-1])&&n.push(n.shift()),i.includes(r[0])&&i.includes(r[r.length-1])&&r.push(r.shift()),i.length=0,n.forEach(function(e){r.includes(e)&&i.push(e)}),i)}}]),e}();t.exports=s},{"./utils":11}],9:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n0)){t.push(r),r=n=r,o=n,u=s=u,a=s,c=s;continue}o=l,a=c}if(i.triarea2(n,r,h)>=0){if(!(i.vequal(n,r)||i.triarea2(n,o,h)<0)){t.push(o),r=n=o,o=n,u=s=a,a=s,c=s;continue}r=h,u=c}}return 0!==t.length&&i.vequal(t[t.length-1],e[e.length-1].left)||t.push(e[e.length-1].left),this.path=t,t}}]),e}();t.exports=o},{"./utils":11}],10:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n3&&void 0!==arguments[3]&&arguments[3],o=this.zones[t].groups[n],s=this.zones[t].vertices,u=null,a=1/0;return o.forEach(function(t){var n=i.distanceToSquared(t.centroid,e);n2))for(var b=0;b=0&&n.push(e)}),n.length<2)return[];n.includes(e[0])&&n.includes(e[e.length-1])&&e.push(e.shift()),n.includes(t[0])&&n.includes(t[t.length-1])&&t.push(t.shift()),n=[],e.forEach(function(e){t.includes(e)&&n.push(e)});for(var r=n[1],i=n[0],o=e.slice();o[0]!==r;)o.push(o.shift());for(var s=0,u=t.slice();u[0]!==i;)if(u.push(u.shift()),s++>10)throw new Error("Unexpected state");return u.shift(),u.pop(),o=o.concat(u)}},{key:"setPolygonCentroid",value:function(e,t){var n=new THREE.Vector3,r=t.vertices;e.vertexIds.forEach(function(e){n.add(r[e])}),n.divideScalar(e.vertexIds.length),e.centroid.copy(n)}},{key:"cleanPolygon",value:function(e,t){for(var n=[],r=t.vertices,i=0;iMath.PI-.01&&f0?i.forEach(function(e){e<0&&(r=!1)}):i.forEach(function(e){e>0&&(r=!1)}),r}},{key:"distanceToSquared",value:function(e,t){var n=e.x-t.x,r=e.y-t.y,i=e.z-t.z;return n*n+r*r+i*i}},{key:"isPointInPoly",value:function(e,t){for(var n=!1,r=-1,i=e.length,o=i-1;++rr-.5&&this.isPointInPoly(o,e))}},{key:"triarea2",value:function(e,t,n){var r=t.x-e.x,i=t.z-e.z;return(n.x-e.x)*i-r*(n.z-e.z)}},{key:"vequal",value:function(e,t){return this.distanceToSquared(e,t)<1e-5}},{key:"array_intersect",value:function(){var e=void 0,t=void 0,n=void 0,r=void 0,i=void 0,o=[],s={},u=void 0;for(u=arguments.length-1,n=arguments[0].length,t=0,e=0;e<=u;e++)(r=arguments[e].length)