gl-draw 0.15.32 → 0.16.0-beta.1
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 +4 -4
- package/dist/WebGPULineSegments2.module.js +243 -243
- package/dist/core/BaseObject/index.d.ts +1 -0
- package/dist/core/Loader/TextureLoader.d.ts +1 -1
- package/dist/core/Pencil.d.ts +1 -2
- package/dist/index.js +3 -3
- package/dist/index.module.js +417 -508
- package/package.json +1 -1
- package/dist/utils/Timer.d.ts +0 -72
|
@@ -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,E=(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 re=(n,e)=>{var t={};for(var r in n)H.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&W)for(var r of W(n))e.indexOf(r)<0&&ee.call(n,r)&&(t[r]=n[r]);return t};var ie=(n,e,t)=>new Promise((r,i)=>{var c
|
|
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,E=(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 re=(n,e)=>{var t={};for(var r in n)H.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&W)for(var r of W(n))e.indexOf(r)<0&&ee.call(n,r)&&(t[r]=n[r]);return t};var ie=(n,e,t)=>new Promise((r,i)=>{var o=c=>{try{s(t.next(c))}catch(l){i(l)}},d=c=>{try{s(t.throw(c))}catch(l){i(l)}},s=c=>c.done?r(c.value):Promise.resolve(c.value).then(o,d);s((t=t.apply(n,e)).next())});const a=require("three"),ye=require("three/examples/jsm/renderers/CSS2DRenderer"),ne=require("three/examples/jsm/renderers/CSS3DRenderer"),O=require("d3-geo");require("d3-geo-projection");const Q=require("./polar2Cartesian.js"),_=require("d3-array"),X=require("earcut"),be=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 r of Object.values(e))r instanceof a.Texture&&this.track(r);const t=e;if(t.uniforms){for(const r of Object.values(t.uniforms))if(r){const i=r.value;(i instanceof a.Texture||Array.isArray(i))&&this.track(i)}}}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 Pe=(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 r=n.material,i=new a.PointsMaterial({size:10,map:r.map,alphaMap:r.alphaMap,color:r.color,blending:r.blending,depthTest:r.depthTest,depthWrite:!1,opacity:r.opacity,transparent:!0,alphaTest:r.alphaTest,sizeAttenuation:!1});return i.onBeforeCompile=o=>{o.vertexShader=`
|
|
2
2
|
attribute float scaleAtt;
|
|
3
|
-
${
|
|
4
|
-
`},new o.Points(t,i)},Be=(n,e)=>{const t=new o.Object3D;e.forEach((r,i)=>{const c=Q.parseVector3(r.position),u=Q.parseVector3(r.scale||[1,1,1]);t.position.copy(c),t.scale.copy(u),t.updateMatrix();const s=t.matrix.clone();if(n instanceof o.InstancedMesh||n.isInstantiate)n.setMatrixAt(i,s);else if(n instanceof o.Points||n.type==="Points"){const a=n.geometry,p=a.attributes.position.array,f=a.attributes.scaleAtt.array,m=new o.Vector3,d=new o.Vector3,v=new o.Quaternion,h=i*3,y=i*1;s.decompose(m,v,d),p[h]=m.x,p[h+1]=m.y,p[h+2]=m.z,f[y]=Math.max(d.x,d.y,d.z),a.attributes.position.needsUpdate=!0,a.attributes.scaleAtt.needsUpdate=!0}})};class De{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const r=this.lead.handlePick([this],e,t);this.onPointerIndex.push(r)}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(r=>{const i=r.userData;r.userData={};const c=r.clone();return r.userData=i,c});{const r=t.userData;t.userData={};const i=t.clone();return t.userData=r,i}}setMaterialList(e,t){const r=this.object3d;if(!r||!r.material)return;this.materialList.origin||(this.materialList.origin=r.material);const i=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=i,i}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 r=this.mList.get(e);if(!r)return;const i=this.object3d;Array.isArray(i.material)&&t!==void 0?i.material[t]=r:i.material=r}useMListByName(e,t){if(!this.mList)return;const r=this.mList.getKeyByName(e);r&&this.useMListById(r,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.prefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.disposeTrack=!0}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 r;this.lead.objMap.get(t)?(r=this.lead.objMap.get(t))==null||r.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}hide(){return this.object3d.visible=!1,this.object3d.layers.set(Ae),this}createGroup(){return this.object3d=new o.Group,this}createMesh(...e){return this.object3d=new o.Mesh(...e),this}createPoints(...e){return this.object3d=new o.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 o.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new o.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new o.Vector3),center:e.getCenter(new o.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return ie(this,null,function*(){var l;const t=(l=e==null?void 0:e.recursive)!=null?l:!0,{objectType:r,objectOptions:i}=this,[,c]=r.split("#");let u=e==null?void 0:e.create;u===void 0&&(u=a=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const f=e.instancedAttr.length;if(this.object3d instanceof o.Sprite)a.object3d=Pe(this.object3d,f);else{const m=this.object3d,d=this.cloneMaterial();a.object3d=new o.InstancedMesh(m.geometry,d,f)}Be(a.object3d,e==null?void 0:e.instancedAttr)}else a.object3d=this.object3d.clone(!1),a.object3d.material&&(a.object3d.material=this.cloneMaterial());a.object3d.userData.prefab&&delete a.object3d.userData.prefab}});const s=yield this.lead.draw(c,R(E({},i||{}),{create:u,prefab:!1,key:(e==null?void 0:e.key)||(i==null?void 0:i.key),target:(e==null?void 0:e.target)||(i==null?void 0:i.target)}));return this.isBloom&&s.enableBloom(),t&&(yield Promise.all(this.children.map(a=>a.instantiate({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 r=[];let i;return t.forEach(c=>{if(i){const u=O.geoDistance(c,i)*180/Math.PI;if(u>e){const s=O.geoInterpolate(i,c),l=1/Math.ceil(u/e);let a=l;for(;a<1;)r.push(s(a)),a+=l}}r.push(i=c)}),r})}function Te(n,{minLng:e,maxLng:t,minLat:r,maxLat:i}={}){const c=Math.round(te(360/n,2)/Math.PI),u=(1+Math.sqrt(5))/2,s=d=>d/u*360%360-180,l=d=>Math.acos(2*d/c-1)/Math.PI*180-90,a=d=>c*(Math.cos((d+90)*Math.PI/180)+1)/2,p=[i!==void 0?Math.ceil(a(i)):0,r!==void 0?Math.floor(a(r)):c-1],f=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,m=[];for(let d=p[0];d<=p[1];d++){const v=s(d);f(v)&&m.push([v,l(d)])}return m}function Z(n,e,t=!1){return t?O.geoContains(e,n):Me(n,e)}function ze(n,e){const t={type:"Polygon",coordinates:n},[[r,i],[c,u]]=O.geoBounds(t);if(Math.min(Math.abs(c-r),Math.abs(u-i))<e)return[];const s=r>c||u>=89||i<=-89;return Te(e,{minLng:r,maxLng:c,minLat:i,maxLat:u}).filter(l=>Z(l,t,s))}function Le(n,{resolution:e=1/0,bbox:t,projection:r}={}){const i=Ve(n,e),c=_.merge(i),u=ze(n,e),s=[...c,...u],l={type:"Polygon",coordinates:n},[[a,p],[f,m]]=O.geoBounds(l),d=a>f||m>=89||p<=-89;let v=[];if(d){const b=xe.geoVoronoi(s).triangles(),S=new Map(s.map(([C,P],z)=>[`${C}-${P}`,z]));b.features.forEach(C=>{const P=C.geometry.coordinates[0].slice(0,3).reverse(),z=[];if(P.forEach(([B,q])=>{const k=`${B}-${q}`;S.has(k)&&z.push(S.get(k))}),z.length===3){if(z.some(B=>B<c.length)){const B=C.properties.circumcenter;if(!Z(B,l,d))return}v.push(...z)}})}else if(u.length){const b=ge.from(s);for(let S=0,C=b.triangles.length;S<C;S+=3){const P=[2,1,0].map(B=>b.triangles[S+B]),z=P.map(B=>s[B]);if(P.some(B=>B<c.length)){const B=[0,1].map(q=>_.mean(z,k=>k[q]));if(!Z(B,l,d))continue}v.push(...P)}}else{const{vertices:b,holes:S=[]}=X.flatten(i);v=X(b,S,2)}let h=t?[t[0],t[2]]:_.extent(s,b=>b[0]),y=t?[t[1],t[3]]:_.extent(s,b=>b[1]);if(r){const[b,S]=r([h[0],y[0]]),[C,P]=r([h[1],y[1]]);h=[b,C],y=[-S,-P]}const w=se.scaleLinear(h,[0,1]),j=se.scaleLinear(y,[0,1]),D=s.map(([b,S])=>{if(r){const[C,P]=r([b,S]);return[w(C),j(-P)]}else return[w(b),j(S)]});return{contour:i,triangles:{points:s,indices:v,uvs:D}}}const oe=new o.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(n,e,t,r){const i=n.map(c=>c.map(([u,s])=>{if(r){const[l,a]=r([u,s]);return[l,-a,e]}return t?Q.polar2Cartesian(u,s,e):[u,s,e]}));return X.flatten(i)}function _e(n,e,t,r,i){const{vertices:c,holes:u}=G(n,e,r,i),{vertices:s}=G(n,t,r,i),l=_.merge([s,c]),a=Math.round(s.length/3),p=new Set(u);let f=0;const m=[];for(let v=0;v<a;v++){let h=v+1;if(h===a)h=f;else if(p.has(h)){const y=h;h=f,f=y}m.push(v,v+a,h+a),m.push(h+a,h,v)}const d=[];for(let v=1;v>=0;v--)for(let h=0;h<a;h+=1)d.push(h/(a-1),v);return{indices:m,vertices:l,uvs:d,topVerts:s}}function ae(n,e,t,r,i,c){return{indices:r?n.indices:n.indices.slice().reverse(),vertices:G([n.points],e,i,c).vertices,uvs:t}}const he=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:r=1,cartesian:i=!0,hasSide:c=!0,hasBottom:u=!1,hasTop:s=!1,projection:l,bbox:a})=>{n.forEach(w=>{be(w)||w.reverse()});const{contour:p,triangles:f}=Le(n,{resolution:r,bbox:a,projection:l});let m={},d;c&&(m=_e(p,e!=null?e:t,t!=null?t:e,i,l),d=m.topVerts);let v=[];(u||s)&&(v=_.merge(f.uvs));let h={};u&&(h=ae(f,e,v,!1,i,l));let y={};return s&&(y=ae(f,t,v,!0,i,l)),{contour:p,triangles:f,sideTorso:m,bottomCap:h,topCap:y,topVerts:d}};class Ee extends o.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:r,hasTop:i,topFirst:c,hasBottom:u,hasSide:s,cartesian:l,userDataRsoOffset:a,projection:p}=this.parameters,{contour:f,sideTorso:m,topVerts:d,bottomCap:v,topCap:h}=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(P=>P+S):b.indices),this.addGroup(C,j.length-C,D++)};i&&c&&A(h),s&&(A(m),this.userData.topVerts=a?G(f,r+a,l,p).vertices:d),u&&A(v),i&&!c&&A(h),this.setIndex(j),this[oe]("position",new o.Float32BufferAttribute(y,3)),this[oe]("uv",new o.Float32BufferAttribute(w,2)),this.computeVertexNormals()}}const Oe=`
|
|
3
|
+
${o.vertexShader.replace("gl_PointSize = size;","gl_PointSize = size * scaleAtt;")}
|
|
4
|
+
`},new a.Points(t,i)},Be=(n,e)=>{const t=new a.Object3D;e.forEach((r,i)=>{const o=Q.parseVector3(r.position),d=Q.parseVector3(r.scale||[1,1,1]);t.position.copy(o),t.scale.copy(d),t.updateMatrix();const s=t.matrix.clone();if(n instanceof a.InstancedMesh||n.isInstantiate)n.setMatrixAt(i,s);else if(n instanceof a.Points||n.type==="Points"){const l=n.geometry,v=l.attributes.position.array,f=l.attributes.scaleAtt.array,p=new a.Vector3,u=new a.Vector3,m=new a.Quaternion,h=i*3,y=i*1;s.decompose(p,m,u),v[h]=p.x,v[h+1]=p.y,v[h+2]=p.z,f[y]=Math.max(u.x,u.y,u.z),l.attributes.position.needsUpdate=!0,l.attributes.scaleAtt.needsUpdate=!0}})};class De{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const r=this.lead.handlePick([this],e,t);this.onPointerIndex.push(r)}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(r=>{const i=r.userData;r.userData={};const o=r.clone();return r.userData=i,o});{const r=t.userData;t.userData={};const i=t.clone();return t.userData=r,i}}setMaterialList(e,t){const r=this.object3d;if(!r||!r.material)return;this.materialList.origin||(this.materialList.origin=r.material);const i=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=i,i}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 r=this.mList.get(e);if(!r)return;const i=this.object3d;Array.isArray(i.material)&&t!==void 0?i.material[t]=r:i.material=r}useMListByName(e,t){if(!this.mList)return;const r=this.mList.getKeyByName(e);r&&this.useMListById(r,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.prefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.disposeTrack=!0}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 r;this.lead.objMap.get(t)?(r=this.lead.objMap.get(t))==null||r.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}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 ie(this,null,function*(){var l,v;const t=(l=e==null?void 0:e.recursive)!=null?l:!0,r=(v=e==null?void 0:e.cloneMaterial)!=null?v:!1,{objectType:i,objectOptions:o}=this,[,d]=i.split("#");let s=e==null?void 0:e.create;s===void 0&&(s=f=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const u=e.instancedAttr.length;if(this.object3d instanceof a.Sprite)f.object3d=Pe(this.object3d,u);else{const m=this.object3d,h=r?this.cloneMaterial():m.material;f.object3d=new a.InstancedMesh(m.geometry,h,u)}Be(f.object3d,e==null?void 0:e.instancedAttr)}else f.object3d=this.object3d.clone(!1),r&&f.object3d.material&&(f.object3d.material=this.cloneMaterial());f.object3d.userData.prefab&&delete f.object3d.userData.prefab}});const c=yield this.lead.draw(d,R(E({},o||{}),{create:s,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&&c.enableBloom(),t&&(yield Promise.all(this.children.map(f=>f.instantiate({target:c})))),c.isInstantiate=!0,c})}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 r=[];let i;return t.forEach(o=>{if(i){const d=O.geoDistance(o,i)*180/Math.PI;if(d>e){const s=O.geoInterpolate(i,o),c=1/Math.ceil(d/e);let l=c;for(;l<1;)r.push(s(l)),l+=c}}r.push(i=o)}),r})}function Te(n,{minLng:e,maxLng:t,minLat:r,maxLat:i}={}){const o=Math.round(te(360/n,2)/Math.PI),d=(1+Math.sqrt(5))/2,s=u=>u/d*360%360-180,c=u=>Math.acos(2*u/o-1)/Math.PI*180-90,l=u=>o*(Math.cos((u+90)*Math.PI/180)+1)/2,v=[i!==void 0?Math.ceil(l(i)):0,r!==void 0?Math.floor(l(r)):o-1],f=e===void 0&&t===void 0?()=>!0:e===void 0?u=>u<=t:t===void 0?u=>u>=e:t>=e?u=>u>=e&&u<=t:u=>u>=e||u<=t,p=[];for(let u=v[0];u<=v[1];u++){const m=s(u);f(m)&&p.push([m,c(u)])}return p}function Z(n,e,t=!1){return t?O.geoContains(e,n):Me(n,e)}function ze(n,e){const t={type:"Polygon",coordinates:n},[[r,i],[o,d]]=O.geoBounds(t);if(Math.min(Math.abs(o-r),Math.abs(d-i))<e)return[];const s=r>o||d>=89||i<=-89;return Te(e,{minLng:r,maxLng:o,minLat:i,maxLat:d}).filter(c=>Z(c,t,s))}function Le(n,{resolution:e=1/0,bbox:t,projection:r}={}){const i=Ve(n,e),o=_.merge(i),d=ze(n,e),s=[...o,...d],c={type:"Polygon",coordinates:n},[[l,v],[f,p]]=O.geoBounds(c),u=l>f||p>=89||v<=-89;let m=[];if(u){const b=xe.geoVoronoi(s).triangles(),S=new Map(s.map(([C,P],z)=>[`${C}-${P}`,z]));b.features.forEach(C=>{const P=C.geometry.coordinates[0].slice(0,3).reverse(),z=[];if(P.forEach(([B,q])=>{const k=`${B}-${q}`;S.has(k)&&z.push(S.get(k))}),z.length===3){if(z.some(B=>B<o.length)){const B=C.properties.circumcenter;if(!Z(B,c,u))return}m.push(...z)}})}else if(d.length){const b=ge.from(s);for(let S=0,C=b.triangles.length;S<C;S+=3){const P=[2,1,0].map(B=>b.triangles[S+B]),z=P.map(B=>s[B]);if(P.some(B=>B<o.length)){const B=[0,1].map(q=>_.mean(z,k=>k[q]));if(!Z(B,c,u))continue}m.push(...P)}}else{const{vertices:b,holes:S=[]}=X.flatten(i);m=X(b,S,2)}let h=t?[t[0],t[2]]:_.extent(s,b=>b[0]),y=t?[t[1],t[3]]:_.extent(s,b=>b[1]);if(r){const[b,S]=r([h[0],y[0]]),[C,P]=r([h[1],y[1]]);h=[b,C],y=[-S,-P]}const w=se.scaleLinear(h,[0,1]),j=se.scaleLinear(y,[0,1]),D=s.map(([b,S])=>{if(r){const[C,P]=r([b,S]);return[w(C),j(-P)]}else return[w(b),j(S)]});return{contour:i,triangles:{points:s,indices:m,uvs:D}}}const oe=new a.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(n,e,t,r){const i=n.map(o=>o.map(([d,s])=>{if(r){const[c,l]=r([d,s]);return[c,-l,e]}return t?Q.polar2Cartesian(d,s,e):[d,s,e]}));return X.flatten(i)}function _e(n,e,t,r,i){const{vertices:o,holes:d}=G(n,e,r,i),{vertices:s}=G(n,t,r,i),c=_.merge([s,o]),l=Math.round(s.length/3),v=new Set(d);let f=0;const p=[];for(let m=0;m<l;m++){let h=m+1;if(h===l)h=f;else if(v.has(h)){const y=h;h=f,f=y}p.push(m,m+l,h+l),p.push(h+l,h,m)}const u=[];for(let m=1;m>=0;m--)for(let h=0;h<l;h+=1)u.push(h/(l-1),m);return{indices:p,vertices:c,uvs:u,topVerts:s}}function ae(n,e,t,r,i,o){return{indices:r?n.indices:n.indices.slice().reverse(),vertices:G([n.points],e,i,o).vertices,uvs:t}}const he=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:r=1,cartesian:i=!0,hasSide:o=!0,hasBottom:d=!1,hasTop:s=!1,projection:c,bbox:l})=>{n.forEach(w=>{be(w)||w.reverse()});const{contour:v,triangles:f}=Le(n,{resolution:r,bbox:l,projection:c});let p={},u;o&&(p=_e(v,e!=null?e:t,t!=null?t:e,i,c),u=p.topVerts);let m=[];(d||s)&&(m=_.merge(f.uvs));let h={};d&&(h=ae(f,e,m,!1,i,c));let y={};return s&&(y=ae(f,t,m,!0,i,c)),{contour:v,triangles:f,sideTorso:p,bottomCap:h,topCap:y,topVerts:u}};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:r,hasTop:i,topFirst:o,hasBottom:d,hasSide:s,cartesian:c,userDataRsoOffset:l,projection:v}=this.parameters,{contour:f,sideTorso:p,topVerts:u,bottomCap:m,topCap:h}=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(P=>P+S):b.indices),this.addGroup(C,j.length-C,D++)};i&&o&&A(h),s&&(A(p),this.userData.topVerts=l?G(f,r+l,c,v).vertices:u),d&&A(m),i&&!o&&A(h),this.setIndex(j),this[oe]("position",new a.Float32BufferAttribute(y,3)),this[oe]("uv",new a.Float32BufferAttribute(w,2)),this.computeVertexNormals()}}const Oe=`
|
|
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
|
|
140
|
+
`;class We extends a.ShaderMaterial{constructor(e={}){const j=e,{lineWidth:t=1,color:r="#ffffff",opacity:i=1,map:o=null,dashOffset:d=0,dashArray:s=0,dashRatio:c=0,sizeAttenuation:l=!0,offsetLoop:v=!0,offset:f=new a.Vector2(0,0),scaleDown:p=0,alphaMap:u=void 0,alphaTest:m=0,repeat:h=new a.Vector2(1,1),resolution:y=new a.Vector2(1,1)}=j,w=re(j,["lineWidth","color","opacity","map","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super(R(E({},w),{uniforms:{lineWidth:{value:t},color:{value:new a.Color(r)},opacity:{value:i},map:{value:o},useMap:{value:o?1:0},resolution:{value:y},sizeAttenuation:{value:l?1:0},offset:{value:f},offsetLoop:{value:v?1:0},dashArray:{value:s},dashOffset:{value:d},dashRatio:{value:c},useDash:{value:s>0?1:0},scaleDown:{value:p/10},alphaTest:{value:m},alphaMap:{value:u},useAlphaMap:{value:u?1:0},repeat:{value:h}},vertexShader:ke,fragmentShader:Oe})),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,L;function de(n,e,t){return V.set(0,0,-e,1).applyMatrix4(n.projectionMatrix),V.multiplyScalar(1/V.w),V.x=L/t.width,V.y=L/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,r=n.geometry,i=r.attributes.instanceStart,o=r.attributes.instanceEnd,d=Math.min(r.instanceCount,i.count);for(let s=0,c=d;s<c;s++){x.start.fromBufferAttribute(i,s),x.end.fromBufferAttribute(o,s),x.applyMatrix4(t);const l=new a.Vector3,v=new a.Vector3;T.distanceSqToSegment(x.start,x.end,v,l),v.distanceTo(l)<L*.5&&e.push({point:v,pointOnLine:l,distance:T.origin.distanceTo(v),object:n,face:null,faceIndex:s,uv:null,uv1:null})}}function Ue(n,e,t){const r=e.projectionMatrix,o=n.material.resolution,d=n.matrixWorld,s=n.geometry,c=s.attributes.instanceStart,l=s.attributes.instanceEnd,v=Math.min(s.instanceCount,c.count),f=-e.near;T.at(1,I),I.w=1,I.applyMatrix4(e.matrixWorldInverse),I.applyMatrix4(r),I.multiplyScalar(1/I.w),I.x*=o.x/2,I.y*=o.y/2,I.z=0,$.copy(I),K.multiplyMatrices(e.matrixWorldInverse,d);for(let p=0,u=v;p<u;p++){if(g.fromBufferAttribute(c,p),M.fromBufferAttribute(l,p),g.w=1,M.w=1,g.applyMatrix4(K),M.applyMatrix4(K),g.z>f&&M.z>f)continue;if(g.z>f){const D=g.z-M.z,A=(g.z-f)/D;g.lerp(M,A)}else if(M.z>f){const D=M.z-g.z,A=(M.z-f)/D;M.lerp(g,A)}g.applyMatrix4(r),M.applyMatrix4(r),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 h=x.closestPointToPointParameter($,!0);x.at(h,ue);const y=a.MathUtils.lerp(g.z,M.z,h),w=y>=-1&&y<=1,j=$.distanceTo(ue)<L*.5;if(w&&j){x.start.fromBufferAttribute(c,p),x.end.fromBufferAttribute(l,p),x.start.applyMatrix4(d),x.end.applyMatrix4(d);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,r=e.attributes.instanceEnd,i=new Float32Array(2*t.count);for(let d=0,s=0,c=t.count;d<c;d++,s+=2)ce.fromBufferAttribute(t,d),le.fromBufferAttribute(r,d),i[s]=s===0?0:i[s-1],i[s+1]=i[s]+ce.distanceTo(le);const o=new a.InstancedInterleavedBuffer(i,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 r=this.material.worldUnits,i=e.camera;i===null&&!r&&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 d=this.matrixWorld,s=this.geometry,c=this.material;L=c.linewidth+o,s.boundingSphere===null&&s.computeBoundingSphere(),U.copy(s.boundingSphere).applyMatrix4(d);let l;if(r)l=L*.5;else{const f=Math.max(i.near,U.distanceToPoint(T.origin));l=de(i,f,c.resolution)}if(U.radius+=l,T.intersectsSphere(U)===!1)return;s.boundingBox===null&&s.computeBoundingBox(),N.copy(s.boundingBox).applyMatrix4(d);let v;if(r)v=L*.5;else{const f=Math.max(i.near,N.distanceToPoint(T.origin));v=de(i,f,c.resolution)}N.expandByScalar(v),T.intersectsBox(N)!==!1&&(r?Ne(this,t):Ue(this,i,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=Ee;exports.ResourceTracker=fe;exports.getMetas=he;
|