1
lxl
2022-09-16 2d9ddf8269640309f22053d3c92a38fd77e84358
1
define(["./AttributeCompression-3961575e","./Rectangle-82621db8","./Color-3a9dd5fe","./when-54335d57","./IndexDatatype-edb2f4d6","./Math-7a8129d6","./OrientedBoundingBox-108c8b47","./createTaskProcessorWorker","./Check-24483042","./PixelFormat-d198afce","./WebGLConstants-95ceb4e9","./Transforms-b51fdb37","./RuntimeError-88a32665","./EllipsoidTangentPlane-3e9e5847","./IntersectionTests-afc06c64","./Plane-fd9e13db"],function(Le,Oe,Pe,Ue,Fe,Re,Se,e,a,r,n,t,i,o,s,d){"use strict";var De=new Oe.Cartesian3,Me=new Oe.Ellipsoid,_e=new Oe.Rectangle,Ge={min:void 0,max:void 0,indexBytesPerElement:void 0};function Ye(e,a,r){var n=a.length,t=2+n*Se.OrientedBoundingBox.packedLength+1+function(e){for(var a=e.length,r=0,n=0;n<a;++n)r+=Pe.Color.packedLength+3+e[n].batchIds.length;return r}(r),i=new Float64Array(t),o=0;i[o++]=e,i[o++]=n;for(var s=0;s<n;++s)Se.OrientedBoundingBox.pack(a[s],i,o),o+=Se.OrientedBoundingBox.packedLength;var d=r.length;i[o++]=d;for(var f=0;f<d;++f){var c=r[f];Pe.Color.pack(c.color,i,o),o+=Pe.Color.packedLength,i[o++]=c.offset,i[o++]=c.count;var u=c.batchIds,h=u.length;i[o++]=h;for(var l=0;l<h;++l)i[o++]=u[l]}return i}var Ve=new Oe.Cartesian3,He=new Oe.Cartesian3,We=new Oe.Cartesian3,ze=new Oe.Cartesian3,Ze=new Oe.Cartesian3,je=new Oe.Cartographic,qe=new Oe.Rectangle;return e(function(e,a){var r,n,t,i;r=e.packedBuffer,n=new Float64Array(r),t=0,Ge.indexBytesPerElement=n[t++],Ge.min=n[t++],Ge.max=n[t++],Oe.Cartesian3.unpack(n,t,De),t+=Oe.Cartesian3.packedLength,Oe.Ellipsoid.unpack(n,t,Me),t+=Oe.Ellipsoid.packedLength,Oe.Rectangle.unpack(n,t,_e),i=2===Ge.indexBytesPerElement?new Uint16Array(e.indices):new Uint32Array(e.indices);var o,s,d,f=new Uint16Array(e.positions),c=new Uint32Array(e.counts),u=new Uint32Array(e.indexCounts),h=new Uint32Array(e.batchIds),l=new Uint32Array(e.batchTableColors),g=new Array(c.length),p=De,b=Me,m=_e,y=Ge.min,C=Ge.max,I=e.minimumHeights,v=e.maximumHeights;Ue.defined(I)&&Ue.defined(v)&&(I=new Float32Array(I),v=new Float32Array(v));var w=f.length/2,x=f.subarray(0,w),A=f.subarray(w,2*w);Le.AttributeCompression.zigZagDeltaDecode(x,A);var E=new Float64Array(3*w);for(o=0;o<w;++o){var N=x[o],T=A[o],k=Re.CesiumMath.lerp(m.west,m.east,N/32767),B=Re.CesiumMath.lerp(m.south,m.north,T/32767),L=Oe.Cartographic.fromRadians(k,B,0,je),O=b.cartographicToCartesian(L,Ve);Oe.Cartesian3.pack(O,E,3*o)}var P=c.length,U=new Array(P),F=new Array(P),R=0,S=0;for(o=0;o<P;++o)U[o]=R,F[o]=S,R+=c[o],S+=u[o];var D,M=new Float32Array(3*w*2),_=new Uint16Array(2*w),G=new Uint32Array(F.length),Y=new Uint32Array(u.length),V=[],H={};for(o=0;o<P;++o)d=l[o],Ue.defined(H[d])?(H[d].positionLength+=c[o],H[d].indexLength+=u[o],H[d].batchIds.push(o)):H[d]={positionLength:c[o],indexLength:u[o],offset:0,indexOffset:0,batchIds:[o]};var W=0,z=0;for(d in H)if(H.hasOwnProperty(d)){(D=H[d]).offset=W,D.indexOffset=z;var Z=2*D.positionLength,j=2*D.indexLength+6*D.positionLength;W+=Z,z+=j,D.indexLength=j}var q=[];for(d in H)H.hasOwnProperty(d)&&(D=H[d],q.push({color:Pe.Color.fromRgba(parseInt(d)),offset:D.indexOffset,count:D.indexLength,batchIds:D.batchIds}));for(o=0;o<P;++o){var J=(D=H[d=l[o]]).offset,K=3*J,Q=J,X=U[o],$=c[o],ee=h[o],ae=y,re=C;Ue.defined(I)&&Ue.defined(v)&&(ae=I[o],re=v[o]);var ne=Number.POSITIVE_INFINITY,te=Number.NEGATIVE_INFINITY,ie=Number.POSITIVE_INFINITY,oe=Number.NEGATIVE_INFINITY;for(s=0;s<$;++s){var se=Oe.Cartesian3.unpack(E,3*X+3*s,Ve);b.scaleToGeodeticSurface(se,se);var de=b.cartesianToCartographic(se,je),fe=de.latitude,ce=de.longitude;ne=Math.min(fe,ne),te=Math.max(fe,te),ie=Math.min(ce,ie),oe=Math.max(ce,oe);var ue=b.geodeticSurfaceNormal(se,He),he=Oe.Cartesian3.multiplyByScalar(ue,ae,We),le=Oe.Cartesian3.add(se,he,ze);he=Oe.Cartesian3.multiplyByScalar(ue,re,he);var ge=Oe.Cartesian3.add(se,he,Ze);Oe.Cartesian3.subtract(ge,p,ge),Oe.Cartesian3.subtract(le,p,le),Oe.Cartesian3.pack(ge,M,K),Oe.Cartesian3.pack(le,M,K+3),_[Q]=ee,_[Q+1]=ee,K+=6,Q+=2}(m=qe).west=ie,m.east=oe,m.south=ne,m.north=te,g[o]=Se.OrientedBoundingBox.fromRectangle(m,y,C,b);var pe=D.indexOffset,be=F[o],me=u[o];for(G[o]=pe,s=0;s<me;s+=3){var ye=i[be+s]-X,Ce=i[be+s+1]-X,Ie=i[be+s+2]-X;V[pe++]=2*ye+J,V[pe++]=2*Ce+J,V[pe++]=2*Ie+J,V[pe++]=2*Ie+1+J,V[pe++]=2*Ce+1+J,V[pe++]=2*ye+1+J}for(s=0;s<$;++s){var ve=s,we=(s+1)%$;V[pe++]=2*ve+1+J,V[pe++]=2*we+J,V[pe++]=2*ve+J,V[pe++]=2*ve+1+J,V[pe++]=2*we+1+J,V[pe++]=2*we+J}D.offset+=2*$,D.indexOffset=pe,Y[o]=pe-G[o]}V=Fe.IndexDatatype.createTypedArray(M.length/3,V);for(var xe=q.length,Ae=0;Ae<xe;++Ae){for(var Ee=q[Ae].batchIds,Ne=0,Te=Ee.length,ke=0;ke<Te;++ke)Ne+=Y[Ee[ke]];q[Ae].count=Ne}var Be=Ye(2===V.BYTES_PER_ELEMENT?Fe.IndexDatatype.UNSIGNED_SHORT:Fe.IndexDatatype.UNSIGNED_INT,g,q);return a.push(M.buffer,V.buffer,G.buffer,Y.buffer,_.buffer,Be.buffer),{positions:M.buffer,indices:V.buffer,indexOffsets:G.buffer,indexCounts:Y.buffer,batchIds:_.buffer,packedBuffer:Be.buffer}})});