gl-draw 0.16.0-beta.13 → 0.16.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WebGPULineSegments2.js +3 -3
- package/dist/WebGPULineSegments2.module.js +37 -33
- package/dist/index.js +2 -2
- package/dist/index.module.js +212 -216
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var pe=Object.defineProperty,me=Object.defineProperties;var ve=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,ee=Object.prototype.propertyIsEnumerable;var te=Math.pow,J=(n,e,t)=>e in n?pe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,
|
|
1
|
+
"use strict";var pe=Object.defineProperty,me=Object.defineProperties;var ve=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,ee=Object.prototype.propertyIsEnumerable;var te=Math.pow,J=(n,e,t)=>e in n?pe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,L=(n,e)=>{for(var t in e||(e={}))H.call(e,t)&&J(n,t,e[t]);if(W)for(var t of W(e))ee.call(e,t)&&J(n,t,e[t]);return n},R=(n,e)=>me(n,ve(e));var ie=(n,e)=>{var t={};for(var i in n)H.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&W)for(var i of W(n))e.indexOf(i)<0&&ee.call(n,i)&&(t[i]=n[i]);return t};var re=(n,e,t)=>new Promise((i,r)=>{var o=c=>{try{s(t.next(c))}catch(l){r(l)}},u=c=>{try{s(t.throw(c))}catch(l){r(l)}},s=c=>c.done?i(c.value):Promise.resolve(c.value).then(o,u);s((t=t.apply(n,e)).next())});const a=require("three"),be=require("three/examples/jsm/renderers/CSS2DRenderer"),ne=require("three/examples/jsm/renderers/CSS3DRenderer"),E=require("d3-geo");require("d3-geo-projection");const Q=require("./polar2Cartesian.js"),z=require("d3-array"),X=require("earcut"),ye=require("@turf/boolean-clockwise"),ge=require("delaunator"),Me=require("@turf/boolean-point-in-polygon"),xe=require("d3-geo-voronoi"),se=require("d3-scale"),Se=require("three/examples/jsm/lines/LineSegmentsGeometry"),we=0,je=1,Ae=2,Ce=!1;class fe{constructor(){this.resources=new Set,this.disposeMaterial=!0,this.disposeVideo=!0}track(e){if(!e)return e;if(Array.isArray(e))return e.forEach(t=>this.track(t)),e;if(!this.disposeMaterial&&e instanceof a.Material)return e;if(e instanceof Y?(e.disposeTrack&&e.object3d?this.track(e.object3d):this.resources.add(e),Object.values(e.materialList).map(t=>this.track(t))):(e instanceof a.Object3D||Reflect.has(e,"dispose"))&&this.resources.add(e),e instanceof Y)e.children.forEach(t=>{t.disposeTrack=!1}),this.track(e.children);else if(e instanceof a.Object3D){const t=e;this.track(t.geometry),this.track(t.material),this.track(t.children)}else if(e instanceof a.Material){for(const i of Object.values(e))i instanceof a.Texture&&this.track(i);const t=e;if(t.uniforms){for(const i of Object.values(t.uniforms))if(i){const r=i.value;(r instanceof a.Texture||Array.isArray(r))&&this.track(r)}}}else this.disposeVideo&&e.isVideoTexture&&e.source.data&&this.resources.add(e.source.data);return e}dispose(){const e=[];for(const t of this.resources)t instanceof a.Object3D?e.push(t):t instanceof HTMLVideoElement&&t.pause(),Reflect.has(t,"dispose")&&t.dispose();e.forEach(t=>{t.removeFromParent()}),e.length=0,this.resources.clear()}}const Be=(n,e=1)=>{const t=new a.BufferGeometry;t.setAttribute("position",new a.Float32BufferAttribute(new Array(e*3).fill(0),3)),t.setAttribute("scaleAtt",new a.Float32BufferAttribute(new Array(e).fill(1),1));const i=n.material,r=new a.PointsMaterial({size:10,map:i.map,alphaMap:i.alphaMap,color:i.color,blending:i.blending,depthTest:i.depthTest,depthWrite:!1,opacity:i.opacity,transparent:!0,alphaTest:i.alphaTest,sizeAttenuation:!1});return r.onBeforeCompile=o=>{o.vertexShader=`
|
|
2
2
|
attribute float scaleAtt;
|
|
3
3
|
${o.vertexShader.replace("gl_PointSize = size;","gl_PointSize = size * scaleAtt;")}
|
|
4
|
-
`},new a.Points(t,r)},Pe=(n,e)=>{const t=new a.Object3D;e.forEach((i,r)=>{const o=Q.parseVector3(i.position),u=Q.parseVector3(i.scale||[1,1,1]);t.position.copy(o),t.scale.copy(u),t.updateMatrix();const s=t.matrix.clone();if(n instanceof a.InstancedMesh||n.isInstantiate)n.setMatrixAt(r,s);else if(n instanceof a.Points||n.type==="Points"){const l=n.geometry,f=l.attributes.position.array,h=l.attributes.scaleAtt.array,p=new a.Vector3,d=new a.Vector3,v=new a.Quaternion,m=r*3,y=r*1;s.decompose(p,v,d),f[m]=p.x,f[m+1]=p.y,f[m+2]=p.z,h[y]=Math.max(d.x,d.y,d.z),l.attributes.position.needsUpdate=!0,l.attributes.scaleAtt.needsUpdate=!0}})};class De{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const i=this.lead.handlePick([this],e,t);this.onPointerIndex.push(i)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerLeave(e){this.onPointerEvent("leave",e)}onPointerMove(e){this.onPointerEvent("move",e)}onPointerDown(e){this.onPointerEvent("down",e)}dispose(){this.onPointerIndex.forEach(e=>{this.lead.removePick(e)})}}class Ie extends De{constructor(){super(...arguments),this.userData={},this.materialList={},this.useMaterialType="origin",this.disposeMaterialIfNotUsed=!0}cloneMaterial(){const e=this.object3d;if(!e||!e.material)return;const t=e.material;if(Array.isArray(t))return t.map(i=>{const r=i.userData;i.userData={};const o=i.clone();return i.userData=r,o});{const i=t.userData;t.userData={};const r=t.clone();return t.userData=i,r}}setMaterialList(e,t){const i=this.object3d;if(!i||!i.material)return;this.materialList.origin||(this.materialList.origin=i.material);const r=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=r,r}useMaterial(e){const t=this.object3d;!t||!t.material||this.useMaterialType===e||!this.materialList[e]||(this.useMaterialType=e,t.material=this.materialList[e])}useMListById(e,t){if(!this.mList)return;const i=this.mList.get(e);if(!i)return;const r=this.object3d;Array.isArray(r.material)&&t!==void 0?r.material[t]=i:r.material=i}useMListByName(e,t){if(!this.mList)return;const i=this.mList.getKeyByName(e);i&&this.useMListById(i,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class Y extends Ie{constructor(){super(...arguments),this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,this.disposeTrack=!0}get key(){return this._key}set key(e){this.lead&&this.lead.updateBaseObjectKey(this,e)}get parent(){const e=this.object3d.parent;return e&&this.lead.objMap.get(e)||null}get children(){return this.object3d.children.map(e=>this.lead.objMap.get(e)).filter(e=>!!e)}get position(){return this.object3d.position}get rotation(){return this.object3d.rotation}get scale(){return this.object3d.scale}get lookAt(){return this.object3d.lookAt}add(...e){[...e].forEach(t=>{this.lead.objMap.get(t)?this.object3d.add(t):this.lead.createBaseObject(t,{target:this})})}remove(...e){[...e].forEach(t=>{var i;this.lead.objMap.get(t)?(i=this.lead.objMap.get(t))==null||i.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}get visibleWithAncestors(){if(this.visible){let e=this.parent;for(;e;){if(!e.visible)return!1;e=e.parent}return!0}else return!1}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.object3d.layers.set(we),this.isBloom&&this.enableBloom(),this}hide(){return this.object3d.visible=!1,this.object3d.layers.set(Ae),this}createGroup(){return this.object3d=new a.Group,this}createMesh(...e){return this.object3d=new a.Mesh(...e),this}createPoints(...e){return this.object3d=new a.Points(...e),this}createCSS2DObject(e){return this.object3d=new ye.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ne.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ne.CSS3DSprite(e),this}createSprite(e){return this.object3d=new a.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new a.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new a.Vector3),center:e.getCenter(new a.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return re(this,null,function*(){var c,l;const t=(c=e==null?void 0:e.recursive)!=null?c:!0,i=(l=e==null?void 0:e.cloneMaterial)!=null?l:!1,{objectType:r,objectOptions:o}=this;let u=e==null?void 0:e.create;u===void 0&&(u=f=>{var h;if(this.object3d){if((h=e==null?void 0:e.instancedAttr)!=null&&h.length){const p=e.instancedAttr.length;if(this.object3d instanceof a.Sprite)f.object3d=Be(this.object3d,p);else{const d=this.object3d,v=i?this.cloneMaterial():d.material;f.object3d=new a.InstancedMesh(d.geometry,v,p)}Pe(f.object3d,e==null?void 0:e.instancedAttr)}else f.object3d=this.object3d.clone(!1),i&&f.object3d.material&&(f.object3d.material=this.cloneMaterial());f.object3d.userData.prefab&&delete f.object3d.userData.prefab}});const s=yield this.lead.draw(r,R(E({},o||{}),{create:u,prefab:!1,key:(e==null?void 0:e.key)||(o==null?void 0:o.key),target:(e==null?void 0:e.target)||(o==null?void 0:o.target)}));return this.isBloom&&s.enableBloom(),t&&(yield Promise.all(this.children.map(f=>f.instantiate({cloneMaterial:i,target:s})))),s.isInstantiate=!0,s})}erase(){this.lead.erase(this)}handleMaterialChange(e){}enableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!0),this.isBloom=!0}disableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!1),this.isBloom=!1}dispose(){var e;if(super.dispose(),(e=this.pencil.composerController)==null||e.bloomSelection.delete(this),this.lead&&(this.lead.objects.delete(this.key),this.lead.objectWrapChindIdMap.delete(this),this.object3d&&this.lead.objMap.delete(this.object3d)),this.disposeTrack){const t=new fe;t.disposeMaterial=!1,t.track(this),t.dispose()}}}function Ve(n,e){return n.map(t=>{const i=[];let r;return t.forEach(o=>{if(r){const u=O.geoDistance(o,r)*180/Math.PI;if(u>e){const s=O.geoInterpolate(r,o),c=1/Math.ceil(u/e);let l=c;for(;l<1;)i.push(s(l)),l+=c}}i.push(r=o)}),i})}function Te(n,{minLng:e,maxLng:t,minLat:i,maxLat:r}={}){const o=Math.round(te(360/n,2)/Math.PI),u=(1+Math.sqrt(5))/2,s=d=>d/u*360%360-180,c=d=>Math.acos(2*d/o-1)/Math.PI*180-90,l=d=>o*(Math.cos((d+90)*Math.PI/180)+1)/2,f=[r!==void 0?Math.ceil(l(r)):0,i!==void 0?Math.floor(l(i)):o-1],h=e===void 0&&t===void 0?()=>!0:e===void 0?d=>d<=t:t===void 0?d=>d>=e:t>=e?d=>d>=e&&d<=t:d=>d>=e||d<=t,p=[];for(let d=f[0];d<=f[1];d++){const v=s(d);h(v)&&p.push([v,c(d)])}return p}function Z(n,e,t=!1){return t?O.geoContains(e,n):Me(n,e)}function _e(n,e){const t={type:"Polygon",coordinates:n},[[i,r],[o,u]]=O.geoBounds(t);if(Math.min(Math.abs(o-i),Math.abs(u-r))<e)return[];const s=i>o||u>=89||r<=-89;return Te(e,{minLng:i,maxLng:o,minLat:r,maxLat:u}).filter(c=>Z(c,t,s))}function ze(n,{resolution:e=1/0,bbox:t,projection:i}={}){const r=Ve(n,e),o=L.merge(r),u=_e(n,e),s=[...o,...u],c={type:"Polygon",coordinates:n},[[l,f],[h,p]]=O.geoBounds(c),d=l>h||p>=89||f<=-89;let v=[];if(d){const b=xe.geoVoronoi(s).triangles(),S=new Map(s.map(([C,B],_)=>[`${C}-${B}`,_]));b.features.forEach(C=>{const B=C.geometry.coordinates[0].slice(0,3).reverse(),_=[];if(B.forEach(([P,q])=>{const k=`${P}-${q}`;S.has(k)&&_.push(S.get(k))}),_.length===3){if(_.some(P=>P<o.length)){const P=C.properties.circumcenter;if(!Z(P,c,d))return}v.push(..._)}})}else if(u.length){const b=ge.from(s);for(let S=0,C=b.triangles.length;S<C;S+=3){const B=[2,1,0].map(P=>b.triangles[S+P]),_=B.map(P=>s[P]);if(B.some(P=>P<o.length)){const P=[0,1].map(q=>L.mean(_,k=>k[q]));if(!Z(P,c,d))continue}v.push(...B)}}else{const{vertices:b,holes:S=[]}=X.flatten(r);v=X(b,S,2)}let m=t?[t[0],t[2]]:L.extent(s,b=>b[0]),y=t?[t[1],t[3]]:L.extent(s,b=>b[1]);if(i){const[b,S]=i([m[0],y[0]]),[C,B]=i([m[1],y[1]]);m=[b,C],y=[-S,-B]}const w=se.scaleLinear(m,[0,1]),j=se.scaleLinear(y,[0,1]),D=s.map(([b,S])=>{if(i){const[C,B]=i([b,S]);return[w(C),j(-B)]}else return[w(b),j(S)]});return{contour:r,triangles:{points:s,indices:v,uvs:D}}}const oe=new a.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(n,e,t,i){const r=n.map(o=>o.map(([u,s])=>{if(i){const[c,l]=i([u,s]);return[c,-l,e]}return t?Q.polar2Cartesian(u,s,e):[u,s,e]}));return X.flatten(r)}function Le(n,e,t,i,r){const{vertices:o,holes:u}=G(n,e,i,r),{vertices:s}=G(n,t,i,r),c=L.merge([s,o]),l=Math.round(s.length/3),f=new Set(u);let h=0;const p=[];for(let v=0;v<l;v++){let m=v+1;if(m===l)m=h;else if(f.has(m)){const y=m;m=h,h=y}p.push(v,v+l,m+l),p.push(m+l,m,v)}const d=[];for(let v=1;v>=0;v--)for(let m=0;m<l;m+=1)d.push(m/(l-1),v);return{indices:p,vertices:c,uvs:d,topVerts:s}}function ae(n,e,t,i,r,o){return{indices:i?n.indices:n.indices.slice().reverse(),vertices:G([n.points],e,r,o).vertices,uvs:t}}const he=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:r=!0,hasSide:o=!0,hasBottom:u=!1,hasTop:s=!1,projection:c,bbox:l})=>{n.forEach(w=>{be(w)||w.reverse()});const{contour:f,triangles:h}=ze(n,{resolution:i,bbox:l,projection:c});let p={},d;o&&(p=Le(f,e!=null?e:t,t!=null?t:e,r,c),d=p.topVerts);let v=[];(u||s)&&(v=L.merge(h.uvs));let m={};u&&(m=ae(h,e,v,!1,r,c));let y={};return s&&(y=ae(h,t,v,!0,r,c)),{contour:f,triangles:h,sideTorso:p,bottomCap:m,topCap:y,topVerts:d}};class Ee extends a.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=E({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:i,hasTop:r,topFirst:o,hasBottom:u,hasSide:s,cartesian:c,userDataRsoOffset:l,projection:f}=this.parameters,{contour:h,sideTorso:p,topVerts:d,bottomCap:v,topCap:m}=he(E({},this.parameters));let y=[],w=[],j=[],D=0;const A=b=>{const S=Math.round(y.length/3),C=j.length;y=y.concat(b.vertices),w=w.concat(b.uvs),j=j.concat(S?b.indices.map(B=>B+S):b.indices),this.addGroup(C,j.length-C,D++)};r&&o&&A(m),s&&(A(p),this.userData.topVerts=l?G(h,i+l,c,f).vertices:d),u&&A(v),r&&!o&&A(m),this.setIndex(j),this[oe]("position",new a.Float32BufferAttribute(y,3)),this[oe]("uv",new a.Float32BufferAttribute(w,2)),this.computeVertexNormals()}}const Oe=`
|
|
4
|
+
`},new a.Points(t,r)},Pe=(n,e)=>{const t=new a.Object3D;e.forEach((i,r)=>{const o=Q.parseVector3(i.position),u=Q.parseVector3(i.scale||[1,1,1]);t.position.copy(o),t.scale.copy(u),t.updateMatrix();const s=t.matrix.clone();if(n instanceof a.InstancedMesh||n.isInstantiate)n.setMatrixAt(r,s);else if(n instanceof a.Points||n.type==="Points"){const l=n.geometry,f=l.attributes.position.array,h=l.attributes.scaleAtt.array,p=new a.Vector3,d=new a.Vector3,v=new a.Quaternion,m=r*3,b=r*1;s.decompose(p,v,d),f[m]=p.x,f[m+1]=p.y,f[m+2]=p.z,h[b]=Math.max(d.x,d.y,d.z),l.attributes.position.needsUpdate=!0,l.attributes.scaleAtt.needsUpdate=!0}})};class De{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const i=this.lead.handlePick([this],e,t);this.onPointerIndex.push(i)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerLeave(e){this.onPointerEvent("leave",e)}onPointerMove(e){this.onPointerEvent("move",e)}onPointerDown(e){this.onPointerEvent("down",e)}dispose(){this.onPointerIndex.forEach(e=>{this.lead.removePick(e)})}}class Ie extends De{constructor(){super(...arguments),this.userData={},this.materialList={},this.useMaterialType="origin",this.disposeMaterialIfNotUsed=!0}cloneMaterial(){const e=this.object3d;if(!e||!e.material)return;const t=e.material;if(Array.isArray(t))return t.map(i=>{const r=i.userData;i.userData={};const o=i.clone();return i.userData=r,o});{const i=t.userData;t.userData={};const r=t.clone();return t.userData=i,r}}setMaterialList(e,t){const i=this.object3d;if(!i||!i.material)return;this.materialList.origin||(this.materialList.origin=i.material);const r=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=r,r}useMaterial(e){const t=this.object3d;!t||!t.material||this.useMaterialType===e||!this.materialList[e]||(this.useMaterialType=e,t.material=this.materialList[e])}useMListById(e,t){if(!this.mList)return;const i=this.mList.get(e);if(!i)return;const r=this.object3d;Array.isArray(r.material)&&t!==void 0?r.material[t]=i:r.material=i}useMListByName(e,t){if(!this.mList)return;const i=this.mList.getKeyByName(e);i&&this.useMListById(i,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class Y extends Ie{constructor(){super(...arguments),this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,this.disposeTrack=!0}get key(){return this._key}set key(e){this.lead&&this.lead.updateBaseObjectKey(this,e)}get parent(){const e=this.object3d.parent;return e&&this.lead.objMap.get(e)||null}get children(){return this.object3d.children.map(e=>this.lead.objMap.get(e)).filter(e=>!!e)}get position(){return this.object3d.position}get rotation(){return this.object3d.rotation}get scale(){return this.object3d.scale}get lookAt(){return this.object3d.lookAt}add(...e){[...e].forEach(t=>{this.lead.objMap.get(t)?this.object3d.add(t):this.lead.createBaseObject(t,{target:this})})}remove(...e){[...e].forEach(t=>{var i;this.lead.objMap.get(t)?(i=this.lead.objMap.get(t))==null||i.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}get visibleWithAncestors(){if(this.visible){let e=this.parent;for(;e;){if(!e.visible)return!1;e=e.parent}return!0}else return!1}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.object3d.layers.set(we),this.isBloom&&this.enableBloom(),this}hide(){return this.object3d.visible=!1,this.object3d.layers.set(Ae),this}createGroup(){return this.object3d=new a.Group,this}createMesh(...e){return this.object3d=new a.Mesh(...e),this}createPoints(...e){return this.object3d=new a.Points(...e),this}createCSS2DObject(e){return this.object3d=new be.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ne.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ne.CSS3DSprite(e),this}createSprite(e){return this.object3d=new a.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new a.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new a.Vector3),center:e.getCenter(new a.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return re(this,null,function*(){var c,l;const t=(c=e==null?void 0:e.recursive)!=null?c:!0,i=(l=e==null?void 0:e.cloneMaterial)!=null?l:!1,{objectType:r,objectOptions:o}=this;let u=e==null?void 0:e.create,s;return this.objectType==="BaseObject"?s=this.lead.createBaseObject(this.object3d.clone(!1),{target:e==null?void 0:e.target}):(u===void 0&&(u=f=>{var h;if(this.object3d){if((h=e==null?void 0:e.instancedAttr)!=null&&h.length){const p=e.instancedAttr.length;if(this.object3d instanceof a.Sprite)f.object3d=Be(this.object3d,p);else{const d=this.object3d,v=i?this.cloneMaterial():d.material;f.object3d=new a.InstancedMesh(d.geometry,v,p)}Pe(f.object3d,e==null?void 0:e.instancedAttr)}else f.object3d=this.object3d.clone(!1),i&&f.object3d.material&&(f.object3d.material=this.cloneMaterial());f.object3d.userData.prefab&&delete f.object3d.userData.prefab}}),s=yield this.lead.draw(r,R(L({},o||{}),{create:u,prefab:!1,key:(e==null?void 0:e.key)||(o==null?void 0:o.key),target:(e==null?void 0:e.target)||(o==null?void 0:o.target)}))),this.isBloom&&s.enableBloom(),t&&(yield Promise.all(this.children.map(f=>f.instantiate({cloneMaterial:i,target:s})))),s.isInstantiate=!0,s})}erase(){this.lead.erase(this)}handleMaterialChange(e){}enableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!0),this.isBloom=!0}disableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!1),this.isBloom=!1}dispose(){var e;if(super.dispose(),(e=this.pencil.composerController)==null||e.bloomSelection.delete(this),this.lead&&(this.lead.objects.delete(this.key),this.lead.objectWrapChindIdMap.delete(this),this.object3d&&this.lead.objMap.delete(this.object3d)),this.disposeTrack){const t=new fe;t.disposeMaterial=!1,t.track(this),t.dispose()}}}function Ve(n,e){return n.map(t=>{const i=[];let r;return t.forEach(o=>{if(r){const u=E.geoDistance(o,r)*180/Math.PI;if(u>e){const s=E.geoInterpolate(r,o),c=1/Math.ceil(u/e);let l=c;for(;l<1;)i.push(s(l)),l+=c}}i.push(r=o)}),i})}function Te(n,{minLng:e,maxLng:t,minLat:i,maxLat:r}={}){const o=Math.round(te(360/n,2)/Math.PI),u=(1+Math.sqrt(5))/2,s=d=>d/u*360%360-180,c=d=>Math.acos(2*d/o-1)/Math.PI*180-90,l=d=>o*(Math.cos((d+90)*Math.PI/180)+1)/2,f=[r!==void 0?Math.ceil(l(r)):0,i!==void 0?Math.floor(l(i)):o-1],h=e===void 0&&t===void 0?()=>!0:e===void 0?d=>d<=t:t===void 0?d=>d>=e:t>=e?d=>d>=e&&d<=t:d=>d>=e||d<=t,p=[];for(let d=f[0];d<=f[1];d++){const v=s(d);h(v)&&p.push([v,c(d)])}return p}function Z(n,e,t=!1){return t?E.geoContains(e,n):Me(n,e)}function Oe(n,e){const t={type:"Polygon",coordinates:n},[[i,r],[o,u]]=E.geoBounds(t);if(Math.min(Math.abs(o-i),Math.abs(u-r))<e)return[];const s=i>o||u>=89||r<=-89;return Te(e,{minLng:i,maxLng:o,minLat:r,maxLat:u}).filter(c=>Z(c,t,s))}function _e(n,{resolution:e=1/0,bbox:t,projection:i}={}){const r=Ve(n,e),o=z.merge(r),u=Oe(n,e),s=[...o,...u],c={type:"Polygon",coordinates:n},[[l,f],[h,p]]=E.geoBounds(c),d=l>h||p>=89||f<=-89;let v=[];if(d){const y=xe.geoVoronoi(s).triangles(),S=new Map(s.map(([C,B],O)=>[`${C}-${B}`,O]));y.features.forEach(C=>{const B=C.geometry.coordinates[0].slice(0,3).reverse(),O=[];if(B.forEach(([P,q])=>{const k=`${P}-${q}`;S.has(k)&&O.push(S.get(k))}),O.length===3){if(O.some(P=>P<o.length)){const P=C.properties.circumcenter;if(!Z(P,c,d))return}v.push(...O)}})}else if(u.length){const y=ge.from(s);for(let S=0,C=y.triangles.length;S<C;S+=3){const B=[2,1,0].map(P=>y.triangles[S+P]),O=B.map(P=>s[P]);if(B.some(P=>P<o.length)){const P=[0,1].map(q=>z.mean(O,k=>k[q]));if(!Z(P,c,d))continue}v.push(...B)}}else{const{vertices:y,holes:S=[]}=X.flatten(r);v=X(y,S,2)}let m=t?[t[0],t[2]]:z.extent(s,y=>y[0]),b=t?[t[1],t[3]]:z.extent(s,y=>y[1]);if(i){const[y,S]=i([m[0],b[0]]),[C,B]=i([m[1],b[1]]);m=[y,C],b=[-S,-B]}const w=se.scaleLinear(m,[0,1]),j=se.scaleLinear(b,[0,1]),D=s.map(([y,S])=>{if(i){const[C,B]=i([y,S]);return[w(C),j(-B)]}else return[w(y),j(S)]});return{contour:r,triangles:{points:s,indices:v,uvs:D}}}const oe=new a.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(n,e,t,i){const r=n.map(o=>o.map(([u,s])=>{if(i){const[c,l]=i([u,s]);return[c,-l,e]}return t?Q.polar2Cartesian(u,s,e):[u,s,e]}));return X.flatten(r)}function ze(n,e,t,i,r){const{vertices:o,holes:u}=G(n,e,i,r),{vertices:s}=G(n,t,i,r),c=z.merge([s,o]),l=Math.round(s.length/3),f=new Set(u);let h=0;const p=[];for(let v=0;v<l;v++){let m=v+1;if(m===l)m=h;else if(f.has(m)){const b=m;m=h,h=b}p.push(v,v+l,m+l),p.push(m+l,m,v)}const d=[];for(let v=1;v>=0;v--)for(let m=0;m<l;m+=1)d.push(m/(l-1),v);return{indices:p,vertices:c,uvs:d,topVerts:s}}function ae(n,e,t,i,r,o){return{indices:i?n.indices:n.indices.slice().reverse(),vertices:G([n.points],e,r,o).vertices,uvs:t}}const he=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:r=!0,hasSide:o=!0,hasBottom:u=!1,hasTop:s=!1,projection:c,bbox:l})=>{n.forEach(w=>{ye(w)||w.reverse()});const{contour:f,triangles:h}=_e(n,{resolution:i,bbox:l,projection:c});let p={},d;o&&(p=ze(f,e!=null?e:t,t!=null?t:e,r,c),d=p.topVerts);let v=[];(u||s)&&(v=z.merge(h.uvs));let m={};u&&(m=ae(h,e,v,!1,r,c));let b={};return s&&(b=ae(h,t,v,!0,r,c)),{contour:f,triangles:h,sideTorso:p,bottomCap:m,topCap:b,topVerts:d}};class Le extends a.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=L({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:i,hasTop:r,topFirst:o,hasBottom:u,hasSide:s,cartesian:c,userDataRsoOffset:l,projection:f}=this.parameters,{contour:h,sideTorso:p,topVerts:d,bottomCap:v,topCap:m}=he(L({},this.parameters));let b=[],w=[],j=[],D=0;const A=y=>{const S=Math.round(b.length/3),C=j.length;b=b.concat(y.vertices),w=w.concat(y.uvs),j=j.concat(S?y.indices.map(B=>B+S):y.indices),this.addGroup(C,j.length-C,D++)};r&&o&&A(m),s&&(A(p),this.userData.topVerts=l?G(h,i+l,c,f).vertices:d),u&&A(v),r&&!o&&A(m),this.setIndex(j),this[oe]("position",new a.Float32BufferAttribute(b,3)),this[oe]("uv",new a.Float32BufferAttribute(w,2)),this.computeVertexNormals()}}const Ee=`
|
|
5
5
|
#include <fog_pars_fragment>
|
|
6
6
|
#include <logdepthbuf_pars_fragment>
|
|
7
7
|
|
|
@@ -137,4 +137,4 @@ void main() {
|
|
|
137
137
|
#include <logdepthbuf_vertex>
|
|
138
138
|
#include <fog_vertex>
|
|
139
139
|
}
|
|
140
|
-
`;class We extends a.ShaderMaterial{constructor(e={}){const j=e,{lineWidth:t=1,color:i="#ffffff",opacity:r=1,map:o=null,dashOffset:u=0,dashArray:s=0,dashRatio:c=0,sizeAttenuation:l=!0,offsetLoop:f=!0,offset:h=new a.Vector2(0,0),scaleDown:p=0,alphaMap:d=void 0,alphaTest:v=0,repeat:m=new a.Vector2(1,1),resolution:
|
|
140
|
+
`;class We extends a.ShaderMaterial{constructor(e={}){const j=e,{lineWidth:t=1,color:i="#ffffff",opacity:r=1,map:o=null,dashOffset:u=0,dashArray:s=0,dashRatio:c=0,sizeAttenuation:l=!0,offsetLoop:f=!0,offset:h=new a.Vector2(0,0),scaleDown:p=0,alphaMap:d=void 0,alphaTest:v=0,repeat:m=new a.Vector2(1,1),resolution:b=new a.Vector2(1,1)}=j,w=ie(j,["lineWidth","color","opacity","map","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super(R(L({},w),{uniforms:{lineWidth:{value:t},color:{value:new a.Color(i)},opacity:{value:r},map:{value:o},useMap:{value:o?1:0},resolution:{value:b},sizeAttenuation:{value:l?1:0},offset:{value:h},offsetLoop:{value:f?1:0},dashArray:{value:s},dashOffset:{value:u},dashRatio:{value:c},useDash:{value:s>0?1:0},scaleDown:{value:p/10},alphaTest:{value:v},alphaMap:{value:d},useAlphaMap:{value:d?1:0},repeat:{value:m}},vertexShader:ke,fragmentShader:Ee})),this.type="MeshLineMaterial"}get color(){return this.uniforms.color.value}set color(e){this.uniforms.color.value=new a.Color(e)}get opacity(){var e;return((e=this.uniforms)==null?void 0:e.opacity.value)||1}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms&&(this.uniforms.alphaTest.value=e)}get map(){return this.uniforms.map.value}set map(e){this.uniforms.map.value=e,this.uniforms.useMap.value=e?1:0}get repeat(){return this.uniforms.repeat.value}set repeat(e){this.uniforms.repeat.value.copy(e)}get lineWidth(){return this.uniforms.lineWidth.value}set lineWidth(e){this.uniforms.lineWidth.value=e}get sizeAttenuation(){return this.uniforms.sizeAttenuation.value===1}set sizeAttenuation(e){this.uniforms.sizeAttenuation.value=e?1:0}}const F=new a.Vector4,ce=new a.Vector3,le=new a.Vector3,g=new a.Vector4,M=new a.Vector4,I=new a.Vector4,$=new a.Vector3,K=new a.Matrix4,x=new a.Line3,ue=new a.Vector3,N=new a.Box3,U=new a.Sphere,V=new a.Vector4;let T,_;function de(n,e,t){return V.set(0,0,-e,1).applyMatrix4(n.projectionMatrix),V.multiplyScalar(1/V.w),V.x=_/t.width,V.y=_/t.height,V.applyMatrix4(n.projectionMatrixInverse),V.multiplyScalar(1/V.w),Math.abs(Math.max(V.x,V.y))}function Ne(n,e){const t=n.matrixWorld,i=n.geometry,r=i.attributes.instanceStart,o=i.attributes.instanceEnd,u=Math.min(i.instanceCount,r.count);for(let s=0,c=u;s<c;s++){x.start.fromBufferAttribute(r,s),x.end.fromBufferAttribute(o,s),x.applyMatrix4(t);const l=new a.Vector3,f=new a.Vector3;T.distanceSqToSegment(x.start,x.end,f,l),f.distanceTo(l)<_*.5&&e.push({point:f,pointOnLine:l,distance:T.origin.distanceTo(f),object:n,face:null,faceIndex:s,uv:null,uv1:null})}}function Ue(n,e,t){const i=e.projectionMatrix,o=n.material.resolution,u=n.matrixWorld,s=n.geometry,c=s.attributes.instanceStart,l=s.attributes.instanceEnd,f=Math.min(s.instanceCount,c.count),h=-e.near;T.at(1,I),I.w=1,I.applyMatrix4(e.matrixWorldInverse),I.applyMatrix4(i),I.multiplyScalar(1/I.w),I.x*=o.x/2,I.y*=o.y/2,I.z=0,$.copy(I),K.multiplyMatrices(e.matrixWorldInverse,u);for(let p=0,d=f;p<d;p++){if(g.fromBufferAttribute(c,p),M.fromBufferAttribute(l,p),g.w=1,M.w=1,g.applyMatrix4(K),M.applyMatrix4(K),g.z>h&&M.z>h)continue;if(g.z>h){const D=g.z-M.z,A=(g.z-h)/D;g.lerp(M,A)}else if(M.z>h){const D=M.z-g.z,A=(M.z-h)/D;M.lerp(g,A)}g.applyMatrix4(i),M.applyMatrix4(i),g.multiplyScalar(1/g.w),M.multiplyScalar(1/M.w),g.x*=o.x/2,g.y*=o.y/2,M.x*=o.x/2,M.y*=o.y/2,x.start.copy(g),x.start.z=0,x.end.copy(M),x.end.z=0;const m=x.closestPointToPointParameter($,!0);x.at(m,ue);const b=a.MathUtils.lerp(g.z,M.z,m),w=b>=-1&&b<=1,j=$.distanceTo(ue)<_*.5;if(w&&j){x.start.fromBufferAttribute(c,p),x.end.fromBufferAttribute(l,p),x.start.applyMatrix4(u),x.end.applyMatrix4(u);const D=new a.Vector3,A=new a.Vector3;T.distanceSqToSegment(x.start,x.end,A,D),t.push({point:A,pointOnLine:D,distance:T.origin.distanceTo(A),object:n,face:null,faceIndex:p,uv:null,uv1:null})}}}class Ge extends a.Mesh{constructor(e=new Se.LineSegmentsGeometry,t){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,i=e.attributes.instanceEnd,r=new Float32Array(2*t.count);for(let u=0,s=0,c=t.count;u<c;u++,s+=2)ce.fromBufferAttribute(t,u),le.fromBufferAttribute(i,u),r[s]=s===0?0:r[s-1],r[s+1]=r[s]+ce.distanceTo(le);const o=new a.InstancedInterleavedBuffer(r,2,1);return e.setAttribute("instanceDistanceStart",new a.InterleavedBufferAttribute(o,1,0)),e.setAttribute("instanceDistanceEnd",new a.InterleavedBufferAttribute(o,1,1)),this}raycast(e,t){const i=this.material.worldUnits,r=e.camera;r===null&&!i&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const o=e.params.Line2!==void 0&&e.params.Line2.threshold||0;T=e.ray;const u=this.matrixWorld,s=this.geometry,c=this.material;_=c.linewidth+o,s.boundingSphere===null&&s.computeBoundingSphere(),U.copy(s.boundingSphere).applyMatrix4(u);let l;if(i)l=_*.5;else{const h=Math.max(r.near,U.distanceToPoint(T.origin));l=de(r,h,c.resolution)}if(U.radius+=l,T.intersectsSphere(U)===!1)return;s.boundingBox===null&&s.computeBoundingBox(),N.copy(s.boundingBox).applyMatrix4(u);let f;if(i)f=_*.5;else{const h=Math.max(r.near,N.distanceToPoint(T.origin));f=de(r,h,c.resolution)}N.expandByScalar(f),T.intersectsBox(N)!==!1&&(i?Ne(this,t):Ue(this,r,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(F),this.material.uniforms.resolution.value.set(F.z,F.w))}}exports.BLOOM_SCENE=je;exports.BaseObject=Y;exports.IS_DEV=Ce;exports.LineSegments2=Ge;exports.MeshLineMaterial=We;exports.PolygonGeometry=Le;exports.ResourceTracker=fe;exports.getMetas=he;
|
|
@@ -342,8 +342,10 @@ class pt extends ne {
|
|
|
342
342
|
return rt(this, null, function* () {
|
|
343
343
|
var o, c;
|
|
344
344
|
const e = (o = t == null ? void 0 : t.recursive) != null ? o : !0, i = (c = t == null ? void 0 : t.cloneMaterial) != null ? c : !1, { objectType: s, objectOptions: a } = this;
|
|
345
|
-
let l = t == null ? void 0 : t.create;
|
|
346
|
-
|
|
345
|
+
let l = t == null ? void 0 : t.create, r;
|
|
346
|
+
return this.objectType === "BaseObject" ? r = this.lead.createBaseObject(this.object3d.clone(!1), {
|
|
347
|
+
target: t == null ? void 0 : t.target
|
|
348
|
+
}) : (l === void 0 && (l = (f) => {
|
|
347
349
|
var d;
|
|
348
350
|
if (this.object3d) {
|
|
349
351
|
if ((d = t == null ? void 0 : t.instancedAttr) != null && d.length) {
|
|
@@ -352,21 +354,23 @@ class pt extends ne {
|
|
|
352
354
|
f.object3d = ee(this.object3d, h);
|
|
353
355
|
else {
|
|
354
356
|
const u = this.object3d, m = i ? this.cloneMaterial() : u.material;
|
|
355
|
-
f.object3d = new xt(
|
|
357
|
+
f.object3d = new xt(
|
|
358
|
+
u.geometry,
|
|
359
|
+
m,
|
|
360
|
+
h
|
|
361
|
+
);
|
|
356
362
|
}
|
|
357
363
|
ie(f.object3d, t == null ? void 0 : t.instancedAttr);
|
|
358
364
|
} else
|
|
359
365
|
f.object3d = this.object3d.clone(!1), i && f.object3d.material && (f.object3d.material = this.cloneMaterial());
|
|
360
366
|
f.object3d.userData.prefab && delete f.object3d.userData.prefab;
|
|
361
367
|
}
|
|
362
|
-
})
|
|
363
|
-
const r = yield this.lead.draw(s, $(L({}, a || {}), {
|
|
368
|
+
}), r = yield this.lead.draw(s, $(L({}, a || {}), {
|
|
364
369
|
create: l,
|
|
365
370
|
prefab: !1,
|
|
366
371
|
key: (t == null ? void 0 : t.key) || (a == null ? void 0 : a.key),
|
|
367
372
|
target: (t == null ? void 0 : t.target) || (a == null ? void 0 : a.target)
|
|
368
|
-
}))
|
|
369
|
-
return this.isBloom && r.enableBloom(), e && (yield Promise.all(
|
|
373
|
+
}))), this.isBloom && r.enableBloom(), e && (yield Promise.all(
|
|
370
374
|
this.children.map(
|
|
371
375
|
(f) => f.instantiate({
|
|
372
376
|
cloneMaterial: i,
|
|
@@ -449,10 +453,10 @@ function ce(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
449
453
|
f <= -89;
|
|
450
454
|
let m = [];
|
|
451
455
|
if (u) {
|
|
452
|
-
const
|
|
456
|
+
const b = Yt(r).triangles(), x = new Map(
|
|
453
457
|
r.map(([A, C], _) => [`${A}-${C}`, _])
|
|
454
458
|
);
|
|
455
|
-
|
|
459
|
+
b.features.forEach((A) => {
|
|
456
460
|
const C = A.geometry.coordinates[0].slice(0, 3).reverse(), _ = [];
|
|
457
461
|
if (C.forEach(([P, F]) => {
|
|
458
462
|
const k = `${P}-${F}`;
|
|
@@ -471,9 +475,9 @@ function ce(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
471
475
|
}
|
|
472
476
|
});
|
|
473
477
|
} else if (l.length) {
|
|
474
|
-
const
|
|
475
|
-
for (let x = 0, A =
|
|
476
|
-
const C = [2, 1, 0].map((P) =>
|
|
478
|
+
const b = Qt.from(r);
|
|
479
|
+
for (let x = 0, A = b.triangles.length; x < A; x += 3) {
|
|
480
|
+
const C = [2, 1, 0].map((P) => b.triangles[x + P]), _ = C.map((P) => r[P]);
|
|
477
481
|
if (C.some((P) => P < a.length)) {
|
|
478
482
|
const P = [0, 1].map(
|
|
479
483
|
(F) => $t(_, (k) => k[F])
|
|
@@ -488,20 +492,20 @@ function ce(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
488
492
|
m.push(...C);
|
|
489
493
|
}
|
|
490
494
|
} else {
|
|
491
|
-
const { vertices:
|
|
492
|
-
m = qt(
|
|
495
|
+
const { vertices: b, holes: x = [] } = At(s);
|
|
496
|
+
m = qt(b, x, 2);
|
|
493
497
|
}
|
|
494
|
-
let p = e ? [e[0], e[2]] : dt(r, (
|
|
498
|
+
let p = e ? [e[0], e[2]] : dt(r, (b) => b[0]), v = e ? [e[1], e[3]] : dt(r, (b) => b[1]);
|
|
495
499
|
if (i) {
|
|
496
|
-
const [
|
|
497
|
-
p = [
|
|
500
|
+
const [b, x] = i([p[0], v[0]]), [A, C] = i([p[1], v[1]]);
|
|
501
|
+
p = [b, A], v = [-x, -C];
|
|
498
502
|
}
|
|
499
|
-
const w = ht(p, [0, 1]), S = ht(v, [0, 1]), I = r.map(([
|
|
503
|
+
const w = ht(p, [0, 1]), S = ht(v, [0, 1]), I = r.map(([b, x]) => {
|
|
500
504
|
if (i) {
|
|
501
|
-
const [A, C] = i([
|
|
505
|
+
const [A, C] = i([b, x]);
|
|
502
506
|
return [w(A), S(-C)];
|
|
503
507
|
} else
|
|
504
|
-
return [w(
|
|
508
|
+
return [w(b), S(x)];
|
|
505
509
|
});
|
|
506
510
|
return { contour: s, triangles: { points: r, indices: m, uvs: I } };
|
|
507
511
|
}
|
|
@@ -633,10 +637,10 @@ class ze extends Z {
|
|
|
633
637
|
projection: f
|
|
634
638
|
} = this.parameters, { contour: d, sideTorso: h, topVerts: u, bottomCap: m, topCap: p } = ue(L({}, this.parameters));
|
|
635
639
|
let v = [], w = [], S = [], I = 0;
|
|
636
|
-
const j = (
|
|
640
|
+
const j = (b) => {
|
|
637
641
|
const x = Math.round(v.length / 3), A = S.length;
|
|
638
|
-
v = v.concat(
|
|
639
|
-
x ?
|
|
642
|
+
v = v.concat(b.vertices), w = w.concat(b.uvs), S = S.concat(
|
|
643
|
+
x ? b.indices.map((C) => C + x) : b.indices
|
|
640
644
|
), this.addGroup(A, S.length - A, I++);
|
|
641
645
|
};
|
|
642
646
|
s && a && j(p), r && (j(h), this.userData.topVerts = c ? G(
|
|
@@ -892,7 +896,7 @@ class _e extends zt {
|
|
|
892
896
|
this.uniforms.sizeAttenuation.value = t ? 1 : 0;
|
|
893
897
|
}
|
|
894
898
|
}
|
|
895
|
-
const K = new O(),
|
|
899
|
+
const K = new O(), bt = new B(), yt = new B(), y = new O(), g = new O(), D = new O(), Q = new B(), X = new _t(), M = new Et(), gt = new B(), W = new St(), U = new Lt(), T = new O();
|
|
896
900
|
let z, E;
|
|
897
901
|
function Mt(n, t, e) {
|
|
898
902
|
return T.set(0, 0, -t, 1).applyMatrix4(n.projectionMatrix), T.multiplyScalar(1 / T.w), T.x = E / e.width, T.y = E / e.height, T.applyMatrix4(n.projectionMatrixInverse), T.multiplyScalar(1 / T.w), Math.abs(Math.max(T.x, T.y));
|
|
@@ -918,19 +922,19 @@ function pe(n, t, e) {
|
|
|
918
922
|
const i = t.projectionMatrix, a = n.material.resolution, l = n.matrixWorld, r = n.geometry, o = r.attributes.instanceStart, c = r.attributes.instanceEnd, f = Math.min(r.instanceCount, o.count), d = -t.near;
|
|
919
923
|
z.at(1, D), D.w = 1, D.applyMatrix4(t.matrixWorldInverse), D.applyMatrix4(i), D.multiplyScalar(1 / D.w), D.x *= a.x / 2, D.y *= a.y / 2, D.z = 0, Q.copy(D), X.multiplyMatrices(t.matrixWorldInverse, l);
|
|
920
924
|
for (let h = 0, u = f; h < u; h++) {
|
|
921
|
-
if (
|
|
925
|
+
if (y.fromBufferAttribute(o, h), g.fromBufferAttribute(c, h), y.w = 1, g.w = 1, y.applyMatrix4(X), g.applyMatrix4(X), y.z > d && g.z > d)
|
|
922
926
|
continue;
|
|
923
|
-
if (
|
|
924
|
-
const I =
|
|
925
|
-
|
|
927
|
+
if (y.z > d) {
|
|
928
|
+
const I = y.z - g.z, j = (y.z - d) / I;
|
|
929
|
+
y.lerp(g, j);
|
|
926
930
|
} else if (g.z > d) {
|
|
927
|
-
const I = g.z -
|
|
928
|
-
g.lerp(
|
|
931
|
+
const I = g.z - y.z, j = (g.z - d) / I;
|
|
932
|
+
g.lerp(y, j);
|
|
929
933
|
}
|
|
930
|
-
|
|
934
|
+
y.applyMatrix4(i), g.applyMatrix4(i), y.multiplyScalar(1 / y.w), g.multiplyScalar(1 / g.w), y.x *= a.x / 2, y.y *= a.y / 2, g.x *= a.x / 2, g.y *= a.y / 2, M.start.copy(y), M.start.z = 0, M.end.copy(g), M.end.z = 0;
|
|
931
935
|
const p = M.closestPointToPointParameter(Q, !0);
|
|
932
936
|
M.at(p, gt);
|
|
933
|
-
const v = kt.lerp(
|
|
937
|
+
const v = kt.lerp(y.z, g.z, p), w = v >= -1 && v <= 1, S = Q.distanceTo(gt) < E * 0.5;
|
|
934
938
|
if (w && S) {
|
|
935
939
|
M.start.fromBufferAttribute(o, h), M.end.fromBufferAttribute(c, h), M.start.applyMatrix4(l), M.end.applyMatrix4(l);
|
|
936
940
|
const I = new B(), j = new B();
|
|
@@ -955,7 +959,7 @@ class Ee extends wt {
|
|
|
955
959
|
computeLineDistances() {
|
|
956
960
|
const t = this.geometry, e = t.attributes.instanceStart, i = t.attributes.instanceEnd, s = new Float32Array(2 * e.count);
|
|
957
961
|
for (let l = 0, r = 0, o = e.count; l < o; l++, r += 2)
|
|
958
|
-
|
|
962
|
+
bt.fromBufferAttribute(e, l), yt.fromBufferAttribute(i, l), s[r] = r === 0 ? 0 : s[r - 1], s[r + 1] = s[r] + bt.distanceTo(yt);
|
|
959
963
|
const a = new Ot(
|
|
960
964
|
s,
|
|
961
965
|
2,
|