UNPKG

awv3

Version:
1 lines 4.93 kB
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function optimizeGeometry(e,t,r,a){if("Blob"===e.command)return optimizeGeometry(e.data,t,r,a);switch("Geometry"===e.command&&(e.attributes.optimized=!0),e.attributes.action){case"Add":var s=e.attributes.type;if("Part"==s){if(self.postMessage({action:"Result",result:{attributes:{action:"Add",type:"Part",transforms:e.attributes.transforms,removes:e.attributes.removes,min:e.attributes.min,max:e.attributes.max,optimized:!0}},task:r},[]),e.attributes.models){var i=void 0,o=void 0,n=void 0,l=e.attributes.models;for(i=0,n=l.length;i<n;i++){o=l[i],o.action="Add",o.type="Model";var d=[];optimizeGeometry({attributes:o},d,r,a)}}break}if("Model"==s){var u=(e.attributes.protocolVersion,void 0),v=void 0,c=void 0,m=void 0,h=e.attributes.lines||[],p=e.attributes.arcs||[],f=e.attributes.meshes||[];if(e.attributes.edges&&(h=h.concat(e.attributes.edges)),(h.length>0||p.length>0)&&!function(){var r=void 0,s=0,i=64,o=e.attributes.line={groups:[]},n=h.reduce(function(e,t){return e+t.length},0),l=p.reduce(function(e,t){return e+6*i},0);o.vertices=new Float32Array(n+l),t.push(o.vertices.buffer),n=0;for(var d=0,v=h.length;d<v;d++){r=h[d],a.lean||(u={start:n,count:r.length,index:o.groups.length,color:r.color,opacity:r.opacity,meta:(0,_extends3.default)({},r.meta,{type:"line",start:[r[0],r[1],r[2]],end:[r[r.length-3],r[r.length-2],r[r.length-1]],min:[+(1/0),+(1/0),+(1/0)],max:[-(1/0),-(1/0),-(1/0)]})},o.groups.push(u),n+=r.length);for(var c=0,m=r.length/3;c<m;c++)q=r[3*c+0],F=r[3*c+1],P=r[3*c+2],!a.lean&&(0,_helpers.expand)(u.meta.min,u.meta.max,[q,F,P]),o.vertices[s++]=q,o.vertices[s++]=F,o.vertices[s++]=P}for(var f=void 0,g=void 0,b=void 0,x=void 0,y=void 0,_=void 0,M=void 0,A=void 0,k=void 0,w=void 0,z=void 0,G=void 0,q=void 0,F=void 0,P=void 0,R=0,B=p.length;R<B;R++){r=p[R],f=r[9],g=0,b=Math.abs(Math.abs(r[10])-Math.PI)<1e-6?2*Math.PI:r[10],x=[r[0],r[1],r[2]],y=[r[3],r[4],r[5]],_=[r[6],r[7],r[8]],M=[r[3],r[4],r[5]];var D=M;q=D[0],F=D[1],P=D[2],M[0]=F*_[2]-P*_[1],M[1]=P*_[0]-q*_[2],M[2]=q*_[1]-F*_[0],A=Math.sqrt(M[0]*M[0]+M[1]*M[1]+M[2]*M[2]),0!==A?(k=1/A,M[0]*=k,M[1]*=k,M[2]*=k):M[0]=M[1]=M[2]=0;var I=[_[0],_[1],_[2],0,M[0],M[1],M[2],0,y[0],y[1],y[2],0,x[0],x[1],x[2],1];w=g/i*b,z=[f*Math.cos(w),f*Math.sin(w),0],(0,_helpers.applyMatrix)(z,I),a.lean||(u={start:n,count:6*i,index:o.groups.length,color:r.color,opacity:r.opacity,meta:(0,_extends3.default)({},r.meta,{type:"arc",start:z,radius:f,thetaStart:g,thetaLength:b,center:x,zAxis:y,xAxis:_,yAxis:M,min:[+(1/0),+(1/0),+(1/0)],max:[-(1/0),-(1/0),-(1/0)]})},o.groups.push(u),n+=6*i);for(var L=1;L<=i;L++)w=g+L/i*b,G=[f*Math.cos(w),f*Math.sin(w),0],(0,_helpers.applyMatrix)(G,I),q=z[0],F=z[1],P=z[2],!a.lean&&(0,_helpers.expand)(u.meta.min,u.meta.max,[q,F,P]),o.vertices[s++]=q,o.vertices[s++]=F,o.vertices[s++]=P,q=G[0],F=G[1],P=G[2],!a.lean&&(0,_helpers.expand)(u.meta.min,u.meta.max,[q,F,P]),o.vertices[s++]=q,o.vertices[s++]=F,o.vertices[s++]=P,z=[q,F,P]}delete e.attributes.lines}(),f.length>0){for(var g=void 0,b=0,x=0,y=0,_=0,M=e.attributes.mesh={groups:[]},A=0,k=f.length;A<k;A++)g=f[A],b+=g.vertices.length,x+=g.indices.length,g.uvs&&(y+=g.uvs.length),g.normals&&(_+=g.normals.length);if(b>0){M.vertices=new Float32Array(b),t.push(M.vertices.buffer),M.indices=new Uint32Array(x),t.push(M.indices.buffer),y>0&&(M.uvs=new Float32Array(y),t.push(M.uvs.buffer)),_>0&&(M.normals=new Float32Array(_),t.push(M.normals.buffer)),b=0,x=0,y=0,_=0;for(var w=void 0,z=void 0,G=void 0,q=void 0,F=0,P=0,R=0;R<f.length;R++){g=f[R],a.lean||(u={start:P,count:g.indices.length,index:M.groups.length,color:g.color,opacity:g.opacity,meta:(0,_extends3.default)({},g.meta,{type:g.surface.type},g.surface.properties,{min:[+(1/0),+(1/0),+(1/0)],max:[-(1/0),-(1/0),-(1/0)]})},M.groups.push(u),P+=g.indices.length),w=g.vertices;for(var B=0,D=w.length/3;B<D;B++)v=w[3*B+0],c=w[3*B+1],m=w[3*B+2],!a.lean&&(0,_helpers.expand)(u.meta.min,u.meta.max,[v,c,m]),M.vertices[b++]=v,M.vertices[b++]=c,M.vertices[b++]=m;z=g.indices;for(var I=0,L=z.length/3;I<L;I++)M.indices[x++]=z[3*I+0]+F,M.indices[x++]=z[3*I+1]+F,M.indices[x++]=z[3*I+2]+F;if(g.uvs){G=g.uvs;for(var U=0,E=G.length/2;U<E;U++)M.uvs[y++]=G[2*U+0],M.uvs[y++]=G[2*U+1]}if(g.normals){q=g.normals;for(var S=0,V=q.length/3;S<V;S++)M.normals[_++]=q[3*S+0],M.normals[_++]=q[3*S+1],M.normals[_++]=q[3*S+2]}F+=w.length/3}}delete e.attributes.meshes}self.postMessage({action:"Result",result:e,task:r},t)}}}var _extends2=require("babel-runtime/helpers/extends"),_extends3=_interopRequireDefault(_extends2),_helpers=require("../worker/helpers");self.addEventListener("message",function(e){if(e=e.data,"Blob"===e.command)(0,_helpers.unpack)(e),Array.isArray(e.data)&&(e.data=e.data[0]);else if("Geometry"!==e.command)throw"Unknown format";optimizeGeometry(e,void 0,e.task,e.options),self.postMessage({action:"Finished",time:0,size:e.size,task:e.task})},!1);