gl-draw 0.16.0-beta.27 → 0.16.0-beta.29
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
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,_=(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 a=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(a,u);s((t=t.apply(n,e)).next())});const o=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"),L=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 o.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 o.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 o.Object3D){const t=e;this.track(t.geometry),this.track(t.material),this.track(t.children)}else if(e instanceof o.Material){for(const i of Object.values(e))i instanceof o.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 o.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 o.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 o.BufferGeometry;t.setAttribute("position",new o.Float32BufferAttribute(new Array(e*3).fill(0),3)),t.setAttribute("scaleAtt",new o.Float32BufferAttribute(new Array(e).fill(1),1));const i=n.material,r=new o.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=a=>{a.vertexShader=`
|
|
2
2
|
attribute float scaleAtt;
|
|
3
3
|
${a.vertexShader.replace("gl_PointSize = size;","gl_PointSize = size * scaleAtt;")}
|
|
4
|
-
`},new o.Points(t,r)},Pe=(n,e)=>{const t=new o.Object3D;e.forEach((i,r)=>{const a=Q.parseVector3(i.position),u=Q.parseVector3(i.scale||[1,1,1]);t.position.copy(a),t.scale.copy(u),t.updateMatrix();const s=t.matrix.clone();if(n instanceof o.InstancedMesh||n.isInstantiate)n.setMatrixAt(r,s);else if(n instanceof o.Points||n.type==="Points"){const l=n.geometry,f=l.attributes.position.array,h=l.attributes.scaleAtt.array,p=new o.Vector3,d=new o.Vector3,v=new o.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 a=i.clone();return i.userData=r,a});{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.key="",this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,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 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 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 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 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 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:a}=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)||this.parent}):(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 o.Sprite)f.object3d=Be(this.object3d,p);else{const d=this.object3d,v=i?this.cloneMaterial():d.material;f.object3d=new o.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(_({},a||{}),{create:u,prefab:!1,key:(e==null?void 0:e.key)||(a==null?void 0:a.key),target:(e==null?void 0:e.target)||this.parent}))),this.isBloom&&s.enableBloom(),t&&(yield Promise.all(this.children.map(f=>f.instantiate({key:e==null?void 0:e.key,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(a=>{if(r){const u=E.geoDistance(a,r)*180/Math.PI;if(u>e){const s=E.geoInterpolate(r,a),c=1/Math.ceil(u/e);let l=c;for(;l<1;)i.push(s(l)),l+=c}}i.push(r=a)}),i})}function Te(n,{minLng:e,maxLng:t,minLat:i,maxLat:r}={}){const a=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/a-1)/Math.PI*180-90,l=d=>a*(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)):a-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],[a,u]]=E.geoBounds(t);if(Math.min(Math.abs(a-i),Math.abs(u-r))<e)return[];const s=i>a||u>=89||r<=-89;return Te(e,{minLng:i,maxLng:a,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),a=L.merge(r),u=Oe(n,e),s=[...a,...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<a.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<a.length)){const P=[0,1].map(q=>L.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]]:L.extent(s,y=>y[0]),b=t?[t[1],t[3]]:L.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 o.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(n,e,t,i){const r=n.map(a=>a.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:a,holes:u}=G(n,e,i,r),{vertices:s}=G(n,t,i,r),c=L.merge([s,a]),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,a){return{indices:i?n.indices:n.indices.slice().reverse(),vertices:G([n.points],e,r,a).vertices,uvs:t}}const he=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:r=!0,hasSide:a=!0,hasBottom:u=!1,hasTop:s=!1,projection:c,bbox:l})=>{n.forEach(w=>{ye(w)||w.reverse()});const{contour:f,triangles:h}=ze(n,{resolution:i,bbox:l,projection:c});let p={},d;a&&(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 b={};return s&&(b=ae(h,t,v,!0,r,c)),{contour:f,triangles:h,sideTorso:p,bottomCap:m,topCap:b,topVerts:d}};class _e extends o.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=_({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:a,hasBottom:u,hasSide:s,cartesian:c,userDataRsoOffset:l,projection:f}=this.parameters,{contour:h,sideTorso:p,topVerts:d,bottomCap:v,topCap:m}=he(_({},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&&a&&A(m),s&&(A(p),this.userData.topVerts=l?G(h,i+l,c,f).vertices:d),u&&A(v),r&&!a&&A(m),this.setIndex(j),this[oe]("position",new o.Float32BufferAttribute(b,3)),this[oe]("uv",new o.Float32BufferAttribute(w,2)),this.computeVertexNormals()}}const Ee=`
|
|
4
|
+
`},new o.Points(t,r)},Pe=(n,e)=>{const t=new o.Object3D;e.forEach((i,r)=>{const a=Q.parseVector3(i.position),u=Q.parseVector3(i.scale||[1,1,1]);t.position.copy(a),t.scale.copy(u),t.updateMatrix();const s=t.matrix.clone();if(n instanceof o.InstancedMesh||n.isInstantiate)n.setMatrixAt(r,s);else if(n instanceof o.Points||n.type==="Points"){const l=n.geometry,f=l.attributes.position.array,h=l.attributes.scaleAtt.array,p=new o.Vector3,d=new o.Vector3,v=new o.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 Ie{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 De extends Ie{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 a=i.clone();return i.userData=r,a});{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 De{constructor(){super(...arguments),this.key="",this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,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 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 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 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 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 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:a}=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)||this.parent}):(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 o.Sprite)f.object3d=Be(this.object3d,p);else{const d=this.object3d,v=i?this.cloneMaterial():d.material;f.object3d=new o.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(_({},a||{}),{create:u,prefab:!1,keyType:this.keyType,key:this.keyName,uId:(e==null?void 0:e.uId)||this.keyUId,target:(e==null?void 0:e.target)||this.parent}))),this.isBloom&&s.enableBloom(),t&&(yield Promise.all(this.children.map(f=>f.instantiate({uId:e==null?void 0:e.uId,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 Te(n,e){return n.map(t=>{const i=[];let r;return t.forEach(a=>{if(r){const u=E.geoDistance(a,r)*180/Math.PI;if(u>e){const s=E.geoInterpolate(r,a),c=1/Math.ceil(u/e);let l=c;for(;l<1;)i.push(s(l)),l+=c}}i.push(r=a)}),i})}function Ve(n,{minLng:e,maxLng:t,minLat:i,maxLat:r}={}){const a=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/a-1)/Math.PI*180-90,l=d=>a*(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)):a-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],[a,u]]=E.geoBounds(t);if(Math.min(Math.abs(a-i),Math.abs(u-r))<e)return[];const s=i>a||u>=89||r<=-89;return Ve(e,{minLng:i,maxLng:a,minLat:r,maxLat:u}).filter(c=>Z(c,t,s))}function ze(n,{resolution:e=1/0,bbox:t,projection:i}={}){const r=Te(n,e),a=L.merge(r),u=Oe(n,e),s=[...a,...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<a.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<a.length)){const P=[0,1].map(q=>L.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]]:L.extent(s,y=>y[0]),b=t?[t[1],t[3]]:L.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]),I=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:I}}}const oe=new o.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(n,e,t,i){const r=n.map(a=>a.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:a,holes:u}=G(n,e,i,r),{vertices:s}=G(n,t,i,r),c=L.merge([s,a]),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,a){return{indices:i?n.indices:n.indices.slice().reverse(),vertices:G([n.points],e,r,a).vertices,uvs:t}}const he=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:r=!0,hasSide:a=!0,hasBottom:u=!1,hasTop:s=!1,projection:c,bbox:l})=>{n.forEach(w=>{ye(w)||w.reverse()});const{contour:f,triangles:h}=ze(n,{resolution:i,bbox:l,projection:c});let p={},d;a&&(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 b={};return s&&(b=ae(h,t,v,!0,r,c)),{contour:f,triangles:h,sideTorso:p,bottomCap:m,topCap:b,topVerts:d}};class _e extends o.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=_({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:a,hasBottom:u,hasSide:s,cartesian:c,userDataRsoOffset:l,projection:f}=this.parameters,{contour:h,sideTorso:p,topVerts:d,bottomCap:v,topCap:m}=he(_({},this.parameters));let b=[],w=[],j=[],I=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,I++)};r&&a&&A(m),s&&(A(p),this.userData.topVerts=l?G(h,i+l,c,f).vertices:d),u&&A(v),r&&!a&&A(m),this.setIndex(j),this[oe]("position",new o.Float32BufferAttribute(b,3)),this[oe]("uv",new o.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 o.ShaderMaterial{constructor(e={}){const j=e,{lineWidth:t=1,color:i="#ffffff",opacity:r=1,map:a=null,dashOffset:u=0,dashArray:s=0,dashRatio:c=0,sizeAttenuation:l=!0,offsetLoop:f=!0,offset:h=new o.Vector2(0,0),scaleDown:p=0,alphaMap:d=void 0,alphaTest:v=0,repeat:m=new o.Vector2(1,1),resolution:b=new o.Vector2(1,1)}=j,w=ie(j,["lineWidth","color","opacity","map","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super(R(_({},w),{uniforms:{lineWidth:{value:t},color:{value:new o.Color(i)},opacity:{value:r},map:{value:a},useMap:{value:a?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 o.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 o.Vector4,ce=new o.Vector3,le=new o.Vector3,g=new o.Vector4,M=new o.Vector4,
|
|
140
|
+
`;class We extends o.ShaderMaterial{constructor(e={}){const j=e,{lineWidth:t=1,color:i="#ffffff",opacity:r=1,map:a=null,dashOffset:u=0,dashArray:s=0,dashRatio:c=0,sizeAttenuation:l=!0,offsetLoop:f=!0,offset:h=new o.Vector2(0,0),scaleDown:p=0,alphaMap:d=void 0,alphaTest:v=0,repeat:m=new o.Vector2(1,1),resolution:b=new o.Vector2(1,1)}=j,w=ie(j,["lineWidth","color","opacity","map","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super(R(_({},w),{uniforms:{lineWidth:{value:t},color:{value:new o.Color(i)},opacity:{value:r},map:{value:a},useMap:{value:a?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 o.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 o.Vector4,ce=new o.Vector3,le=new o.Vector3,g=new o.Vector4,M=new o.Vector4,D=new o.Vector4,$=new o.Vector3,K=new o.Matrix4,x=new o.Line3,ue=new o.Vector3,N=new o.Box3,U=new o.Sphere,T=new o.Vector4;let V,z;function de(n,e,t){return T.set(0,0,-e,1).applyMatrix4(n.projectionMatrix),T.multiplyScalar(1/T.w),T.x=z/t.width,T.y=z/t.height,T.applyMatrix4(n.projectionMatrixInverse),T.multiplyScalar(1/T.w),Math.abs(Math.max(T.x,T.y))}function Ne(n,e){const t=n.matrixWorld,i=n.geometry,r=i.attributes.instanceStart,a=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(a,s),x.applyMatrix4(t);const l=new o.Vector3,f=new o.Vector3;V.distanceSqToSegment(x.start,x.end,f,l),f.distanceTo(l)<z*.5&&e.push({point:f,pointOnLine:l,distance:V.origin.distanceTo(f),object:n,face:null,faceIndex:s,uv:null,uv1:null})}}function Ue(n,e,t){const i=e.projectionMatrix,a=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;V.at(1,D),D.w=1,D.applyMatrix4(e.matrixWorldInverse),D.applyMatrix4(i),D.multiplyScalar(1/D.w),D.x*=a.x/2,D.y*=a.y/2,D.z=0,$.copy(D),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 I=g.z-M.z,A=(g.z-h)/I;g.lerp(M,A)}else if(M.z>h){const I=M.z-g.z,A=(M.z-h)/I;M.lerp(g,A)}g.applyMatrix4(i),M.applyMatrix4(i),g.multiplyScalar(1/g.w),M.multiplyScalar(1/M.w),g.x*=a.x/2,g.y*=a.y/2,M.x*=a.x/2,M.y*=a.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=o.MathUtils.lerp(g.z,M.z,m),w=b>=-1&&b<=1,j=$.distanceTo(ue)<z*.5;if(w&&j){x.start.fromBufferAttribute(c,p),x.end.fromBufferAttribute(l,p),x.start.applyMatrix4(u),x.end.applyMatrix4(u);const I=new o.Vector3,A=new o.Vector3;V.distanceSqToSegment(x.start,x.end,A,I),t.push({point:A,pointOnLine:I,distance:V.origin.distanceTo(A),object:n,face:null,faceIndex:p,uv:null,uv1:null})}}}class Ge extends o.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 a=new o.InstancedInterleavedBuffer(r,2,1);return e.setAttribute("instanceDistanceStart",new o.InterleavedBufferAttribute(a,1,0)),e.setAttribute("instanceDistanceEnd",new o.InterleavedBufferAttribute(a,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 a=e.params.Line2!==void 0&&e.params.Line2.threshold||0;V=e.ray;const u=this.matrixWorld,s=this.geometry,c=this.material;z=c.linewidth+a,s.boundingSphere===null&&s.computeBoundingSphere(),U.copy(s.boundingSphere).applyMatrix4(u);let l;if(i)l=z*.5;else{const h=Math.max(r.near,U.distanceToPoint(V.origin));l=de(r,h,c.resolution)}if(U.radius+=l,V.intersectsSphere(U)===!1)return;s.boundingBox===null&&s.computeBoundingBox(),N.copy(s.boundingBox).applyMatrix4(u);let f;if(i)f=z*.5;else{const h=Math.max(r.near,N.distanceToPoint(V.origin));f=de(r,h,c.resolution)}N.expandByScalar(f),V.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=_e;exports.ResourceTracker=fe;exports.getMetas=he;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
var Ct = Object.defineProperty, Pt = Object.defineProperties;
|
|
2
|
-
var
|
|
2
|
+
var It = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var V = Object.getOwnPropertySymbols;
|
|
4
4
|
var et = Object.prototype.hasOwnProperty, it = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var st = Math.pow, tt = (n, t, e) => t in n ? Ct(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e,
|
|
5
|
+
var st = Math.pow, tt = (n, t, e) => t in n ? Ct(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, E = (n, t) => {
|
|
6
6
|
for (var e in t || (t = {}))
|
|
7
7
|
et.call(t, e) && tt(n, e, t[e]);
|
|
8
8
|
if (V)
|
|
9
9
|
for (var e of V(t))
|
|
10
10
|
it.call(t, e) && tt(n, e, t[e]);
|
|
11
11
|
return n;
|
|
12
|
-
}, $ = (n, t) => Pt(n,
|
|
12
|
+
}, $ = (n, t) => Pt(n, It(t));
|
|
13
13
|
var nt = (n, t) => {
|
|
14
14
|
var e = {};
|
|
15
15
|
for (var i in n)
|
|
@@ -35,13 +35,13 @@ var rt = (n, t, e) => new Promise((i, s) => {
|
|
|
35
35
|
}, r = (o) => o.done ? i(o.value) : Promise.resolve(o.value).then(a, l);
|
|
36
36
|
r((e = e.apply(n, t)).next());
|
|
37
37
|
});
|
|
38
|
-
import { Material as at, Object3D as N, Texture as ot, BufferGeometry as Z, Float32BufferAttribute as R, PointsMaterial as
|
|
38
|
+
import { Material as at, Object3D as N, Texture as ot, BufferGeometry as Z, Float32BufferAttribute as R, PointsMaterial as Bt, Points as J, InstancedMesh as xt, Vector3 as I, Quaternion as Dt, Group as Tt, Mesh as wt, Sprite as ct, Box3 as St, ShaderMaterial as zt, Vector2 as q, Color as lt, Vector4 as L, Matrix4 as Ot, Line3 as _t, Sphere as Et, InstancedInterleavedBuffer as Lt, InterleavedBufferAttribute as ut, MathUtils as kt } from "three";
|
|
39
39
|
import { CSS2DObject as Vt } from "three/examples/jsm/renderers/CSS2DRenderer";
|
|
40
40
|
import { CSS3DObject as Wt, CSS3DSprite as Ut } from "three/examples/jsm/renderers/CSS3DRenderer";
|
|
41
41
|
import { geoBounds as jt, geoContains as Nt, geoDistance as Rt, geoInterpolate as Gt } from "d3-geo";
|
|
42
42
|
import "d3-geo-projection";
|
|
43
|
-
import { p as
|
|
44
|
-
import { merge as H, mean as $t, extent as
|
|
43
|
+
import { p as dt, a as Ft } from "./polar2Cartesian.module.js";
|
|
44
|
+
import { merge as H, mean as $t, extent as ft } from "d3-array";
|
|
45
45
|
import qt, { flatten as At } from "earcut";
|
|
46
46
|
import Kt from "@turf/boolean-clockwise";
|
|
47
47
|
import Qt from "delaunator";
|
|
@@ -100,7 +100,7 @@ const ee = (n, t = 1) => {
|
|
|
100
100
|
"scaleAtt",
|
|
101
101
|
new R(new Array(t).fill(1), 1)
|
|
102
102
|
);
|
|
103
|
-
const i = n.material, s = new
|
|
103
|
+
const i = n.material, s = new Bt({
|
|
104
104
|
size: 10,
|
|
105
105
|
map: i.map,
|
|
106
106
|
alphaMap: i.alphaMap,
|
|
@@ -125,14 +125,14 @@ const ee = (n, t = 1) => {
|
|
|
125
125
|
}, ie = (n, t) => {
|
|
126
126
|
const e = new N();
|
|
127
127
|
t.forEach((i, s) => {
|
|
128
|
-
const a =
|
|
128
|
+
const a = dt(i.position), l = dt(i.scale || [1, 1, 1]);
|
|
129
129
|
e.position.copy(a), e.scale.copy(l), e.updateMatrix();
|
|
130
130
|
const r = e.matrix.clone();
|
|
131
131
|
if (n instanceof xt || n.isInstantiate)
|
|
132
132
|
n.setMatrixAt(s, r);
|
|
133
133
|
else if (n instanceof J || n.type === "Points") {
|
|
134
|
-
const c = n.geometry,
|
|
135
|
-
r.decompose(h, m, u),
|
|
134
|
+
const c = n.geometry, d = c.attributes.position.array, f = c.attributes.scaleAtt.array, h = new I(), u = new I(), m = new Dt(), p = s * 3, v = s * 1;
|
|
135
|
+
r.decompose(h, m, u), d[p] = h.x, d[p + 1] = h.y, d[p + 2] = h.z, f[v] = Math.max(u.x, u.y, u.z), c.attributes.position.needsUpdate = !0, c.attributes.scaleAtt.needsUpdate = !0;
|
|
136
136
|
}
|
|
137
137
|
});
|
|
138
138
|
};
|
|
@@ -320,8 +320,8 @@ class pt extends ne {
|
|
|
320
320
|
return {
|
|
321
321
|
min: t.min,
|
|
322
322
|
max: t.max,
|
|
323
|
-
size: t.getSize(new
|
|
324
|
-
center: t.getCenter(new
|
|
323
|
+
size: t.getSize(new I()),
|
|
324
|
+
center: t.getCenter(new I())
|
|
325
325
|
};
|
|
326
326
|
}
|
|
327
327
|
setTop(t) {
|
|
@@ -339,35 +339,37 @@ class pt extends ne {
|
|
|
339
339
|
let l = t == null ? void 0 : t.create, r;
|
|
340
340
|
return this.objectType === "BaseObject" ? r = this.lead.createBaseObject(this.object3d.clone(!1), {
|
|
341
341
|
target: (t == null ? void 0 : t.target) || this.parent
|
|
342
|
-
}) : (l === void 0 && (l = (
|
|
343
|
-
var
|
|
342
|
+
}) : (l === void 0 && (l = (d) => {
|
|
343
|
+
var f;
|
|
344
344
|
if (this.object3d) {
|
|
345
|
-
if ((
|
|
345
|
+
if ((f = t == null ? void 0 : t.instancedAttr) != null && f.length) {
|
|
346
346
|
const h = t.instancedAttr.length;
|
|
347
347
|
if (this.object3d instanceof ct)
|
|
348
|
-
|
|
348
|
+
d.object3d = ee(this.object3d, h);
|
|
349
349
|
else {
|
|
350
350
|
const u = this.object3d, m = i ? this.cloneMaterial() : u.material;
|
|
351
|
-
|
|
351
|
+
d.object3d = new xt(
|
|
352
352
|
u.geometry,
|
|
353
353
|
m,
|
|
354
354
|
h
|
|
355
355
|
);
|
|
356
356
|
}
|
|
357
|
-
ie(
|
|
357
|
+
ie(d.object3d, t == null ? void 0 : t.instancedAttr);
|
|
358
358
|
} else
|
|
359
|
-
|
|
360
|
-
|
|
359
|
+
d.object3d = this.object3d.clone(!1), i && d.object3d.material && (d.object3d.material = this.cloneMaterial());
|
|
360
|
+
d.object3d.userData.prefab && delete d.object3d.userData.prefab;
|
|
361
361
|
}
|
|
362
|
-
}), r = yield this.lead.draw(s, $(
|
|
362
|
+
}), r = yield this.lead.draw(s, $(E({}, a || {}), {
|
|
363
363
|
create: l,
|
|
364
364
|
prefab: !1,
|
|
365
|
-
|
|
365
|
+
keyType: this.keyType,
|
|
366
|
+
key: this.keyName,
|
|
367
|
+
uId: (t == null ? void 0 : t.uId) || this.keyUId,
|
|
366
368
|
target: (t == null ? void 0 : t.target) || this.parent
|
|
367
369
|
}))), this.isBloom && r.enableBloom(), e && (yield Promise.all(
|
|
368
370
|
this.children.map(
|
|
369
|
-
(
|
|
370
|
-
|
|
371
|
+
(d) => d.instantiate({
|
|
372
|
+
uId: t == null ? void 0 : t.uId,
|
|
371
373
|
cloneMaterial: i,
|
|
372
374
|
target: r
|
|
373
375
|
})
|
|
@@ -415,13 +417,13 @@ function re(n, t) {
|
|
|
415
417
|
});
|
|
416
418
|
}
|
|
417
419
|
function ae(n, { minLng: t, maxLng: e, minLat: i, maxLat: s } = {}) {
|
|
418
|
-
const a = Math.round(st(360 / n, 2) / Math.PI), l = (1 + Math.sqrt(5)) / 2, r = (u) => u / l * 360 % 360 - 180, o = (u) => Math.acos(2 * u / a - 1) / Math.PI * 180 - 90, c = (u) => a * (Math.cos((u + 90) * Math.PI / 180) + 1) / 2,
|
|
420
|
+
const a = Math.round(st(360 / n, 2) / Math.PI), l = (1 + Math.sqrt(5)) / 2, r = (u) => u / l * 360 % 360 - 180, o = (u) => Math.acos(2 * u / a - 1) / Math.PI * 180 - 90, c = (u) => a * (Math.cos((u + 90) * Math.PI / 180) + 1) / 2, d = [
|
|
419
421
|
s !== void 0 ? Math.ceil(c(s)) : 0,
|
|
420
422
|
i !== void 0 ? Math.floor(c(i)) : a - 1
|
|
421
|
-
],
|
|
422
|
-
for (let u =
|
|
423
|
+
], f = t === void 0 && e === void 0 ? () => !0 : t === void 0 ? (u) => u <= e : e === void 0 ? (u) => u >= t : e >= t ? (u) => u >= t && u <= e : (u) => u >= t || u <= e, h = [];
|
|
424
|
+
for (let u = d[0]; u <= d[1]; u++) {
|
|
423
425
|
const m = r(u);
|
|
424
|
-
|
|
426
|
+
f(m) && h.push([m, o(u)]);
|
|
425
427
|
}
|
|
426
428
|
return h;
|
|
427
429
|
}
|
|
@@ -443,21 +445,21 @@ function oe(n, t) {
|
|
|
443
445
|
);
|
|
444
446
|
}
|
|
445
447
|
function ce(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
446
|
-
const s = re(n, t), a = H(s), l = oe(n, t), r = [...a, ...l], o = { type: "Polygon", coordinates: n }, [[c,
|
|
448
|
+
const s = re(n, t), a = H(s), l = oe(n, t), r = [...a, ...l], o = { type: "Polygon", coordinates: n }, [[c, d], [f, h]] = jt(o), u = c > f || // crosses antimeridian
|
|
447
449
|
h >= 89 || // crosses north pole
|
|
448
|
-
|
|
450
|
+
d <= -89;
|
|
449
451
|
let m = [];
|
|
450
452
|
if (u) {
|
|
451
453
|
const b = Yt(r).triangles(), x = new Map(
|
|
452
|
-
r.map(([A, C],
|
|
454
|
+
r.map(([A, C], O) => [`${A}-${C}`, O])
|
|
453
455
|
);
|
|
454
456
|
b.features.forEach((A) => {
|
|
455
|
-
const C = A.geometry.coordinates[0].slice(0, 3).reverse(),
|
|
457
|
+
const C = A.geometry.coordinates[0].slice(0, 3).reverse(), O = [];
|
|
456
458
|
if (C.forEach(([P, F]) => {
|
|
457
459
|
const k = `${P}-${F}`;
|
|
458
|
-
x.has(k) &&
|
|
459
|
-
}),
|
|
460
|
-
if (
|
|
460
|
+
x.has(k) && O.push(x.get(k));
|
|
461
|
+
}), O.length === 3) {
|
|
462
|
+
if (O.some((P) => P < a.length)) {
|
|
461
463
|
const P = A.properties.circumcenter;
|
|
462
464
|
if (!Y(
|
|
463
465
|
P,
|
|
@@ -466,16 +468,16 @@ function ce(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
466
468
|
))
|
|
467
469
|
return;
|
|
468
470
|
}
|
|
469
|
-
m.push(...
|
|
471
|
+
m.push(...O);
|
|
470
472
|
}
|
|
471
473
|
});
|
|
472
474
|
} else if (l.length) {
|
|
473
475
|
const b = Qt.from(r);
|
|
474
476
|
for (let x = 0, A = b.triangles.length; x < A; x += 3) {
|
|
475
|
-
const C = [2, 1, 0].map((P) => b.triangles[x + P]),
|
|
477
|
+
const C = [2, 1, 0].map((P) => b.triangles[x + P]), O = C.map((P) => r[P]);
|
|
476
478
|
if (C.some((P) => P < a.length)) {
|
|
477
479
|
const P = [0, 1].map(
|
|
478
|
-
(F) => $t(
|
|
480
|
+
(F) => $t(O, (k) => k[F])
|
|
479
481
|
);
|
|
480
482
|
if (!Y(
|
|
481
483
|
P,
|
|
@@ -490,19 +492,19 @@ function ce(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
490
492
|
const { vertices: b, holes: x = [] } = At(s);
|
|
491
493
|
m = qt(b, x, 2);
|
|
492
494
|
}
|
|
493
|
-
let p = e ? [e[0], e[2]] :
|
|
495
|
+
let p = e ? [e[0], e[2]] : ft(r, (b) => b[0]), v = e ? [e[1], e[3]] : ft(r, (b) => b[1]);
|
|
494
496
|
if (i) {
|
|
495
497
|
const [b, x] = i([p[0], v[0]]), [A, C] = i([p[1], v[1]]);
|
|
496
498
|
p = [b, A], v = [-x, -C];
|
|
497
499
|
}
|
|
498
|
-
const w = ht(p, [0, 1]), S = ht(v, [0, 1]),
|
|
500
|
+
const w = ht(p, [0, 1]), S = ht(v, [0, 1]), B = r.map(([b, x]) => {
|
|
499
501
|
if (i) {
|
|
500
502
|
const [A, C] = i([b, x]);
|
|
501
503
|
return [w(A), S(-C)];
|
|
502
504
|
} else
|
|
503
505
|
return [w(b), S(x)];
|
|
504
506
|
});
|
|
505
|
-
return { contour: s, triangles: { points: r, indices: m, uvs:
|
|
507
|
+
return { contour: s, triangles: { points: r, indices: m, uvs: B } };
|
|
506
508
|
}
|
|
507
509
|
const mt = new Z().setAttribute ? "setAttribute" : "addAttribute";
|
|
508
510
|
function G(n, t, e, i) {
|
|
@@ -528,16 +530,16 @@ function le(n, t, e, i, s) {
|
|
|
528
530
|
e,
|
|
529
531
|
i,
|
|
530
532
|
s
|
|
531
|
-
), o = H([r, a]), c = Math.round(r.length / 3),
|
|
532
|
-
let
|
|
533
|
+
), o = H([r, a]), c = Math.round(r.length / 3), d = new Set(l);
|
|
534
|
+
let f = 0;
|
|
533
535
|
const h = [];
|
|
534
536
|
for (let m = 0; m < c; m++) {
|
|
535
537
|
let p = m + 1;
|
|
536
538
|
if (p === c)
|
|
537
|
-
p =
|
|
538
|
-
else if (
|
|
539
|
+
p = f;
|
|
540
|
+
else if (d.has(p)) {
|
|
539
541
|
const v = p;
|
|
540
|
-
p =
|
|
542
|
+
p = f, f = v;
|
|
541
543
|
}
|
|
542
544
|
h.push(m, m + c, p + c), h.push(p + c, p, m);
|
|
543
545
|
}
|
|
@@ -573,24 +575,24 @@ const ue = ({
|
|
|
573
575
|
n.forEach((w) => {
|
|
574
576
|
Kt(w) || w.reverse();
|
|
575
577
|
});
|
|
576
|
-
const { contour:
|
|
578
|
+
const { contour: d, triangles: f } = ce(n, {
|
|
577
579
|
resolution: i,
|
|
578
580
|
bbox: c,
|
|
579
581
|
projection: o
|
|
580
582
|
});
|
|
581
583
|
let h = {}, u;
|
|
582
584
|
a && (h = le(
|
|
583
|
-
|
|
585
|
+
d,
|
|
584
586
|
t != null ? t : e,
|
|
585
587
|
e != null ? e : t,
|
|
586
588
|
s,
|
|
587
589
|
o
|
|
588
590
|
), u = h.topVerts);
|
|
589
591
|
let m = [];
|
|
590
|
-
(l || r) && (m = H(
|
|
592
|
+
(l || r) && (m = H(f.uvs));
|
|
591
593
|
let p = {};
|
|
592
594
|
l && (p = vt(
|
|
593
|
-
|
|
595
|
+
f,
|
|
594
596
|
t,
|
|
595
597
|
m,
|
|
596
598
|
!1,
|
|
@@ -599,17 +601,17 @@ const ue = ({
|
|
|
599
601
|
));
|
|
600
602
|
let v = {};
|
|
601
603
|
return r && (v = vt(
|
|
602
|
-
|
|
604
|
+
f,
|
|
603
605
|
e,
|
|
604
606
|
m,
|
|
605
607
|
!0,
|
|
606
608
|
s,
|
|
607
609
|
o
|
|
608
|
-
)), { contour:
|
|
610
|
+
)), { contour: d, triangles: f, sideTorso: h, bottomCap: p, topCap: v, topVerts: u };
|
|
609
611
|
};
|
|
610
612
|
class ze extends Z {
|
|
611
613
|
constructor(t, e = {}) {
|
|
612
|
-
super(), this.type = "PolygonBufferGeometry", this.parameters =
|
|
614
|
+
super(), this.type = "PolygonBufferGeometry", this.parameters = E({
|
|
613
615
|
polygonGeoJson: t,
|
|
614
616
|
startHeight: 0,
|
|
615
617
|
endHeight: 1,
|
|
@@ -629,24 +631,24 @@ class ze extends Z {
|
|
|
629
631
|
hasSide: r,
|
|
630
632
|
cartesian: o,
|
|
631
633
|
userDataRsoOffset: c,
|
|
632
|
-
projection:
|
|
633
|
-
} = this.parameters, { contour:
|
|
634
|
-
let v = [], w = [], S = [],
|
|
634
|
+
projection: d
|
|
635
|
+
} = this.parameters, { contour: f, sideTorso: h, topVerts: u, bottomCap: m, topCap: p } = ue(E({}, this.parameters));
|
|
636
|
+
let v = [], w = [], S = [], B = 0;
|
|
635
637
|
const j = (b) => {
|
|
636
638
|
const x = Math.round(v.length / 3), A = S.length;
|
|
637
639
|
v = v.concat(b.vertices), w = w.concat(b.uvs), S = S.concat(
|
|
638
640
|
x ? b.indices.map((C) => C + x) : b.indices
|
|
639
|
-
), this.addGroup(A, S.length - A,
|
|
641
|
+
), this.addGroup(A, S.length - A, B++);
|
|
640
642
|
};
|
|
641
643
|
s && a && j(p), r && (j(h), this.userData.topVerts = c ? G(
|
|
642
|
-
|
|
644
|
+
f,
|
|
643
645
|
i + c,
|
|
644
646
|
o,
|
|
645
|
-
|
|
647
|
+
d
|
|
646
648
|
).vertices : u), l && j(m), s && !a && j(p), this.setIndex(S), this[mt]("position", new R(v, 3)), this[mt]("uv", new R(w, 2)), this.computeVertexNormals();
|
|
647
649
|
}
|
|
648
650
|
}
|
|
649
|
-
const
|
|
651
|
+
const de = `
|
|
650
652
|
#include <fog_pars_fragment>
|
|
651
653
|
#include <logdepthbuf_pars_fragment>
|
|
652
654
|
|
|
@@ -690,7 +692,7 @@ void main() {
|
|
|
690
692
|
#include <tonemapping_fragment>
|
|
691
693
|
#include <colorspace_fragment>
|
|
692
694
|
}
|
|
693
|
-
`,
|
|
695
|
+
`, fe = `
|
|
694
696
|
#include <common>
|
|
695
697
|
#include <logdepthbuf_pars_vertex>
|
|
696
698
|
#include <fog_pars_vertex>
|
|
@@ -783,7 +785,7 @@ void main() {
|
|
|
783
785
|
#include <fog_vertex>
|
|
784
786
|
}
|
|
785
787
|
`;
|
|
786
|
-
class
|
|
788
|
+
class Oe extends zt {
|
|
787
789
|
constructor(t = {}) {
|
|
788
790
|
const S = t, {
|
|
789
791
|
lineWidth: e = 1,
|
|
@@ -794,8 +796,8 @@ class _e extends zt {
|
|
|
794
796
|
dashArray: r = 0,
|
|
795
797
|
dashRatio: o = 0,
|
|
796
798
|
sizeAttenuation: c = !0,
|
|
797
|
-
offsetLoop:
|
|
798
|
-
offset:
|
|
799
|
+
offsetLoop: d = !0,
|
|
800
|
+
offset: f = new q(0, 0),
|
|
799
801
|
scaleDown: h = 0,
|
|
800
802
|
alphaMap: u = void 0,
|
|
801
803
|
alphaTest: m = 0,
|
|
@@ -818,7 +820,7 @@ class _e extends zt {
|
|
|
818
820
|
"repeat",
|
|
819
821
|
"resolution"
|
|
820
822
|
]);
|
|
821
|
-
super($(
|
|
823
|
+
super($(E({}, w), {
|
|
822
824
|
uniforms: {
|
|
823
825
|
lineWidth: { value: e },
|
|
824
826
|
color: { value: new lt(i) },
|
|
@@ -827,8 +829,8 @@ class _e extends zt {
|
|
|
827
829
|
useMap: { value: a ? 1 : 0 },
|
|
828
830
|
resolution: { value: v },
|
|
829
831
|
sizeAttenuation: { value: c ? 1 : 0 },
|
|
830
|
-
offset: { value:
|
|
831
|
-
offsetLoop: { value:
|
|
832
|
+
offset: { value: f },
|
|
833
|
+
offsetLoop: { value: d ? 1 : 0 },
|
|
832
834
|
dashArray: { value: r },
|
|
833
835
|
dashOffset: { value: l },
|
|
834
836
|
dashRatio: { value: o },
|
|
@@ -839,8 +841,8 @@ class _e extends zt {
|
|
|
839
841
|
useAlphaMap: { value: u ? 1 : 0 },
|
|
840
842
|
repeat: { value: p }
|
|
841
843
|
},
|
|
842
|
-
vertexShader:
|
|
843
|
-
fragmentShader:
|
|
844
|
+
vertexShader: fe,
|
|
845
|
+
fragmentShader: de
|
|
844
846
|
})), this.type = "MeshLineMaterial";
|
|
845
847
|
}
|
|
846
848
|
// Getter and setter for color
|
|
@@ -891,20 +893,20 @@ class _e extends zt {
|
|
|
891
893
|
this.uniforms.sizeAttenuation.value = t ? 1 : 0;
|
|
892
894
|
}
|
|
893
895
|
}
|
|
894
|
-
const K = new
|
|
895
|
-
let z,
|
|
896
|
+
const K = new L(), bt = new I(), yt = new I(), y = new L(), g = new L(), D = new L(), Q = new I(), X = new Ot(), M = new _t(), gt = new I(), W = new St(), U = new Et(), T = new L();
|
|
897
|
+
let z, _;
|
|
896
898
|
function Mt(n, t, e) {
|
|
897
|
-
return T.set(0, 0, -t, 1).applyMatrix4(n.projectionMatrix), T.multiplyScalar(1 / T.w), T.x =
|
|
899
|
+
return T.set(0, 0, -t, 1).applyMatrix4(n.projectionMatrix), T.multiplyScalar(1 / T.w), T.x = _ / e.width, T.y = _ / e.height, T.applyMatrix4(n.projectionMatrixInverse), T.multiplyScalar(1 / T.w), Math.abs(Math.max(T.x, T.y));
|
|
898
900
|
}
|
|
899
901
|
function he(n, t) {
|
|
900
902
|
const e = n.matrixWorld, i = n.geometry, s = i.attributes.instanceStart, a = i.attributes.instanceEnd, l = Math.min(i.instanceCount, s.count);
|
|
901
903
|
for (let r = 0, o = l; r < o; r++) {
|
|
902
904
|
M.start.fromBufferAttribute(s, r), M.end.fromBufferAttribute(a, r), M.applyMatrix4(e);
|
|
903
|
-
const c = new
|
|
904
|
-
z.distanceSqToSegment(M.start, M.end,
|
|
905
|
-
point:
|
|
905
|
+
const c = new I(), d = new I();
|
|
906
|
+
z.distanceSqToSegment(M.start, M.end, d, c), d.distanceTo(c) < _ * 0.5 && t.push({
|
|
907
|
+
point: d,
|
|
906
908
|
pointOnLine: c,
|
|
907
|
-
distance: z.origin.distanceTo(
|
|
909
|
+
distance: z.origin.distanceTo(d),
|
|
908
910
|
object: n,
|
|
909
911
|
face: null,
|
|
910
912
|
faceIndex: r,
|
|
@@ -914,28 +916,28 @@ function he(n, t) {
|
|
|
914
916
|
}
|
|
915
917
|
}
|
|
916
918
|
function pe(n, t, e) {
|
|
917
|
-
const i = t.projectionMatrix, a = n.material.resolution, l = n.matrixWorld, r = n.geometry, o = r.attributes.instanceStart, c = r.attributes.instanceEnd,
|
|
919
|
+
const i = t.projectionMatrix, a = n.material.resolution, l = n.matrixWorld, r = n.geometry, o = r.attributes.instanceStart, c = r.attributes.instanceEnd, d = Math.min(r.instanceCount, o.count), f = -t.near;
|
|
918
920
|
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);
|
|
919
|
-
for (let h = 0, u =
|
|
920
|
-
if (y.fromBufferAttribute(o, h), g.fromBufferAttribute(c, h), y.w = 1, g.w = 1, y.applyMatrix4(X), g.applyMatrix4(X), y.z >
|
|
921
|
+
for (let h = 0, u = d; h < u; h++) {
|
|
922
|
+
if (y.fromBufferAttribute(o, h), g.fromBufferAttribute(c, h), y.w = 1, g.w = 1, y.applyMatrix4(X), g.applyMatrix4(X), y.z > f && g.z > f)
|
|
921
923
|
continue;
|
|
922
|
-
if (y.z >
|
|
923
|
-
const
|
|
924
|
+
if (y.z > f) {
|
|
925
|
+
const B = y.z - g.z, j = (y.z - f) / B;
|
|
924
926
|
y.lerp(g, j);
|
|
925
|
-
} else if (g.z >
|
|
926
|
-
const
|
|
927
|
+
} else if (g.z > f) {
|
|
928
|
+
const B = g.z - y.z, j = (g.z - f) / B;
|
|
927
929
|
g.lerp(y, j);
|
|
928
930
|
}
|
|
929
931
|
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;
|
|
930
932
|
const p = M.closestPointToPointParameter(Q, !0);
|
|
931
933
|
M.at(p, gt);
|
|
932
|
-
const v = kt.lerp(y.z, g.z, p), w = v >= -1 && v <= 1, S = Q.distanceTo(gt) <
|
|
934
|
+
const v = kt.lerp(y.z, g.z, p), w = v >= -1 && v <= 1, S = Q.distanceTo(gt) < _ * 0.5;
|
|
933
935
|
if (w && S) {
|
|
934
936
|
M.start.fromBufferAttribute(o, h), M.end.fromBufferAttribute(c, h), M.start.applyMatrix4(l), M.end.applyMatrix4(l);
|
|
935
|
-
const
|
|
936
|
-
z.distanceSqToSegment(M.start, M.end, j,
|
|
937
|
+
const B = new I(), j = new I();
|
|
938
|
+
z.distanceSqToSegment(M.start, M.end, j, B), e.push({
|
|
937
939
|
point: j,
|
|
938
|
-
pointOnLine:
|
|
940
|
+
pointOnLine: B,
|
|
939
941
|
distance: z.origin.distanceTo(j),
|
|
940
942
|
object: n,
|
|
941
943
|
face: null,
|
|
@@ -946,7 +948,7 @@ function pe(n, t, e) {
|
|
|
946
948
|
}
|
|
947
949
|
}
|
|
948
950
|
}
|
|
949
|
-
class
|
|
951
|
+
class _e extends wt {
|
|
950
952
|
constructor(t = new Zt(), e) {
|
|
951
953
|
super(t, e), this.isLineSegments2 = !0, this.type = "LineSegments2";
|
|
952
954
|
}
|
|
@@ -955,7 +957,7 @@ class Ee extends wt {
|
|
|
955
957
|
const t = this.geometry, e = t.attributes.instanceStart, i = t.attributes.instanceEnd, s = new Float32Array(2 * e.count);
|
|
956
958
|
for (let l = 0, r = 0, o = e.count; l < o; l++, r += 2)
|
|
957
959
|
bt.fromBufferAttribute(e, l), yt.fromBufferAttribute(i, l), s[r] = r === 0 ? 0 : s[r - 1], s[r + 1] = s[r] + bt.distanceTo(yt);
|
|
958
|
-
const a = new
|
|
960
|
+
const a = new Lt(
|
|
959
961
|
s,
|
|
960
962
|
2,
|
|
961
963
|
1
|
|
@@ -976,39 +978,39 @@ class Ee extends wt {
|
|
|
976
978
|
const a = t.params.Line2 !== void 0 && t.params.Line2.threshold || 0;
|
|
977
979
|
z = t.ray;
|
|
978
980
|
const l = this.matrixWorld, r = this.geometry, o = this.material;
|
|
979
|
-
|
|
981
|
+
_ = o.linewidth + a, r.boundingSphere === null && r.computeBoundingSphere(), U.copy(r.boundingSphere).applyMatrix4(l);
|
|
980
982
|
let c;
|
|
981
983
|
if (i)
|
|
982
|
-
c =
|
|
984
|
+
c = _ * 0.5;
|
|
983
985
|
else {
|
|
984
|
-
const
|
|
986
|
+
const f = Math.max(
|
|
985
987
|
s.near,
|
|
986
988
|
U.distanceToPoint(z.origin)
|
|
987
989
|
);
|
|
988
990
|
c = Mt(
|
|
989
991
|
s,
|
|
990
|
-
|
|
992
|
+
f,
|
|
991
993
|
o.resolution
|
|
992
994
|
);
|
|
993
995
|
}
|
|
994
996
|
if (U.radius += c, z.intersectsSphere(U) === !1)
|
|
995
997
|
return;
|
|
996
998
|
r.boundingBox === null && r.computeBoundingBox(), W.copy(r.boundingBox).applyMatrix4(l);
|
|
997
|
-
let
|
|
999
|
+
let d;
|
|
998
1000
|
if (i)
|
|
999
|
-
|
|
1001
|
+
d = _ * 0.5;
|
|
1000
1002
|
else {
|
|
1001
|
-
const
|
|
1003
|
+
const f = Math.max(
|
|
1002
1004
|
s.near,
|
|
1003
1005
|
W.distanceToPoint(z.origin)
|
|
1004
1006
|
);
|
|
1005
|
-
|
|
1007
|
+
d = Mt(
|
|
1006
1008
|
s,
|
|
1007
|
-
|
|
1009
|
+
f,
|
|
1008
1010
|
o.resolution
|
|
1009
1011
|
);
|
|
1010
1012
|
}
|
|
1011
|
-
W.expandByScalar(
|
|
1013
|
+
W.expandByScalar(d), z.intersectsBox(W) !== !1 && (i ? he(this, e) : pe(this, s, e));
|
|
1012
1014
|
}
|
|
1013
1015
|
onBeforeRender(t) {
|
|
1014
1016
|
const e = this.material.uniforms;
|
|
@@ -1018,8 +1020,8 @@ class Ee extends wt {
|
|
|
1018
1020
|
export {
|
|
1019
1021
|
De as B,
|
|
1020
1022
|
Te as I,
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
+
_e as L,
|
|
1024
|
+
Oe as M,
|
|
1023
1025
|
ze as P,
|
|
1024
1026
|
te as R,
|
|
1025
1027
|
pt as a,
|
|
@@ -57,7 +57,7 @@ export default class BaseObject extends UseMaterial {
|
|
|
57
57
|
setTop(onTop: number): void;
|
|
58
58
|
traverse(fn: (o: IBaseObject) => void): void;
|
|
59
59
|
instantiate(ops?: {
|
|
60
|
-
|
|
60
|
+
uId?: string;
|
|
61
61
|
target?: IBaseObject;
|
|
62
62
|
create?: ((...args: any[]) => any) | boolean;
|
|
63
63
|
recursive?: boolean;
|
package/dist/core/Lead/Lead.d.ts
CHANGED
|
@@ -37,15 +37,17 @@ export default class Draw<T extends ObjectFactoryMap = any> extends Pick {
|
|
|
37
37
|
key: string;
|
|
38
38
|
}): InstanceType<T[Y]>[];
|
|
39
39
|
draw<Y extends KeyOf<T>, U extends KeyOf<T> | `${KeyOf<T>}#${string}` | IBaseObject | null>(nameOrigin: Y, options?: ConstructorParameters<T[Y]>[0] extends undefined ? {
|
|
40
|
+
keyType?: string;
|
|
40
41
|
key?: string;
|
|
41
|
-
|
|
42
|
+
uId?: string;
|
|
42
43
|
target?: U;
|
|
43
44
|
onTop?: number;
|
|
44
45
|
create?: ((...args: any[]) => any) | boolean;
|
|
45
46
|
prefab?: boolean;
|
|
46
47
|
} : ConstructorParameters<T[Y]>[0] & {
|
|
48
|
+
keyType?: string;
|
|
47
49
|
key?: string;
|
|
48
|
-
|
|
50
|
+
uId?: string;
|
|
49
51
|
target?: U;
|
|
50
52
|
onTop?: number;
|
|
51
53
|
create?: ((...args: any[]) => any) | boolean;
|
package/dist/index.js
CHANGED
|
@@ -95,4 +95,4 @@
|
|
|
95
95
|
|
|
96
96
|
#endif
|
|
97
97
|
|
|
98
|
-
}`};class Zt extends xt.OutputPass{constructor(){super();const e=Yt;this.uniforms=v.UniformsUtils.clone(e.uniforms),this.material=new v.RawShaderMaterial({name:e.name,uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader}),this.fsQuad?this.fsQuad=new Ae.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Ae.FullScreenQuad(this.material))}}const Wt=new v.MeshBasicMaterial({color:"black"}),qt=new v.PointsMaterial({color:"black",sizeAttenuation:!1}),Kt=new v.PointsMaterial({color:"black",sizeAttenuation:!0}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Be=new v.Color(0),Qt={kernelRadius:8,minDistance:.005,maxDistance:.1},Jt={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},es={multisampling:4,premultiplieAlpha:!1};class ts{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new v.Layers,this.bloomMaterials={},this.bloomVisible={},this.bloomComposerRenderIng=!1,this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:o}=t;this.renderer=o;const{multisampling:n}=r,{maxSamples:a}=o.capabilities,c=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(c.width,c.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Se.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const _=new Ot.RenderPass(s.scene,i.camera);p.addPass(_),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=_,i.event.on("pageChange",u=>{this.changeCamera(u)}),s.event.on("pageChange",u=>{this.changeScene(u)})}changeCamera(e){this.renderPass.camera=e,this.camera=e}changeScene(e){this.renderPass.scene=e,this.ssaoPass&&(this.ssaoPass.scene=e),this.scene=e}addOutputPass(){const{premultiplieAlpha:e}=this.options.composerParams,t=new Zt;this.outputPass=t,this.setPremultiplieAlpha(e),this.finalComposer.addPass(t)}setPremultiplieAlpha(e){this.outputPass&&(this.outputPass.uniforms.premultiplieAlpha.value=e?1:0)}addSSAOPass(e){const{scene:t,camera:s,renderer:i}=this,r=i.getSize(new v.Vector2),o=r.width,n=r.height,a=new Et.SSAOPass(t,s,o,n);a.kernelRadius=e.kernelRadius,a.minDistance=e.minDistance,a.maxDistance=e.maxDistance,this.ssaoPass=a,this.finalComposer.addPass(a)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:o}=e,n=new Tt.UnrealBloomPass(new v.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=n;const a=new Se.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const c=Vt(a);c.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(c),this.mixPass=c,this.bloomLayer.set(U.BLOOM_SCENE)}setBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}e.traverse(s=>{const{object3d:i}=s;i&&(t?(this.bloomSelection.add(s),i.layers.enable(U.BLOOM_SCENE)):(this.bloomSelection.delete(s),i.layers.disable(U.BLOOM_SCENE)))}),this.bloomSelection.size===0?this.bloomComposerActive=!1:this.bloomComposerActive=!0}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){var s;(s=this.bloomComposer)==null||s.setSize(e,t),this.finalComposer.setSize(e,t)}setPixelRatio(e){var t;(t=this.bloomComposer)==null||t.setPixelRatio(e),this.finalComposer.setPixelRatio(e)}darkenNonBloomed(){const e=[],t=[];this.scene.children.forEach(i=>{i.isTransformControls||i.isTransformControlsRoot||i.type==="RectAreaLightHelper"?e.push(i):t.push(i)}),t.forEach(i=>{i.traverse(r=>{var c;const o=r,n=r,a=r;if((c=o.material)!=null&&c.isShadowMaterial)e.push(o);else if(o.material&&this.bloomLayer.test(o.layers)===!1){if(o.material.transparent===!0&&(o.material.opacity!==1||o.material.alphaMap)){e.push(o);return}this.bloomMaterials[o.uuid]=o.material,n.isSprite?n.material.sizeAttenuation?n.material=$t:n.material=Gt:o.material instanceof U.MeshLineMaterial?o.material=Xt:a.isPoints?a.material.sizeAttenuation?a.material=Kt:a.material=qt:o.material=Wt}})}),e.forEach(i=>{this.bloomVisible[i.uuid]=i.visible,i.visible=!1});const s=this.scene.background;s!=null&&s.isTexture&&(this.scene.userData._backgroundOriginal=s,this.scene.background=Be)}restoreNonBloomed(){if(this.scene.traverse(e=>{const t=e;this.bloomMaterials[t.uuid]?(t.material=this.bloomMaterials[t.uuid],delete this.bloomMaterials[t.uuid]):this.bloomVisible[t.uuid]!==void 0&&(t.visible=this.bloomVisible[t.uuid],delete this.bloomVisible[t.uuid])}),this.scene.background===Be){const e=this.scene.userData._backgroundOriginal;e&&(this.scene.background=e,delete this.scene.userData._backgroundOriginal)}}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.bloomComposerRenderIng=!0,this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed(),this.bloomComposerRenderIng=!1):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new v.Vector2)}render(){if(!this.active)return;const{cameraController:e,rendererController:t,sceneController:s}=this.options;if(this.finalComposerRender(),this.pipViewportState){e.setPageActive(31),e.setAspect(this.pipViewportState.width/this.pipViewportState.height),t.setViewport(ee(z({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender(),e.setPageActive(s.activeIndex);const i=this.getSize();t.setViewport({x:0,y:0,width:i.width,height:i.height,scissor:!0,scissorTest:!1})}}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}class ss extends J{constructor(e){super(),this.autoRotateSpeed=0,this.options=e;const t={Vector2:v.Vector2,Vector3:v.Vector3,Vector4:v.Vector4,Quaternion:v.Quaternion,Matrix4:v.Matrix4,Spherical:v.Spherical,Box3:v.Box3,Sphere:v.Sphere,Raycaster:v.Raycaster};Q.install({THREE:t})}get cameraControls(){return this.controller}addCameraControls(e,t){const{domElement:s}=this.options.controlsParams,i=new Q(e,s);return i.setLookAt(0,0,400,0,0,0,!1),this.addController(i,t)}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}removePage(e){super.removePage(e,t=>{t.dispose()})}enable(){this.activeControllerSet.forEach(e=>{e.enabled=!0})}disable(){this.activeControllerSet.forEach(e=>{e.enabled=!1})}update(e,t){super.update(e,t),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*v.MathUtils.DEG2RAD)}}const Ve=new v.Vector3,is=new v.Quaternion,Ye=new v.Vector3,H=new v.Matrix4,rs=new v.Matrix4;class os{constructor(e={}){const t=this;let s,i,r,o;const n={camera:{style:""},objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a;const c=document.createElement("div");c.style.transformOrigin="0 0",c.style.pointerEvents="none",a.appendChild(c);const m=document.createElement("div");m.style.transformStyle="preserve-3d",c.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const f=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(c.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,c.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):c.style.transform="",y.matrixWorldAutoUpdate===!0&&y.updateMatrixWorld(),l.parent===null&&l.matrixWorldAutoUpdate===!0&&l.updateMatrixWorld();let E,O;l.isOrthographicCamera&&(E=-(l.right+l.left)/2,O=(l.top+l.bottom)/2);const x=l.view&&l.view.enabled?l.view.height/l.view.fullHeight:1,T=l.isOrthographicCamera?`scale( ${x} )scale(`+f+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${x} )translateZ(`+f+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+f+"px) ":"")+T+"translate("+r+"px,"+o+"px)";n.camera.style!==D&&(m.style.transform=D,n.camera.style=D),g(y,y,l)},this.setSize=function(y,l){s=y,i=l,r=s/2,o=i/2,a.style.width=y+"px",a.style.height=l+"px",c.style.width=y+"px",c.style.height=l+"px",m.style.width=y+"px",m.style.height=l+"px"};function p(y){return Math.abs(y)<1e-10?0:y}function C(y){const l=y.elements;return"matrix3d("+p(l[0])+","+p(-l[1])+","+p(l[2])+","+p(l[3])+","+p(l[4])+","+p(-l[5])+","+p(l[6])+","+p(l[7])+","+p(l[8])+","+p(-l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(-l[13])+","+p(l[14])+","+p(l[15])+")"}function _(y){const l=y.elements;return"translate(-50%,-50%)"+("matrix3d("+p(l[0])+","+p(l[1])+","+p(l[2])+","+p(l[3])+","+p(-l[4])+","+p(-l[5])+","+p(-l[6])+","+p(-l[7])+","+p(l[8])+","+p(l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(l[13])+","+p(l[14])+","+p(l[15])+")")}function u(y){y.isCSS3DObject&&(y.element.style.display="none");for(let l=0,f=y.children.length;l<f;l++)u(y.children[l])}function g(y,l,f,E){if(y.visible===!1){u(y);return}if(y.isCSS3DObject){const O=y.layers.test(f.layers)===!0,x=y.element;if(x.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,f);let T;y.isCSS3DSprite?(H.copy(f.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(rs.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(Ve,is,Ye),H.setPosition(Ve),H.scale(Ye),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=_(H)):T=_(y.matrixWorld);const L=n.objects.get(y);if(L===void 0||L.style!==T){x.style.transform=T;const D={style:T};n.objects.set(y,D)}x.parentNode!==m&&m.appendChild(x),y.onAfterRender(t,l,f)}}for(let O=0,x=y.children.length;O<x;O++)g(y.children[O],l,f)}}}const G=new v.Vector3,Ze=new v.Matrix4,We=new v.Matrix4,qe=new v.Vector3,Ke=new v.Vector3;class ns{constructor(e={}){const t=this;let s,i,r,o;const n={objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a,this.getSize=function(){return{width:s,height:i}},this.render=function(u,g){u.matrixWorldAutoUpdate===!0&&u.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),Ze.copy(g.matrixWorldInverse),We.multiplyMatrices(g.projectionMatrix,Ze),m(u,u,g),_(u)},this.setSize=function(u,g){s=u,i=g,r=s/2,o=i/2,a.style.width=u+"px",a.style.height=g+"px"};function c(u){u.isCSS2DObject&&(u.element.style.display="none");for(let g=0,y=u.children.length;g<y;g++)c(u.children[g])}function m(u,g,y){if(u.visible===!1){c(u);return}if(u.isCSS2DObject){G.setFromMatrixPosition(u.matrixWorld),G.applyMatrix4(We);const l=G.z>=-1&&G.z<=1&&u.layers.test(y.layers)===!0,f=u.element;f.style.display=l===!0?"":"none",l===!0&&(u.onBeforeRender(t,g,y),f.style.transform="translate("+-100*u.center.x+"%,"+-100*u.center.y+"%)translate("+(G.x*r+r)+"px,"+(-G.y*o+o)+"px)",f.parentNode!==a&&a.appendChild(f),u.onAfterRender(t,g,y));const E={distanceToCameraSquared:p(y,u)};n.objects.set(u,E)}for(let l=0,f=u.children.length;l<f;l++)m(u.children[l],g,y)}function p(u,g){return qe.setFromMatrixPosition(u.matrixWorld),Ke.setFromMatrixPosition(g.matrixWorld),qe.distanceToSquared(Ke)}function C(u){const g=[];return u.traverseVisible(function(y){y.isCSS2DObject&&g.push(y)}),g}function _(u){const g=C(u).sort(function(l,f){if(l.renderOrder!==f.renderOrder)return f.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(f).distanceToCameraSquared;return E-O}),y=g.length;for(let l=0,f=g.length;l<f;l++)g[l].element.style.zIndex=y-l}}}const $e={zIndex:"auto"};class as{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,i=s.offsetWidth,r=s.offsetHeight,o=e==="css2d"?new ns:new os;o.domElement.style.position="absolute",o.domElement.style.top="0",o.domElement.style.pointerEvents="none",o.domElement.style.zIndex=t.zIndex,o.setSize(i,r),s.appendChild(o.domElement),e==="css2d"?this.css2Drenderer=o:e==="css3d"&&(this.css3Drenderer=o)}setSize(e,t){var s,i;(s=this.css2Drenderer)==null||s.setSize(e,t),(i=this.css3Drenderer)==null||i.setSize(e,t)}render(e,t){var s,i;(s=this.css2Drenderer)==null||s.render(e,t),(i=this.css3Drenderer)==null||i.render(e,t)}dispose(){var e,t;(e=this.css2Drenderer)==null||e.domElement.remove(),(t=this.css3Drenderer)==null||t.domElement.remove(),this.css2Drenderer=void 0,this.css3Drenderer=void 0}}class ls{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{sceneController:s}=this.options;let i=this.helpers[t];if(i===void 0){if(e.isScene)i=new v.AxesHelper(100);else if(e.isCamera)i=new v.CameraHelper(e);else if(e.isPointLight)i=new v.PointLightHelper(e,1);else if(e.isDirectionalLight)i=new v.DirectionalLightHelper(e,1);else if(e.isSpotLight)i=new v.SpotLightHelper(e);else if(e.isHemisphereLight)i=new v.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)i=new bt.RectAreaLightHelper(e);else{const r=new v.Box3;if(r.setFromObject(e,!0),r.isEmpty()===!1){i=new v.Box3Helper(r);const o=i.material;o.userData.object=e,o.depthTest=!1,o.transparent=!0}else return}s.scene.add(i),this.helpers[t]=i}}addViewHelper(){const{cameraController:e,container:t}=this.options,s=new Lt.ViewHelper(e.camera,t);t.addEventListener("pointerdown",i=>{i.preventDefault(),s.handleClick(i)}),this.viewHelper=s}remove(e){var i;const t=e.uuid,{sceneController:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.scene.remove(r),delete this.helpers[t],(i=r.dispose)==null||i.call(r)}}removeAll(){Object.keys(this.helpers).forEach(e=>{this.remove({uuid:e})}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof v.AxesHelper||this.remove({uuid:e})})}update(e,t,s){var r,o;const{cameraController:i}=this.options;Object.values(this.helpers).forEach(n=>{if(n.update&&n.update(),n instanceof v.Box3Helper){const a=n.material,{object:c}=a.userData;c&&n.box.setFromObject(c,!0)}}),((r=this.viewHelper)==null?void 0:r.animating)===!0&&(this.viewHelper.update(e),(o=t.cameraControls)==null||o.setPosition(...i.camera.position.toArray()),this.viewHelper.center.copy(s))}renderViewHelper(e){if(!this.viewHelper)return;const t=e.autoClear;e.autoClear=!1,this.viewHelper.render(e),e.autoClear=t}dispose(){var e;this.helpers={},(e=this.viewHelper)==null||e.dispose()}}function Ge(h){let e=!1,t=[];return function(...s){t=s,e||(e=!0,requestAnimationFrame(()=>{e=!1,h(...t)}))}}class hs{constructor(e){var t;this.enabled=!0,this.pickFunctionsMap=new Map,this.pickNodeFunctionsMap=new Map,this.pickFunctionsMapIndex=-1,this.pickNodeFunctionsMapIndex=-1,this.activeObjects=new Set,this.activeObject=null,this.prevActiveObjects=new Set,this.objCallbackMap=new Map,this.pickListener={move:!1,down:!1},this.pencil=e,this.domElement=((t=e.options.controls)==null?void 0:t.domElement)||e.options.container}addPickListener(e){const t=new Set(["move","enter","leave"]),s=new Set(["down","downOutside","click"]),i=r=>{var C;if(!this.enabled)return;r.preventDefault();const o=e==="move"?t:s,n=[];if(this.pickFunctionsMap.forEach(_=>{o.has(_.type)&&n.push(ee(z({},_),{objArr:_.objArr instanceof Function?_.objArr():_.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const _ of n)for(const u of _.objArr){if(!u.object3d||!u.visibleWithAncestors)continue;a.has(u)||a.set(u,new Map);const g=a.get(u);g.has(_.type)||g.set(_.type,[]),g.get(_.type).push(_.cb)}if(a.size===0)return;const c=[...a.keys()].map(_=>_.object3d),m=(C=this.pencil.pick(r,c,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const _=m[0];this.processIntersection(_,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Ge(i),{passive:!1})}processIntersection(e,t,s){const i=this.objCallbackMap,r=e.index||-1;let o=e.object;for(;o;){const n=this.pencil.lead.objMap.get(o);n&&n.visible&&(this.activeObject||(this.activeObject=n),i.has(n)&&this.activeObjects.add(n)),o=o.parent}s==="move"?this.handleLeaveEvents(t):s==="down"&&this.handleDownOutside(t),this.processObjectHierarchy(t,s,r)}processObjectHierarchy(e,t,s){const i=this.objCallbackMap;let r=!1;const o=()=>{r=!0};for(const n of this.activeObjects){if(r)break;const a=i.get(n);if(a)if(t==="move"){const c=a.get("enter");if(c&&!this.prevActiveObjects.has(n))for(const p of c)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("move");if(m)for(const p of m)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s})}else{const c=a.get("down");if(c)for(const p of c)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("click");if(m){const p=C=>{C.preventDefault();const _=5;if(!r&&Math.abs(C.clientX-e.clientX)<=_&&Math.abs(C.clientY-e.clientY)<=_)for(const u of m)u({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});this.domElement.removeEventListener("pointerup",p)};this.domElement.addEventListener("pointerup",p)}}}}handleLeaveEvents(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("leave");if(r&&this.prevActiveObjects.has(i)&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handleDownOutside(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("downOutside");if(r&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handlePick(e,t,s){let i=t;i==="mousemove"?i="move":i==="mouseenter"?i="enter":i==="mouseleave"&&(i="leave"),this.pickFunctionsMapIndex+=1;const r=this.pickFunctionsMapIndex;return this.pickFunctionsMap.set(r,{objArr:e,type:i,cb:s}),this.pickListener.move||Array.from(this.pickFunctionsMap.values()).some(n=>["move","enter","leave"].includes(n.type))&&(this.pickListener.move=!0,this.addPickListener("move")),this.pickListener.down||Array.from(this.pickFunctionsMap.values()).some(n=>["down","downOutside","click"].includes(n.type))&&(this.pickListener.down=!0,this.addPickListener("down")),r}removePick(e){this.pickFunctionsMap.delete(e)}handlePickNode(e,t,s){if(t==="downOutside")return console.warn("handlePickNode:err:不支持 downOutside"),-1;this.pickNodeFunctionsMapIndex+=1;const i=this.pickNodeFunctionsMapIndex,r=e instanceof Function?e():e,o=[];for(const n of r){const a=n;a.element.style.pointerEvents="auto";const c=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Ge(c),!1),o.push({arr:a,type:m,listener:c})}return this.pickNodeFunctionsMap.set(i,o),i}removePickNode(e){const t=this.pickNodeFunctionsMap.get(e);if(t){for(const s of t)s.arr.element.style.pointerEvents="none",s.arr.element.removeEventListener(s.type,s.listener,!1);this.pickNodeFunctionsMap.delete(e)}}dispose(){this.pickFunctionsMap.clear(),this.pickNodeFunctionsMap.clear(),this.activeObjects.clear(),this.prevActiveObjects.clear(),this.objCallbackMap.clear()}}class cs extends hs{constructor(e,t){super(e),this.objMap=new Map,this.objects=new Map,this.objectsPm=new Map,this.objectWrapChindIdMap=new Map,this.objectNamesToFactories=new Map,this.mList=t.mList,this.scene=this.createBaseObject(t.scene||new v.Scene,{key:"@Scene",name:"场景",mList:!1}),this.group=this.createBaseObject(new v.Group,{key:"@Group",name:"物体组",target:this.scene,mList:!1}),this.prefabGroup=this.createBaseObject(new v.Group,{key:"@PrefabGroup",name:"预制组",target:this.scene,mList:!1})}get objectsPromise(){return this.objectsPm.values()}createBaseObject(e,t={}){const s=z({mList:!0},t),i=new U.BaseObject;if(i.object3d=e,i.pencil=this.pencil,i.lead=this,i.mList=this.mList,s.key&&(i.key=s.key),!s.key&&s.target)if(s.target.key==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target),n=o!==void 0?o+1:0;this.objectWrapChindIdMap.set(s.target,n),this.setBaseObjectKey(i,{type:`$p:__c__${n}`,id:"$p:",name:"$p:"},s.target)}return s.name&&(e.name=s.name),s.target&&!s.target.object3d.getObjectById(e.id)&&s.target.object3d.add(e),this.objects.set(i.key,i),this.objMap.set(i.object3d,i),s.mList&&(this.mList.proxyBaseObject(i),this.mList.addBaseObjectMap(i)),e.children&&e.children.forEach(r=>{this.createBaseObject(r,{target:i,mList:s.mList})}),this.pencil.event.emit("lead.draw",{baseObject:i}),i}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(String(t),s)}),this}getObject(e,t){e.includes("#")&&console.warn("getObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`;return this.objects.get(i)}getAllObject(e,t){e.includes("#")&&console.warn("getAllObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`,r=[];return this.objects.forEach((o,n)=>{(n.startsWith(s?i:`${i}#`)||n===i)&&r.push(o)}),r}draw(e,t,s){return te(this,null,function*(){var p,C,_;const i=this.objectNamesToFactories.get(String(e));if(!i)throw new Error(`Unrecognized factory: ${String(e)}`);t||(t={}),t.target===void 0&&(t.target=s);const r=t.target,o=(p=t.onTop)!=null?p:0,n=(C=t.prefab)!=null?C:!1,a=(_=t.create)!=null?_:!0,c=new i().create(t);let m;if(r===null)m=null;else if(typeof r=="string"){const u=this.objects.get(r);if(!u)throw new Error(`Object with key "${r}" not found`);m=u}else r!=null&&r.isBaseObject||r?m=r:n?m=this.prefabGroup:m=this.group;return a===!1?c.create=()=>{}:a!==!0&&(c.create=()=>{a(c)}),c.pencil=this.pencil,c.lead=this,c.mList=this.mList,c.isPrefab=n,c.objectType=`${e}`,c.objectOptions=t,this.setBaseObjectKey(c,{type:c.keyType,name:t.key},m),this.objectsPm.set(c,this.addBaseObject(c,m,o)),yield this.objectsPm.get(c),this.objectsPm.delete(c),c})}setBaseObjectKey(e,t,s){let i="",r=t.name,o=t.type||e.objectType,n=t.id;return s&&(r!=null&&r.includes("$p:")&&(r=r.replace("$p:",s.keyName||"")),o!=null&&o.includes("$p:")&&(o=o.replace("$p:",s.keyType||"")),n!=null&&n.includes("$p:")&&(n=n.replace("$p:",s.keyUId||""))),i=`${o}`,r&&n?i+=`#${r}-${n}`:(r||n)&&(i+=`#${r||n}`),this.objects.has(i)?this.setBaseObjectKey(e,{name:t.name,type:t.type,id:Qe.generateUUID()},s):(e.key=i,e.keyType=o,e.keyUId=n,e.keyName=r,this.objects.set(i,e),i)}updateBaseObjectKey(e,t){const s=e.key;this.objects.delete(s);const i=e.parent,r=this.setBaseObjectKey(e,t,i);return this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach(o=>{var n;if(o.key.includes("__c__")){const a=(n=/__c__(\d+)/.exec(o.key))==null?void 0:n[1];typeof a!="undefined"&&this.updateBaseObjectKey(o,{type:`$p:__c__${a}`,id:"$p:",name:"$p:"})}}),r}addBaseObject(e,t,s){return te(this,null,function*(){if(yield e.create(),e.object3d){const i=e.object3d;i.material&&Array.isArray(i.material)&&(i.material=i.material.slice()),this.mList.proxyBaseObject(e),this.mList.addBaseObjectMap(e),s&&e.setTop(s),t!==null&&t.object3d.add(e.object3d),this.objMap.set(e.object3d,e),i.children.forEach(r=>{this.objMap.get(r)||this.createBaseObject(r,{target:e})})}e.render(),this.pencil.event.emit("lead.draw",{baseObject:e})})}erase(...e){this.handleErase(!0,...e)}eraseWithoutMaterial(...e){this.handleErase(!1,...e)}handleErase(e,...t){[...t].forEach(s=>{const i=[];if(typeof s=="string"){const[r,o]=s.split("#");i.push(...this.getAllObject(r,{key:o}))}else i.push(s);i.forEach(r=>{r.disposeMaterialIfNotUsed=e,r.dispose()})}),this.pencil.event.emit("lead.erase")}update(e,t){this.objects.forEach(s=>{s.update(e,t)})}setSize(e,t){this.objects.forEach(s=>{s.resize(e,t)})}eraseAll(){this.group&&(this.objects.forEach(e=>{e.key.startsWith("Node")&&this.erase(e)}),this.erase(this.group))}dispose(){super.dispose(),this.scene.erase(),this.objects.forEach(e=>{e.erase()}),this.objects.clear(),this.objectsPm.clear(),this.objMap.clear(),this.objectWrapChindIdMap.clear(),this.objectNamesToFactories.clear()}}class ds extends J{get lead(){return this.controller}constructor(e){super(),this.options=e}addLead(e,t,s){const{pencil:i}=this.options,r=new cs(i,{scene:e,mList:t});return this.addController(r,s)}removePage(e){super.removePage(e,t=>{t.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}setSize(e,t){this.controllerMap.forEach((s,i)=>{i.setSize(e,t)})}}class ps extends v.Loader{constructor(e){super(e)}load(e,t,s,i){const r=new v.FileLoader(this.manager);r.setResponseType("blob"),r.setRequestHeader(this.requestHeader),r.setPath(this.path),r.setWithCredentials(this.withCredentials),r.load(e,o=>{const n=o,a=new DecompressionStream("gzip"),c=n.stream().pipeThrough(a);new Response(c).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Xe extends v.Loader{constructor(e){super(e),this.options={type:"image"}}setOptions(e){return this.options=e,this}load(e,t,s,i){let r,o;this.options.type==="image"?(o=document.createElement("img"),r=new v.Texture(o)):this.options.type==="video"?(o=document.createElement("video"),o.preload="auto",o.autoplay=!1,o.loop=!1,o.muted=!0,o.setAttribute("webkit-playsinline","webkit-playsinline"),o.setAttribute("playsinline",""),r=new v.VideoTexture(o)):r=new v.Texture;const n=new v.FileLoader(this.manager);return n.setResponseType("blob"),n.setRequestHeader(this.requestHeader),n.setPath(this.path),n.setWithCredentials(this.withCredentials),n.load(e,a=>{let c=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;c=c.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",_,!1),o.removeEventListener("error",u,!1)},_=()=>{C(),r.needsUpdate=!0,t&&t(r)},u=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",_,!1),o.addEventListener("error",u,!1);const g=window.URL.createObjectURL(c);o.src=g},s,i),r}}const ms={images:["png","jpg","jpeg","ico","webp","avif"],media:["mp4","webm","ogg"],gltf:["gltf","glb"],json:["json","geojson"],gzipJson:["json.gzip"],exr:["exr"],lottie:["lottie.json"]};class us{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new _e.EventEmitter,this.options=z({simpleTexture4deleted:!1,prefix:""},e),this.loadingManager=new v.LoadingManager(()=>{},(t,s,i)=>{this.emit("progress",s,i)},t=>{console.warn(`Failed to load ${t}`)})}emit(e,...t){this.event.emit(e,...t)}on(e,t){this.event.on(e,t)}getAsset(e){const t=this.getAssetType(e);if(!t)return;const s=this.assets.get(e);if(!s){if((t==="images"||t==="media"||t==="exr")&&this.options.simpleTexture4deleted&&this.delLoadArr.includes(e))return new v.Texture;console.warn(`Asset ${e} not found`)}return s}getAssetType(e){var s;const t=(s=e.split(".").pop())==null?void 0:s.toLowerCase();if(t){if(e.endsWith("lottie.json"))return"lottie";if(e.endsWith("json.gzip"))return"gzipJson"}else return;for(const[i,r]of Object.entries(ms))if(r.includes(t))return i}getLoader(e,t){if(e==="images")return this.textureLoader||(this.textureLoader=new Xe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Xe(this.loadingManager),this.videoTextureLoader.setOptions({type:"video"}),this.options.prefix&&this.videoTextureLoader.setPath(this.options.prefix)),this.videoTextureLoader;if(e==="gltf"&&(t!=null&&t.dracoPath))return this.dracoGltfLoader||(this.dracoGltfLoader=new Me.GLTFLoader(this.loadingManager),this.dracoLoader=new Pt.DRACOLoader,this.dracoLoader.setDecoderPath(t==null?void 0:t.dracoPath),this.dracoGltfLoader.setDRACOLoader(this.dracoLoader),this.options.prefix&&this.dracoGltfLoader.setPath(this.options.prefix)),this.dracoGltfLoader;if(e==="gltf")return this.gltfLoader||(this.gltfLoader=new Me.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new At.LottieLoader(this.loadingManager),this.options.prefix&&this.lottieLoader.setPath(this.options.prefix)),this.lottieLoader;if(e==="gzipJson")return this.gzipJsonLoader||(this.gzipJsonLoader=new ps(this.loadingManager),this.options.prefix&&this.gzipJsonLoader.setPath(this.options.prefix)),this.gzipJsonLoader;if(e==="json")return this.jsonLoader||(this.jsonLoader=new v.FileLoader(this.loadingManager),this.jsonLoader.setResponseType("json"),this.options.prefix&&this.jsonLoader.setPath(this.options.prefix)),this.jsonLoader;if(e==="exr")return this.exrLoader||(this.exrLoader=new St.EXRLoader(this.loadingManager),this.options.prefix&&this.exrLoader.setPath(this.options.prefix)),this.exrLoader}add(e,t){typeof e=="string"&&(e=[e]),e.forEach(s=>{const i=z({src:s},t);this.loadObj.push(i)})}getSrcByAsset(e,t=this.assets){let s;return t.forEach((i,r)=>{i===e&&(s=r)}),s}get textureAssets(){const e=new Map;return this.assets.forEach((t,s)=>{(t instanceof v.Texture||t instanceof v.DataTexture||t.isVideoTexture)&&e.set(s,t)}),e}loadAll(){return te(this,null,function*(){const e=this.loadObj.filter(t=>!this.delLoadArr.includes(t.src));return yield Promise.all(e.map(t=>this.load(t.src,t)))})}load(e,t){return te(this,null,function*(){var n,a;const s=(n=t==null?void 0:t.type)!=null?n:this.getAssetType(e);if(!s)return;const i=(t==null?void 0:t.cache)!==!1,r=Qe.makePromiseCreator();if(i){if(this.assets.has(e))return this.assets.get(e);this.assets.set(e,r.promise)}const o=this.getLoader(s,t);try{const c=yield o.loadAsync(e);if(this.assets.set(e,c),r.resolve(c),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;c.anisotropy=m}return c}catch(c){r.reject(`Failed to load ${e}`);return}})}getUnusedAssets(){const{scene:e}=this.options;if(!e)return[...this.delLoadArr];const t=new Set,s=this.textureAssets;e.traverse(r=>{const o=r;o.material&&(Array.isArray(o.material)?o.material:[o.material]).forEach(a=>{[a.map,a.emissiveMap,a.normalMap,a.roughnessMap,a.metalnessMap,a.aoMap].forEach(c=>{if(c){const m=this.getSrcByAsset(c,s);m&&t.add(m)}})})});const i=new Set(this.textureAssets.keys());return t.forEach(r=>{i.delete(r)}),[...i,...this.delLoadArr]}dispose(){var e;this.assets.clear(),(e=this.dracoLoader)==null||e.dispose(),this.event.removeAllListeners(),this.delLoadArr.length=0,this.loadObj.length=0}}const fs={prefix:""};class _s extends J{get loader(){return this.controller}constructor(e){super(),this.options=e}addLoader(e,t){const{loaderParams:s}=this.options,i=new us(ee(z({},s),{scene:e}));return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}class gs{constructor(e){this.materials=new Map,this.fixBaseObjects=new Map,this.materialBaseObjectMap=new Map,this.pencil=e}add(e,t){this.materials.set(e,t);const s={object3d:new Proxy({material:t},{set:(i,r,o)=>{var n;if(r==="material"&&!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)){const a=i.material;return i.material=o,this.materials.set(e,o),this.disposeMaterial(a),this.syncChangeMaterial(a,o),!0}return i[r]=o,!0}})};this.fixBaseObjects.set(e,s),this.pencil.event.emit("mList.add",{key:e,material:t,baseObject:s})}get(e){const t=this.materials.get(e);return t||console.warn(`Material with key "${e}" not found.`),t}getByName(e){for(const[,t]of this.materials.entries())if(t.name===e)return t;console.warn(`Material with name "${e}" not found.`)}getKey(e){for(const[t,s]of this.materials.entries())if(s===e)return t}getKeyByName(e){for(const[t,s]of this.materials.entries())if(s.name===e)return t;console.warn(`Material key with name "${e}" not found.`)}addMultiple(e,t){for(const[s,i]of Object.entries(t)){const r=`${e}#${s}`;i&&this.add(r,i)}}getMultiple(e){const t={},s=`${e}#`;let i=!1;for(const[r,o]of this.materials.entries())if(r.startsWith(s)){const n=r.substring(s.length);t[n]=o,i=!0}return i?t:null}copy(e,t,s={}){const i=this.get(e);if(!i)return console.warn(`Material with key "${e}" not found.`),null;const r=i.clone();return s.name&&(r.name=s.name),this.add(t,r),r}copyMultiple(e,t){const s={},i=`${e}#`;for(const[r,o]of this.materials.entries())if(r.startsWith(i)){const n=r.substring(i.length),a=o.clone();s[n]=a;const c=`${t}#${n}`;this.add(c,a)}return s}disposeMaterial(e){if(!e)return;const t=new U.ResourceTracker;t.track(Array.isArray(e)?e:[e]),t.dispose()}remove(e){const t=this.materials.get(e);t&&this.disposeMaterial(t),this.materials.delete(e),this.fixBaseObjects.delete(e),this.pencil.event.emit("mList.remove",{key:e,material:t})}removeByMaterial(e){[...this.materials.entries()].some(([t,s])=>s===e?(this.remove(t),!0):!1)}proxyBaseObject(e){const t=e.object3d;if(!t.material)return;this.applyColorSpaceToMaterials(t.material);const s=o=>{if("__isProxy"in o)return o;const n=new Proxy(o,{set:(a,c,m)=>{if(typeof c=="string"&&!Number.isNaN(Number(c))){const p=Number(c);if(p>=0&&p<a.length){const C=a[p];return this.rmBaseObjectMap(e,C),a[p]=m,m&&(this.applyColorSpaceToMaterials(m),this.addBaseObjectMap(e)),!0}}return a[c]=m,!0}});return Object.defineProperty(n,"__isProxy",{value:!0,enumerable:!1}),n};e.materialList&&(Object.values(e.materialList).forEach(o=>{o&&this.applyColorSpaceToMaterials(o)}),e.materialList=new Proxy(e.materialList,{set:(o,n,a)=>{if(typeof n=="string"){const c=o[n];return this.rmBaseObjectMap(e,c),o[n]=a,a&&(this.applyColorSpaceToMaterials(a),this.addBaseObjectMap(e)),!0}return o[n]=a,!0},get:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];if(Array.isArray(a)){const c=s(a);return c!==a&&(o[n]=c),c}return a}return o[n]},deleteProperty:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];this.rmBaseObjectMap(e,a)}return delete o[n],!0}}));const i=t.material,r="_enhancedMaterial";t[r]=i,Object.defineProperty(t,"material",{get:()=>{var n;const o=t[r];if(!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)&&Array.isArray(o)){const a=s(o);return a!==o&&(t[r]=a),a}return o},set:o=>{var n;if((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)t[r]=o;else{if(e.materialList&&Object.values(e.materialList).includes(o)){t[r]=o;return}this.rmBaseObjectMap(e),t[r]=o,o&&this.applyColorSpaceToMaterials(o),this.addBaseObjectMap(e)}e.handleMaterialChange(o)},enumerable:!0,configurable:!0})}applyColorSpaceToMaterials(e){xe.applyTextureColorSpace({material:e})}material2array(e){return Array.isArray(e)?e:[e]}addBaseObjectMap(e){const t=e.object3d;t.material&&([...Object.values(e.materialList),t.material].forEach(s=>{s&&this.material2array(s).forEach(r=>{const o=this.materialBaseObjectMap.get(r);o?o.add(e):this.materialBaseObjectMap.set(r,new Set([e]))})}),this.pencil.event.emit("mList.addBaseObjectMap"))}rmBaseObjectMap(e,t,s=!0){const i=t&&this.material2array(t);this.materialBaseObjectMap.forEach((r,o)=>{i&&!i.includes(o)||r.has(e)&&(r.delete(e),r.size===0&&s&&(this.materialBaseObjectMap.delete(o),this.disposeMaterial(o)))}),this.pencil.event.emit("mList.rmBaseObjectMap")}getBaseObjectMap(e){return this.materialBaseObjectMap.get(e)||new Set}syncChangeMaterial(e,t){const s=this.materialBaseObjectMap.get(e);s&&s.forEach(i=>{const r=i.object3d,o=r.material;if(Array.isArray(o)){const n=o.indexOf(e);n!==-1&&(o[n]=t)}else o===e&&(r.material=t);i.materialList&&Object.keys(i.materialList).forEach(n=>{var c;const a=(c=i.materialList)==null?void 0:c[n];if(Array.isArray(a)){const m=a.indexOf(e);m!==-1&&(a[m]=t)}else a===e&&i.materialList&&(i.materialList[n]=t)})})}dispose(){const e=new U.ResourceTracker;e.track([...this.materials.values()]),e.dispose(),this.materials.clear(),this.fixBaseObjects.clear(),this.materialBaseObjectMap.clear()}}class ys extends J{get mList(){return this.controller}constructor(e){super(),this.options=e}addMList(e,t){const{pencil:s}=this.options,i=new gs(s);return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}const vs={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:xe.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1};class Cs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i}=e,{alpha:r,devicePixelRatio:o,antialias:n,powerPreference:a,toneMappingExposure:c,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u}=i,g=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u});g.setSize(t,s),g.setPixelRatio(o),g.toneMappingExposure=c,g.outputColorSpace=m,this.renderer=g}setSize(e,t){this.renderer.setSize(e,t)}setPixelRatio(e){this.renderer.setPixelRatio(e)}render(e,t){this.renderer.render(e,t)}setViewport(e){var a,c;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(c=e.scissorTest)!=null?c:!1;this.renderer.setViewport(t,s,i,r),o&&(this.renderer.setScissor(t,s,i,r),this.renderer.setScissorTest(n))}dispose(){var e,t,s;this.setSize(0,0),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.forceContextLoss()}}const Os={background:null};class Es extends J{get scene(){return this.controller}constructor(e){super(),this.options=e}addScene(e,t){const s=new v.Scene;return e!=null&&e.background&&(s.background=e.background),this.addController(s,t)}removePage(e){super.removePage(e,t=>{const s=new U.ResourceTracker;s.track(t),s.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.visible=s})}}class Ts{constructor(e){this.event=new _e.EventEmitter;const{renderer:t,scene:s,camera:i}=e,r=new Mt.TransformControls(i,t.domElement);if(r.getHelper){const o=r.getHelper();if(s.add(o),+v.REVISION<170){const n=r._root;n.dispose=()=>{n.traverse(a=>{a.geometry&&a.geometry.dispose(),a.material&&a.material.dispose()})},r.dispose=()=>{r.disconnect(),n.dispose()}}}else r instanceof v.Object3D&&s.add(r);this.controls=r,this.addEvent()}get detach(){return this.controls.detach.bind(this.controls)}get attach(){return this.controls.attach.bind(this.controls)}addEvent(){let e=null,t=null,s=null;const i=this.controls;i.addEventListener("change",()=>{const r=i.object;r!==void 0&&this.event.emit("change",r)}),i.addEventListener("mouseDown",()=>{const r=i.object;e=r.position.clone(),t=r.rotation.clone(),s=r.scale.clone(),this.event.emit("mouseDown",r)}),i.addEventListener("mouseUp",()=>{const r=i.object;if(r!==void 0)switch(i.getMode()){case"translate":e.equals(r.position)||this.event.emit("translate",r,r.position,e);break;case"rotate":t.equals(r.rotation)||this.event.emit("rotate",r,r.rotation,t);break;case"scale":s.equals(r.scale)||this.event.emit("scale",r,r.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const ws={antialias:!0,devicePixelRatio:window.devicePixelRatio};class xs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i,renderer:r}=e,{devicePixelRatio:o,antialias:n}=i,a=new r({antialias:n});a.setSize(t,s),a.setPixelRatio(o),this.renderer=a}setSize(e,t){this.renderer.setSize(e,t)}render(e,t){this.renderer.render(e,t)}dispose(){var e,t;this.setSize(1,1),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}const ue=class ue{constructor(e){var r,o;this.raycaster=new v.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new v.Vector3,this._cameraTarget=new v.Vector3,this.event=new _e.EventEmitter,this.timer=new v.Timer,this.userData={},this.pageActiveIndex=0,this.pageCountIndex=0,this.userSetDprCache=1,this.viewPadding=[0,0,0,0],this._isDispose=!1,this.event.setMaxListeners(1/0),(o=(r=this.timer).connect)==null||o.call(r,document),this.options=vt(ue.options,e,{isMergeableObject:xe.isPlainObject}),this.userSetDprCache=this.options.renderer.devicePixelRatio;const{container:t,stats:s,transformControls:i}=this.options;if(this.init(),this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),i&&this.initTransformControls(),s){const n=new Ct({horizontal:!1});n.dom.style.position="absolute",n.init(this.renderer),t.appendChild(n.dom),this.stats=n}this.initResizeObserver(),this.tweenUpdateRaf()}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?2:this.renderer.capabilities.getMaxAnisotropy()}get controls(){return this.controlsController.cameraControls}get cameraPositon(){return this.controls.getPosition(this._cameraPositon,!1)}get cameraTarget(){return this.controls.getTarget(this._cameraTarget,!1)}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}get loader(){return this.loaderController.loader}get lead(){return this.leadController.lead}get mList(){return this.mListController.mList}tweenUpdateRaf(){ye.update(),this.TweenRaf=requestAnimationFrame(this.tweenUpdateRaf.bind(this))}use(e,...t){this.installPlugins.has(e.pluginName)?console.log("plugin already installed"):typeof e.install=="function"&&(e.install(this,...t),this.installPlugins.set(e.pluginName,e))}addPage({sceneOptions:e,cameraOptions:t}={}){const s=this.pageCountIndex+1,i=this.cameraController.addPerspectiveCamera(t,s),r=this.sceneController.addScene(e,s);r.add(i),this.controlsController.addCameraControls(i,s),this.loaderController.addLoader(r,s);const o=this.mListController.addMList(null,s);return this.leadController.addLead(r,o,s),this.pageCountIndex=s,s}removePage(e){this.cameraController.removePage(e),this.sceneController.removePage(e),this.controlsController.removePage(e),this.loaderController.removePage(e),this.mListController.removePage(e),this.leadController.removePage(e),this.pageCountIndex===e&&(this.pageCountIndex-=1),this.pageActiveIndex===e&&(this.render(),this.showPage(0))}showPage(e){var s;if(e===this.pageActiveIndex)return;const t=this.scene;this.sceneController.setPageActive(e),t&&((s=this.cssRendererController)==null||s.render(t,this.camera)),this.cameraController.setPageActive(e),this.controlsController.setPageActive(e),this.loaderController.setPageActive(e),this.mListController.setPageActive(e),this.leadController.setPageActive(e),this.pageActiveIndex=e}init(){var f;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:c}=this.getSize(),m=t?new xs({width:a,height:c,renderer:this.options.WebGPURenderer,rendererParams:ws}):new Cs({width:a,height:c,rendererParams:ee(z({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:c}),C=new Es({}),_=new ss({controlsParams:{domElement:(f=o==null?void 0:o.domElement)!=null?f:m.renderer.domElement}}),u=new _s({loaderParams:z({anisotropy:this.maxAnisotropy},n)}),g=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=_,this.loaderController=u,this.mListController=g,this.leadController=y;const l=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.showPage(l),s){const E=new ls({container:e,sceneController:C,cameraController:p});E.add(C.scene),this.helperController=E,i&&E.addViewHelper()}e.appendChild(m.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,o=new ts({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=o,e&&o.addBloomPass(z({},t)),s&&o.addSSAOPass(z({},i)),o.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const o=new as(e);t&&o.addRenderer("css2d",i),s&&o.addRenderer("css3d",r),this.cssRendererController=o}}initTransformControls(){const e=new Ts({camera:this.camera,renderer:this.renderer,scene:this.scene});e.event.on("mouseDown",()=>{var t;(t=this.controlsController)==null||t.disable()}),e.event.on("mouseUp",()=>{var t;(t=this.controlsController)==null||t.enable()}),this.transformController=e}getSize(){const{container:e}=this.options;return{width:e.offsetWidth,height:e.offsetHeight}}initResizeObserver(){const{container:e}=this.options;if(this.resizeObserver)return;const t=new ResizeObserver(s=>{for(const i of s){const r=i.contentRect;this.handeleResize(r.width,r.height),this.setDevicePixelRatio(this.userSetDprCache)}});t.observe(e),this.resizeObserver=t}handeleResize(e,t,s=!0){const{rendererController:i,cameraController:r,composerController:o,cssRendererController:n,leadController:a}=this,c=this.renderer.getSize(new v.Vector2);c.x===e&&c.y===t||(r.setSize(e,t),i.setSize(e,t),o==null||o.setSize(e,t),n==null||n.setSize(e,t),a.setSize(e,t),this.installPlugins.forEach(m=>{var p;(p=m.setSize)==null||p.call(m,e,t)}),this.viewPadding.some(m=>m!==0)&&this.setViewPadding(...this.viewPadding),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var n;this.userSetDprCache=e;const{width:t,height:s}=this.getSize();let i=Math.sqrt(this.maxBackufferArea/(t*s));i=(i*100|0)/100;const r=Math.min(e,i);r!==e&&console.warn("maxBackufferArea:",this.maxBackufferArea," the pixel ratio is set to",r);const o=this.renderer.getPixelRatio();r!==o&&(this.rendererController.setPixelRatio(r),(n=this.composerController)==null||n.setPixelRatio(r),this.viewPadding.some(a=>a!==0)&&this.setViewPadding(...this.viewPadding))}setViewPadding(e=0,t=0,s=0,i=0){const{width:r,height:o}=this.renderer.getSize(new v.Vector2),n={x:i,y:s,width:r-i-t,height:o-e-s};this.rendererController.setViewport(n),this.cameraController.setAspect(n.width/n.height),this.viewPadding=[e,t,s,i]}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:o}=r,n=new v.Vector2,a=o.getBoundingClientRect();if(n.x=(e.clientX-a.left)/(a.right-a.left)*2-1,n.y=-((e.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){i.setFromCamera(n,this.camera);const c=i.intersectObjects(t||this.scene.children,s);if(c.length)return{object:c[0].object,index:c[0].index,intersects:c}}}render(){var s,i,r,o,n,a;if(!this.camera||!this.scene)return;this.event.emit("beforeRender"),this.timer.update(),ye.update();const e=this.timer.getDelta(),t=this.timer.getElapsed();this.controlsController.update(e,t),this.leadController.update(e,t),this.installPlugins.forEach(c=>{var m;(m=c.update)==null||m.call(c,e,t)}),(s=this.helperController)==null||s.update(e,this.controlsController,this.cameraTarget),(i=this.composerController)!=null&&i.active?this.composerController.render():(r=this.rendererController)==null||r.render(this.scene,this.camera),(o=this.helperController)==null||o.renderViewHelper(this.renderer),(n=this.cssRendererController)==null||n.render(this.scene,this.camera),(a=this.stats)==null||a.update(),this.event.emit("render",{delta:e,elapsed:t})}start(){var e;window.cancelAnimationFrame(this.TweenRaf),(e=this.renderer)==null||e.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){var e;this.tweenUpdateRaf(),(e=this.renderer)==null||e.setAnimationLoop(null),this.event.emit("stop")}autoRotate(e){this.controlsController.autoRotateSpeed=e}showPipViewport(e){this.composerController.pipViewportState=e;let t=this.pipCameraControls;if(e){const{width:s,height:i}=this.getSize(),r=new DOMRect(e.x/s,(i-e.y-e.height)/i,e.width/s,e.height/i);if(t)t.enabled=!0,t.camera.position.copy(this.camera.position);else{const o=this.cameraController.cloneCamera(31);o.aspect=e.width/e.height,o.updateProjectionMatrix(),t=this.controlsController.addCameraControls(o,this.sceneController.activeIndex),t.addEventListener("update",()=>{this.controls.enabled=!1}),t.addEventListener("sleep",()=>{this.controls.enabled=!0}),this.pipCameraControls=t}t.interactiveArea=r}}dispose(){var e,t,s,i,r,o,n,a,c,m,p,C,_,u;this.handeleResize(1,1,!1),this.stop(),this.timer.dispose(),ye.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(g=>{var y;(y=g.dispose)==null||y.call(g)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(i=this.cssRendererController)==null||i.dispose(),(r=this.sceneController)==null||r.dispose(),(o=this.cameraController)==null||o.dispose(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(c=this.rendererController)==null||c.dispose(),(m=this.loaderController)==null||m.dispose(),(p=this.leadController)==null||p.dispose(),(C=this.mListController)==null||C.dispose(),this.cssRendererController=void 0,this.installPlugins.clear(),(_=this.stats)==null||_.dom.remove(),(u=this.renderer)==null||u.domElement.remove(),this._isDispose=!0}};ue.options={stats:U.IS_DEV,helper:U.IS_DEV,viewHelper:U.IS_DEV,controls:!0,transformControls:U.IS_DEV,renderer:vs,composer:es,scene:Os,camera:lt,bloom:!1,bloomParams:Jt,ssao:!1,loader:fs,ssaoParams:Qt,css2DRenderer:!1,css2DRendererParams:z({},$e),css3DRenderer:!1,css3DRendererParams:z({},$e)};let me=ue;const bs=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=bs;exports.default=me;
|
|
98
|
+
}`};class Zt extends xt.OutputPass{constructor(){super();const e=Yt;this.uniforms=v.UniformsUtils.clone(e.uniforms),this.material=new v.RawShaderMaterial({name:e.name,uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader}),this.fsQuad?this.fsQuad=new Ae.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Ae.FullScreenQuad(this.material))}}const Wt=new v.MeshBasicMaterial({color:"black"}),qt=new v.PointsMaterial({color:"black",sizeAttenuation:!1}),Kt=new v.PointsMaterial({color:"black",sizeAttenuation:!0}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Be=new v.Color(0),Qt={kernelRadius:8,minDistance:.005,maxDistance:.1},Jt={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},es={multisampling:4,premultiplieAlpha:!1};class ts{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new v.Layers,this.bloomMaterials={},this.bloomVisible={},this.bloomComposerRenderIng=!1,this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:o}=t;this.renderer=o;const{multisampling:n}=r,{maxSamples:a}=o.capabilities,c=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(c.width,c.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Se.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const _=new Ot.RenderPass(s.scene,i.camera);p.addPass(_),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=_,i.event.on("pageChange",u=>{this.changeCamera(u)}),s.event.on("pageChange",u=>{this.changeScene(u)})}changeCamera(e){this.renderPass.camera=e,this.camera=e}changeScene(e){this.renderPass.scene=e,this.ssaoPass&&(this.ssaoPass.scene=e),this.scene=e}addOutputPass(){const{premultiplieAlpha:e}=this.options.composerParams,t=new Zt;this.outputPass=t,this.setPremultiplieAlpha(e),this.finalComposer.addPass(t)}setPremultiplieAlpha(e){this.outputPass&&(this.outputPass.uniforms.premultiplieAlpha.value=e?1:0)}addSSAOPass(e){const{scene:t,camera:s,renderer:i}=this,r=i.getSize(new v.Vector2),o=r.width,n=r.height,a=new Et.SSAOPass(t,s,o,n);a.kernelRadius=e.kernelRadius,a.minDistance=e.minDistance,a.maxDistance=e.maxDistance,this.ssaoPass=a,this.finalComposer.addPass(a)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:o}=e,n=new Tt.UnrealBloomPass(new v.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=n;const a=new Se.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const c=Vt(a);c.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(c),this.mixPass=c,this.bloomLayer.set(U.BLOOM_SCENE)}setBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}e.traverse(s=>{const{object3d:i}=s;i&&(t?(this.bloomSelection.add(s),i.layers.enable(U.BLOOM_SCENE)):(this.bloomSelection.delete(s),i.layers.disable(U.BLOOM_SCENE)))}),this.bloomSelection.size===0?this.bloomComposerActive=!1:this.bloomComposerActive=!0}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){var s;(s=this.bloomComposer)==null||s.setSize(e,t),this.finalComposer.setSize(e,t)}setPixelRatio(e){var t;(t=this.bloomComposer)==null||t.setPixelRatio(e),this.finalComposer.setPixelRatio(e)}darkenNonBloomed(){const e=[],t=[];this.scene.children.forEach(i=>{i.isTransformControls||i.isTransformControlsRoot||i.type==="RectAreaLightHelper"?e.push(i):t.push(i)}),t.forEach(i=>{i.traverse(r=>{var c;const o=r,n=r,a=r;if((c=o.material)!=null&&c.isShadowMaterial)e.push(o);else if(o.material&&this.bloomLayer.test(o.layers)===!1){if(o.material.transparent===!0&&(o.material.opacity!==1||o.material.alphaMap)){e.push(o);return}this.bloomMaterials[o.uuid]=o.material,n.isSprite?n.material.sizeAttenuation?n.material=$t:n.material=Gt:o.material instanceof U.MeshLineMaterial?o.material=Xt:a.isPoints?a.material.sizeAttenuation?a.material=Kt:a.material=qt:o.material=Wt}})}),e.forEach(i=>{this.bloomVisible[i.uuid]=i.visible,i.visible=!1});const s=this.scene.background;s!=null&&s.isTexture&&(this.scene.userData._backgroundOriginal=s,this.scene.background=Be)}restoreNonBloomed(){if(this.scene.traverse(e=>{const t=e;this.bloomMaterials[t.uuid]?(t.material=this.bloomMaterials[t.uuid],delete this.bloomMaterials[t.uuid]):this.bloomVisible[t.uuid]!==void 0&&(t.visible=this.bloomVisible[t.uuid],delete this.bloomVisible[t.uuid])}),this.scene.background===Be){const e=this.scene.userData._backgroundOriginal;e&&(this.scene.background=e,delete this.scene.userData._backgroundOriginal)}}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.bloomComposerRenderIng=!0,this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed(),this.bloomComposerRenderIng=!1):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new v.Vector2)}render(){if(!this.active)return;const{cameraController:e,rendererController:t,sceneController:s}=this.options;if(this.finalComposerRender(),this.pipViewportState){e.setPageActive(31),e.setAspect(this.pipViewportState.width/this.pipViewportState.height),t.setViewport(ee(z({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender(),e.setPageActive(s.activeIndex);const i=this.getSize();t.setViewport({x:0,y:0,width:i.width,height:i.height,scissor:!0,scissorTest:!1})}}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}class ss extends J{constructor(e){super(),this.autoRotateSpeed=0,this.options=e;const t={Vector2:v.Vector2,Vector3:v.Vector3,Vector4:v.Vector4,Quaternion:v.Quaternion,Matrix4:v.Matrix4,Spherical:v.Spherical,Box3:v.Box3,Sphere:v.Sphere,Raycaster:v.Raycaster};Q.install({THREE:t})}get cameraControls(){return this.controller}addCameraControls(e,t){const{domElement:s}=this.options.controlsParams,i=new Q(e,s);return i.setLookAt(0,0,400,0,0,0,!1),this.addController(i,t)}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}removePage(e){super.removePage(e,t=>{t.dispose()})}enable(){this.activeControllerSet.forEach(e=>{e.enabled=!0})}disable(){this.activeControllerSet.forEach(e=>{e.enabled=!1})}update(e,t){super.update(e,t),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*v.MathUtils.DEG2RAD)}}const Ve=new v.Vector3,is=new v.Quaternion,Ye=new v.Vector3,H=new v.Matrix4,rs=new v.Matrix4;class os{constructor(e={}){const t=this;let s,i,r,o;const n={camera:{style:""},objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a;const c=document.createElement("div");c.style.transformOrigin="0 0",c.style.pointerEvents="none",a.appendChild(c);const m=document.createElement("div");m.style.transformStyle="preserve-3d",c.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const f=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(c.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,c.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):c.style.transform="",y.matrixWorldAutoUpdate===!0&&y.updateMatrixWorld(),l.parent===null&&l.matrixWorldAutoUpdate===!0&&l.updateMatrixWorld();let E,O;l.isOrthographicCamera&&(E=-(l.right+l.left)/2,O=(l.top+l.bottom)/2);const x=l.view&&l.view.enabled?l.view.height/l.view.fullHeight:1,T=l.isOrthographicCamera?`scale( ${x} )scale(`+f+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${x} )translateZ(`+f+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+f+"px) ":"")+T+"translate("+r+"px,"+o+"px)";n.camera.style!==D&&(m.style.transform=D,n.camera.style=D),g(y,y,l)},this.setSize=function(y,l){s=y,i=l,r=s/2,o=i/2,a.style.width=y+"px",a.style.height=l+"px",c.style.width=y+"px",c.style.height=l+"px",m.style.width=y+"px",m.style.height=l+"px"};function p(y){return Math.abs(y)<1e-10?0:y}function C(y){const l=y.elements;return"matrix3d("+p(l[0])+","+p(-l[1])+","+p(l[2])+","+p(l[3])+","+p(l[4])+","+p(-l[5])+","+p(l[6])+","+p(l[7])+","+p(l[8])+","+p(-l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(-l[13])+","+p(l[14])+","+p(l[15])+")"}function _(y){const l=y.elements;return"translate(-50%,-50%)"+("matrix3d("+p(l[0])+","+p(l[1])+","+p(l[2])+","+p(l[3])+","+p(-l[4])+","+p(-l[5])+","+p(-l[6])+","+p(-l[7])+","+p(l[8])+","+p(l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(l[13])+","+p(l[14])+","+p(l[15])+")")}function u(y){y.isCSS3DObject&&(y.element.style.display="none");for(let l=0,f=y.children.length;l<f;l++)u(y.children[l])}function g(y,l,f,E){if(y.visible===!1){u(y);return}if(y.isCSS3DObject){const O=y.layers.test(f.layers)===!0,x=y.element;if(x.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,f);let T;y.isCSS3DSprite?(H.copy(f.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(rs.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(Ve,is,Ye),H.setPosition(Ve),H.scale(Ye),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=_(H)):T=_(y.matrixWorld);const L=n.objects.get(y);if(L===void 0||L.style!==T){x.style.transform=T;const D={style:T};n.objects.set(y,D)}x.parentNode!==m&&m.appendChild(x),y.onAfterRender(t,l,f)}}for(let O=0,x=y.children.length;O<x;O++)g(y.children[O],l,f)}}}const G=new v.Vector3,Ze=new v.Matrix4,We=new v.Matrix4,qe=new v.Vector3,Ke=new v.Vector3;class ns{constructor(e={}){const t=this;let s,i,r,o;const n={objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a,this.getSize=function(){return{width:s,height:i}},this.render=function(u,g){u.matrixWorldAutoUpdate===!0&&u.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),Ze.copy(g.matrixWorldInverse),We.multiplyMatrices(g.projectionMatrix,Ze),m(u,u,g),_(u)},this.setSize=function(u,g){s=u,i=g,r=s/2,o=i/2,a.style.width=u+"px",a.style.height=g+"px"};function c(u){u.isCSS2DObject&&(u.element.style.display="none");for(let g=0,y=u.children.length;g<y;g++)c(u.children[g])}function m(u,g,y){if(u.visible===!1){c(u);return}if(u.isCSS2DObject){G.setFromMatrixPosition(u.matrixWorld),G.applyMatrix4(We);const l=G.z>=-1&&G.z<=1&&u.layers.test(y.layers)===!0,f=u.element;f.style.display=l===!0?"":"none",l===!0&&(u.onBeforeRender(t,g,y),f.style.transform="translate("+-100*u.center.x+"%,"+-100*u.center.y+"%)translate("+(G.x*r+r)+"px,"+(-G.y*o+o)+"px)",f.parentNode!==a&&a.appendChild(f),u.onAfterRender(t,g,y));const E={distanceToCameraSquared:p(y,u)};n.objects.set(u,E)}for(let l=0,f=u.children.length;l<f;l++)m(u.children[l],g,y)}function p(u,g){return qe.setFromMatrixPosition(u.matrixWorld),Ke.setFromMatrixPosition(g.matrixWorld),qe.distanceToSquared(Ke)}function C(u){const g=[];return u.traverseVisible(function(y){y.isCSS2DObject&&g.push(y)}),g}function _(u){const g=C(u).sort(function(l,f){if(l.renderOrder!==f.renderOrder)return f.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(f).distanceToCameraSquared;return E-O}),y=g.length;for(let l=0,f=g.length;l<f;l++)g[l].element.style.zIndex=y-l}}}const $e={zIndex:"auto"};class as{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,i=s.offsetWidth,r=s.offsetHeight,o=e==="css2d"?new ns:new os;o.domElement.style.position="absolute",o.domElement.style.top="0",o.domElement.style.pointerEvents="none",o.domElement.style.zIndex=t.zIndex,o.setSize(i,r),s.appendChild(o.domElement),e==="css2d"?this.css2Drenderer=o:e==="css3d"&&(this.css3Drenderer=o)}setSize(e,t){var s,i;(s=this.css2Drenderer)==null||s.setSize(e,t),(i=this.css3Drenderer)==null||i.setSize(e,t)}render(e,t){var s,i;(s=this.css2Drenderer)==null||s.render(e,t),(i=this.css3Drenderer)==null||i.render(e,t)}dispose(){var e,t;(e=this.css2Drenderer)==null||e.domElement.remove(),(t=this.css3Drenderer)==null||t.domElement.remove(),this.css2Drenderer=void 0,this.css3Drenderer=void 0}}class ls{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{sceneController:s}=this.options;let i=this.helpers[t];if(i===void 0){if(e.isScene)i=new v.AxesHelper(100);else if(e.isCamera)i=new v.CameraHelper(e);else if(e.isPointLight)i=new v.PointLightHelper(e,1);else if(e.isDirectionalLight)i=new v.DirectionalLightHelper(e,1);else if(e.isSpotLight)i=new v.SpotLightHelper(e);else if(e.isHemisphereLight)i=new v.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)i=new bt.RectAreaLightHelper(e);else{const r=new v.Box3;if(r.setFromObject(e,!0),r.isEmpty()===!1){i=new v.Box3Helper(r);const o=i.material;o.userData.object=e,o.depthTest=!1,o.transparent=!0}else return}s.scene.add(i),this.helpers[t]=i}}addViewHelper(){const{cameraController:e,container:t}=this.options,s=new Lt.ViewHelper(e.camera,t);t.addEventListener("pointerdown",i=>{i.preventDefault(),s.handleClick(i)}),this.viewHelper=s}remove(e){var i;const t=e.uuid,{sceneController:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.scene.remove(r),delete this.helpers[t],(i=r.dispose)==null||i.call(r)}}removeAll(){Object.keys(this.helpers).forEach(e=>{this.remove({uuid:e})}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof v.AxesHelper||this.remove({uuid:e})})}update(e,t,s){var r,o;const{cameraController:i}=this.options;Object.values(this.helpers).forEach(n=>{if(n.update&&n.update(),n instanceof v.Box3Helper){const a=n.material,{object:c}=a.userData;c&&n.box.setFromObject(c,!0)}}),((r=this.viewHelper)==null?void 0:r.animating)===!0&&(this.viewHelper.update(e),(o=t.cameraControls)==null||o.setPosition(...i.camera.position.toArray()),this.viewHelper.center.copy(s))}renderViewHelper(e){if(!this.viewHelper)return;const t=e.autoClear;e.autoClear=!1,this.viewHelper.render(e),e.autoClear=t}dispose(){var e;this.helpers={},(e=this.viewHelper)==null||e.dispose()}}function Ge(h){let e=!1,t=[];return function(...s){t=s,e||(e=!0,requestAnimationFrame(()=>{e=!1,h(...t)}))}}class hs{constructor(e){var t;this.enabled=!0,this.pickFunctionsMap=new Map,this.pickNodeFunctionsMap=new Map,this.pickFunctionsMapIndex=-1,this.pickNodeFunctionsMapIndex=-1,this.activeObjects=new Set,this.activeObject=null,this.prevActiveObjects=new Set,this.objCallbackMap=new Map,this.pickListener={move:!1,down:!1},this.pencil=e,this.domElement=((t=e.options.controls)==null?void 0:t.domElement)||e.options.container}addPickListener(e){const t=new Set(["move","enter","leave"]),s=new Set(["down","downOutside","click"]),i=r=>{var C;if(!this.enabled)return;r.preventDefault();const o=e==="move"?t:s,n=[];if(this.pickFunctionsMap.forEach(_=>{o.has(_.type)&&n.push(ee(z({},_),{objArr:_.objArr instanceof Function?_.objArr():_.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const _ of n)for(const u of _.objArr){if(!u.object3d||!u.visibleWithAncestors)continue;a.has(u)||a.set(u,new Map);const g=a.get(u);g.has(_.type)||g.set(_.type,[]),g.get(_.type).push(_.cb)}if(a.size===0)return;const c=[...a.keys()].map(_=>_.object3d),m=(C=this.pencil.pick(r,c,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const _=m[0];this.processIntersection(_,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Ge(i),{passive:!1})}processIntersection(e,t,s){const i=this.objCallbackMap,r=e.index||-1;let o=e.object;for(;o;){const n=this.pencil.lead.objMap.get(o);n&&n.visible&&(this.activeObject||(this.activeObject=n),i.has(n)&&this.activeObjects.add(n)),o=o.parent}s==="move"?this.handleLeaveEvents(t):s==="down"&&this.handleDownOutside(t),this.processObjectHierarchy(t,s,r)}processObjectHierarchy(e,t,s){const i=this.objCallbackMap;let r=!1;const o=()=>{r=!0};for(const n of this.activeObjects){if(r)break;const a=i.get(n);if(a)if(t==="move"){const c=a.get("enter");if(c&&!this.prevActiveObjects.has(n))for(const p of c)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("move");if(m)for(const p of m)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s})}else{const c=a.get("down");if(c)for(const p of c)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("click");if(m){const p=C=>{C.preventDefault();const _=5;if(!r&&Math.abs(C.clientX-e.clientX)<=_&&Math.abs(C.clientY-e.clientY)<=_)for(const u of m)u({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});this.domElement.removeEventListener("pointerup",p)};this.domElement.addEventListener("pointerup",p)}}}}handleLeaveEvents(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("leave");if(r&&this.prevActiveObjects.has(i)&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handleDownOutside(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("downOutside");if(r&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handlePick(e,t,s){let i=t;i==="mousemove"?i="move":i==="mouseenter"?i="enter":i==="mouseleave"&&(i="leave"),this.pickFunctionsMapIndex+=1;const r=this.pickFunctionsMapIndex;return this.pickFunctionsMap.set(r,{objArr:e,type:i,cb:s}),this.pickListener.move||Array.from(this.pickFunctionsMap.values()).some(n=>["move","enter","leave"].includes(n.type))&&(this.pickListener.move=!0,this.addPickListener("move")),this.pickListener.down||Array.from(this.pickFunctionsMap.values()).some(n=>["down","downOutside","click"].includes(n.type))&&(this.pickListener.down=!0,this.addPickListener("down")),r}removePick(e){this.pickFunctionsMap.delete(e)}handlePickNode(e,t,s){if(t==="downOutside")return console.warn("handlePickNode:err:不支持 downOutside"),-1;this.pickNodeFunctionsMapIndex+=1;const i=this.pickNodeFunctionsMapIndex,r=e instanceof Function?e():e,o=[];for(const n of r){const a=n;a.element.style.pointerEvents="auto";const c=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Ge(c),!1),o.push({arr:a,type:m,listener:c})}return this.pickNodeFunctionsMap.set(i,o),i}removePickNode(e){const t=this.pickNodeFunctionsMap.get(e);if(t){for(const s of t)s.arr.element.style.pointerEvents="none",s.arr.element.removeEventListener(s.type,s.listener,!1);this.pickNodeFunctionsMap.delete(e)}}dispose(){this.pickFunctionsMap.clear(),this.pickNodeFunctionsMap.clear(),this.activeObjects.clear(),this.prevActiveObjects.clear(),this.objCallbackMap.clear()}}class cs extends hs{constructor(e,t){super(e),this.objMap=new Map,this.objects=new Map,this.objectsPm=new Map,this.objectWrapChindIdMap=new Map,this.objectNamesToFactories=new Map,this.mList=t.mList,this.scene=this.createBaseObject(t.scene||new v.Scene,{key:"@Scene",name:"场景",mList:!1}),this.group=this.createBaseObject(new v.Group,{key:"@Group",name:"物体组",target:this.scene,mList:!1}),this.prefabGroup=this.createBaseObject(new v.Group,{key:"@PrefabGroup",name:"预制组",target:this.scene,mList:!1})}get objectsPromise(){return this.objectsPm.values()}createBaseObject(e,t={}){const s=z({mList:!0},t),i=new U.BaseObject;if(i.object3d=e,i.pencil=this.pencil,i.lead=this,i.mList=this.mList,s.key&&(i.key=s.key),!s.key&&s.target)if(s.target.key==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target),n=o!==void 0?o+1:0;this.objectWrapChindIdMap.set(s.target,n),this.setBaseObjectKey(i,{type:`$p:__c__${n}`,uId:"$p:",key:"$p:"},s.target)}return s.name&&(e.name=s.name),s.target&&!s.target.object3d.getObjectById(e.id)&&s.target.object3d.add(e),this.objects.set(i.key,i),this.objMap.set(i.object3d,i),s.mList&&(this.mList.proxyBaseObject(i),this.mList.addBaseObjectMap(i)),e.children&&e.children.forEach(r=>{this.createBaseObject(r,{target:i,mList:s.mList})}),this.pencil.event.emit("lead.draw",{baseObject:i}),i}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(String(t),s)}),this}getObject(e,t){e.includes("#")&&console.warn("getObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`;return this.objects.get(i)}getAllObject(e,t){e.includes("#")&&console.warn("getAllObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`,r=[];return this.objects.forEach((o,n)=>{(n.startsWith(s?i:`${i}#`)||n===i)&&r.push(o)}),r}draw(e,t,s){return te(this,null,function*(){var p,C,_;const i=this.objectNamesToFactories.get(String(e));if(!i)throw new Error(`Unrecognized factory: ${String(e)}`);t||(t={}),t.target===void 0&&(t.target=s);const r=t.target,o=(p=t.onTop)!=null?p:0,n=(C=t.prefab)!=null?C:!1,a=(_=t.create)!=null?_:!0,c=new i().create(t);let m;if(r===null)m=null;else if(typeof r=="string"){const u=this.objects.get(r);if(!u)throw new Error(`Object with key "${r}" not found`);m=u}else r!=null&&r.isBaseObject||r?m=r:n?m=this.prefabGroup:m=this.group;return a===!1?c.create=()=>{}:a!==!0&&(c.create=()=>{a(c)}),c.pencil=this.pencil,c.lead=this,c.mList=this.mList,c.isPrefab=n,c.objectType=`${e}`,c.objectOptions=t,this.setBaseObjectKey(c,{type:t.keyType||c.keyType,key:t.key,uId:t.uId},m),this.objectsPm.set(c,this.addBaseObject(c,m,o)),yield this.objectsPm.get(c),this.objectsPm.delete(c),c})}setBaseObjectKey(e,t,s){let i="",r=t.key,o=t.type||e.objectType,n=t.uId;return s&&(r!=null&&r.includes("$p:")&&(r=r.replace("$p:",s.keyName||"")),o!=null&&o.includes("$p:")&&(o=o.replace("$p:",s.keyType||"")),n!=null&&n.includes("$p:")&&(n=n.replace("$p:",s.keyUId||""))),i=`${o}`,r&&n?i+=`#${r}-${n}`:(r||n)&&(i+=`#${r||n}`),this.objects.has(i)?this.setBaseObjectKey(e,{type:t.type,key:t.key,uId:Qe.generateUUID()},s):(e.key=i,e.keyType=o,e.keyUId=n,e.keyName=r,this.objects.set(i,e),i)}updateBaseObjectKey(e,t){const s=e.key;this.objects.delete(s);const i=e.parent,r=this.setBaseObjectKey(e,t,i);return this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach(o=>{var n;if(o.key.includes("__c__")){const a=(n=/__c__(\d+)/.exec(o.key))==null?void 0:n[1];typeof a!="undefined"&&this.updateBaseObjectKey(o,{type:`$p:__c__${a}`,id:"$p:",name:"$p:"})}}),r}addBaseObject(e,t,s){return te(this,null,function*(){if(yield e.create(),e.object3d){const i=e.object3d;i.material&&Array.isArray(i.material)&&(i.material=i.material.slice()),this.mList.proxyBaseObject(e),this.mList.addBaseObjectMap(e),s&&e.setTop(s),t!==null&&t.object3d.add(e.object3d),this.objMap.set(e.object3d,e),i.children.forEach(r=>{this.objMap.get(r)||this.createBaseObject(r,{target:e})})}e.render(),this.pencil.event.emit("lead.draw",{baseObject:e})})}erase(...e){this.handleErase(!0,...e)}eraseWithoutMaterial(...e){this.handleErase(!1,...e)}handleErase(e,...t){[...t].forEach(s=>{const i=[];if(typeof s=="string"){const[r,o]=s.split("#");i.push(...this.getAllObject(r,{key:o}))}else i.push(s);i.forEach(r=>{r.disposeMaterialIfNotUsed=e,r.dispose()})}),this.pencil.event.emit("lead.erase")}update(e,t){this.objects.forEach(s=>{s.update(e,t)})}setSize(e,t){this.objects.forEach(s=>{s.resize(e,t)})}eraseAll(){this.group&&(this.objects.forEach(e=>{e.key.startsWith("Node")&&this.erase(e)}),this.erase(this.group))}dispose(){super.dispose(),this.scene.erase(),this.objects.forEach(e=>{e.erase()}),this.objects.clear(),this.objectsPm.clear(),this.objMap.clear(),this.objectWrapChindIdMap.clear(),this.objectNamesToFactories.clear()}}class ds extends J{get lead(){return this.controller}constructor(e){super(),this.options=e}addLead(e,t,s){const{pencil:i}=this.options,r=new cs(i,{scene:e,mList:t});return this.addController(r,s)}removePage(e){super.removePage(e,t=>{t.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}setSize(e,t){this.controllerMap.forEach((s,i)=>{i.setSize(e,t)})}}class ps extends v.Loader{constructor(e){super(e)}load(e,t,s,i){const r=new v.FileLoader(this.manager);r.setResponseType("blob"),r.setRequestHeader(this.requestHeader),r.setPath(this.path),r.setWithCredentials(this.withCredentials),r.load(e,o=>{const n=o,a=new DecompressionStream("gzip"),c=n.stream().pipeThrough(a);new Response(c).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Xe extends v.Loader{constructor(e){super(e),this.options={type:"image"}}setOptions(e){return this.options=e,this}load(e,t,s,i){let r,o;this.options.type==="image"?(o=document.createElement("img"),r=new v.Texture(o)):this.options.type==="video"?(o=document.createElement("video"),o.preload="auto",o.autoplay=!1,o.loop=!1,o.muted=!0,o.setAttribute("webkit-playsinline","webkit-playsinline"),o.setAttribute("playsinline",""),r=new v.VideoTexture(o)):r=new v.Texture;const n=new v.FileLoader(this.manager);return n.setResponseType("blob"),n.setRequestHeader(this.requestHeader),n.setPath(this.path),n.setWithCredentials(this.withCredentials),n.load(e,a=>{let c=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;c=c.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",_,!1),o.removeEventListener("error",u,!1)},_=()=>{C(),r.needsUpdate=!0,t&&t(r)},u=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",_,!1),o.addEventListener("error",u,!1);const g=window.URL.createObjectURL(c);o.src=g},s,i),r}}const ms={images:["png","jpg","jpeg","ico","webp","avif"],media:["mp4","webm","ogg"],gltf:["gltf","glb"],json:["json","geojson"],gzipJson:["json.gzip"],exr:["exr"],lottie:["lottie.json"]};class us{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new _e.EventEmitter,this.options=z({simpleTexture4deleted:!1,prefix:""},e),this.loadingManager=new v.LoadingManager(()=>{},(t,s,i)=>{this.emit("progress",s,i)},t=>{console.warn(`Failed to load ${t}`)})}emit(e,...t){this.event.emit(e,...t)}on(e,t){this.event.on(e,t)}getAsset(e){const t=this.getAssetType(e);if(!t)return;const s=this.assets.get(e);if(!s){if((t==="images"||t==="media"||t==="exr")&&this.options.simpleTexture4deleted&&this.delLoadArr.includes(e))return new v.Texture;console.warn(`Asset ${e} not found`)}return s}getAssetType(e){var s;const t=(s=e.split(".").pop())==null?void 0:s.toLowerCase();if(t){if(e.endsWith("lottie.json"))return"lottie";if(e.endsWith("json.gzip"))return"gzipJson"}else return;for(const[i,r]of Object.entries(ms))if(r.includes(t))return i}getLoader(e,t){if(e==="images")return this.textureLoader||(this.textureLoader=new Xe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Xe(this.loadingManager),this.videoTextureLoader.setOptions({type:"video"}),this.options.prefix&&this.videoTextureLoader.setPath(this.options.prefix)),this.videoTextureLoader;if(e==="gltf"&&(t!=null&&t.dracoPath))return this.dracoGltfLoader||(this.dracoGltfLoader=new Me.GLTFLoader(this.loadingManager),this.dracoLoader=new Pt.DRACOLoader,this.dracoLoader.setDecoderPath(t==null?void 0:t.dracoPath),this.dracoGltfLoader.setDRACOLoader(this.dracoLoader),this.options.prefix&&this.dracoGltfLoader.setPath(this.options.prefix)),this.dracoGltfLoader;if(e==="gltf")return this.gltfLoader||(this.gltfLoader=new Me.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new At.LottieLoader(this.loadingManager),this.options.prefix&&this.lottieLoader.setPath(this.options.prefix)),this.lottieLoader;if(e==="gzipJson")return this.gzipJsonLoader||(this.gzipJsonLoader=new ps(this.loadingManager),this.options.prefix&&this.gzipJsonLoader.setPath(this.options.prefix)),this.gzipJsonLoader;if(e==="json")return this.jsonLoader||(this.jsonLoader=new v.FileLoader(this.loadingManager),this.jsonLoader.setResponseType("json"),this.options.prefix&&this.jsonLoader.setPath(this.options.prefix)),this.jsonLoader;if(e==="exr")return this.exrLoader||(this.exrLoader=new St.EXRLoader(this.loadingManager),this.options.prefix&&this.exrLoader.setPath(this.options.prefix)),this.exrLoader}add(e,t){typeof e=="string"&&(e=[e]),e.forEach(s=>{const i=z({src:s},t);this.loadObj.push(i)})}getSrcByAsset(e,t=this.assets){let s;return t.forEach((i,r)=>{i===e&&(s=r)}),s}get textureAssets(){const e=new Map;return this.assets.forEach((t,s)=>{(t instanceof v.Texture||t instanceof v.DataTexture||t.isVideoTexture)&&e.set(s,t)}),e}loadAll(){return te(this,null,function*(){const e=this.loadObj.filter(t=>!this.delLoadArr.includes(t.src));return yield Promise.all(e.map(t=>this.load(t.src,t)))})}load(e,t){return te(this,null,function*(){var n,a;const s=(n=t==null?void 0:t.type)!=null?n:this.getAssetType(e);if(!s)return;const i=(t==null?void 0:t.cache)!==!1,r=Qe.makePromiseCreator();if(i){if(this.assets.has(e))return this.assets.get(e);this.assets.set(e,r.promise)}const o=this.getLoader(s,t);try{const c=yield o.loadAsync(e);if(this.assets.set(e,c),r.resolve(c),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;c.anisotropy=m}return c}catch(c){r.reject(`Failed to load ${e}`);return}})}getUnusedAssets(){const{scene:e}=this.options;if(!e)return[...this.delLoadArr];const t=new Set,s=this.textureAssets;e.traverse(r=>{const o=r;o.material&&(Array.isArray(o.material)?o.material:[o.material]).forEach(a=>{[a.map,a.emissiveMap,a.normalMap,a.roughnessMap,a.metalnessMap,a.aoMap].forEach(c=>{if(c){const m=this.getSrcByAsset(c,s);m&&t.add(m)}})})});const i=new Set(this.textureAssets.keys());return t.forEach(r=>{i.delete(r)}),[...i,...this.delLoadArr]}dispose(){var e;this.assets.clear(),(e=this.dracoLoader)==null||e.dispose(),this.event.removeAllListeners(),this.delLoadArr.length=0,this.loadObj.length=0}}const fs={prefix:""};class _s extends J{get loader(){return this.controller}constructor(e){super(),this.options=e}addLoader(e,t){const{loaderParams:s}=this.options,i=new us(ee(z({},s),{scene:e}));return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}class gs{constructor(e){this.materials=new Map,this.fixBaseObjects=new Map,this.materialBaseObjectMap=new Map,this.pencil=e}add(e,t){this.materials.set(e,t);const s={object3d:new Proxy({material:t},{set:(i,r,o)=>{var n;if(r==="material"&&!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)){const a=i.material;return i.material=o,this.materials.set(e,o),this.disposeMaterial(a),this.syncChangeMaterial(a,o),!0}return i[r]=o,!0}})};this.fixBaseObjects.set(e,s),this.pencil.event.emit("mList.add",{key:e,material:t,baseObject:s})}get(e){const t=this.materials.get(e);return t||console.warn(`Material with key "${e}" not found.`),t}getByName(e){for(const[,t]of this.materials.entries())if(t.name===e)return t;console.warn(`Material with name "${e}" not found.`)}getKey(e){for(const[t,s]of this.materials.entries())if(s===e)return t}getKeyByName(e){for(const[t,s]of this.materials.entries())if(s.name===e)return t;console.warn(`Material key with name "${e}" not found.`)}addMultiple(e,t){for(const[s,i]of Object.entries(t)){const r=`${e}#${s}`;i&&this.add(r,i)}}getMultiple(e){const t={},s=`${e}#`;let i=!1;for(const[r,o]of this.materials.entries())if(r.startsWith(s)){const n=r.substring(s.length);t[n]=o,i=!0}return i?t:null}copy(e,t,s={}){const i=this.get(e);if(!i)return console.warn(`Material with key "${e}" not found.`),null;const r=i.clone();return s.name&&(r.name=s.name),this.add(t,r),r}copyMultiple(e,t){const s={},i=`${e}#`;for(const[r,o]of this.materials.entries())if(r.startsWith(i)){const n=r.substring(i.length),a=o.clone();s[n]=a;const c=`${t}#${n}`;this.add(c,a)}return s}disposeMaterial(e){if(!e)return;const t=new U.ResourceTracker;t.track(Array.isArray(e)?e:[e]),t.dispose()}remove(e){const t=this.materials.get(e);t&&this.disposeMaterial(t),this.materials.delete(e),this.fixBaseObjects.delete(e),this.pencil.event.emit("mList.remove",{key:e,material:t})}removeByMaterial(e){[...this.materials.entries()].some(([t,s])=>s===e?(this.remove(t),!0):!1)}proxyBaseObject(e){const t=e.object3d;if(!t.material)return;this.applyColorSpaceToMaterials(t.material);const s=o=>{if("__isProxy"in o)return o;const n=new Proxy(o,{set:(a,c,m)=>{if(typeof c=="string"&&!Number.isNaN(Number(c))){const p=Number(c);if(p>=0&&p<a.length){const C=a[p];return this.rmBaseObjectMap(e,C),a[p]=m,m&&(this.applyColorSpaceToMaterials(m),this.addBaseObjectMap(e)),!0}}return a[c]=m,!0}});return Object.defineProperty(n,"__isProxy",{value:!0,enumerable:!1}),n};e.materialList&&(Object.values(e.materialList).forEach(o=>{o&&this.applyColorSpaceToMaterials(o)}),e.materialList=new Proxy(e.materialList,{set:(o,n,a)=>{if(typeof n=="string"){const c=o[n];return this.rmBaseObjectMap(e,c),o[n]=a,a&&(this.applyColorSpaceToMaterials(a),this.addBaseObjectMap(e)),!0}return o[n]=a,!0},get:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];if(Array.isArray(a)){const c=s(a);return c!==a&&(o[n]=c),c}return a}return o[n]},deleteProperty:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];this.rmBaseObjectMap(e,a)}return delete o[n],!0}}));const i=t.material,r="_enhancedMaterial";t[r]=i,Object.defineProperty(t,"material",{get:()=>{var n;const o=t[r];if(!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)&&Array.isArray(o)){const a=s(o);return a!==o&&(t[r]=a),a}return o},set:o=>{var n;if((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)t[r]=o;else{if(e.materialList&&Object.values(e.materialList).includes(o)){t[r]=o;return}this.rmBaseObjectMap(e),t[r]=o,o&&this.applyColorSpaceToMaterials(o),this.addBaseObjectMap(e)}e.handleMaterialChange(o)},enumerable:!0,configurable:!0})}applyColorSpaceToMaterials(e){xe.applyTextureColorSpace({material:e})}material2array(e){return Array.isArray(e)?e:[e]}addBaseObjectMap(e){const t=e.object3d;t.material&&([...Object.values(e.materialList),t.material].forEach(s=>{s&&this.material2array(s).forEach(r=>{const o=this.materialBaseObjectMap.get(r);o?o.add(e):this.materialBaseObjectMap.set(r,new Set([e]))})}),this.pencil.event.emit("mList.addBaseObjectMap"))}rmBaseObjectMap(e,t,s=!0){const i=t&&this.material2array(t);this.materialBaseObjectMap.forEach((r,o)=>{i&&!i.includes(o)||r.has(e)&&(r.delete(e),r.size===0&&s&&(this.materialBaseObjectMap.delete(o),this.disposeMaterial(o)))}),this.pencil.event.emit("mList.rmBaseObjectMap")}getBaseObjectMap(e){return this.materialBaseObjectMap.get(e)||new Set}syncChangeMaterial(e,t){const s=this.materialBaseObjectMap.get(e);s&&s.forEach(i=>{const r=i.object3d,o=r.material;if(Array.isArray(o)){const n=o.indexOf(e);n!==-1&&(o[n]=t)}else o===e&&(r.material=t);i.materialList&&Object.keys(i.materialList).forEach(n=>{var c;const a=(c=i.materialList)==null?void 0:c[n];if(Array.isArray(a)){const m=a.indexOf(e);m!==-1&&(a[m]=t)}else a===e&&i.materialList&&(i.materialList[n]=t)})})}dispose(){const e=new U.ResourceTracker;e.track([...this.materials.values()]),e.dispose(),this.materials.clear(),this.fixBaseObjects.clear(),this.materialBaseObjectMap.clear()}}class ys extends J{get mList(){return this.controller}constructor(e){super(),this.options=e}addMList(e,t){const{pencil:s}=this.options,i=new gs(s);return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}const vs={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:xe.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1};class Cs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i}=e,{alpha:r,devicePixelRatio:o,antialias:n,powerPreference:a,toneMappingExposure:c,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u}=i,g=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u});g.setSize(t,s),g.setPixelRatio(o),g.toneMappingExposure=c,g.outputColorSpace=m,this.renderer=g}setSize(e,t){this.renderer.setSize(e,t)}setPixelRatio(e){this.renderer.setPixelRatio(e)}render(e,t){this.renderer.render(e,t)}setViewport(e){var a,c;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(c=e.scissorTest)!=null?c:!1;this.renderer.setViewport(t,s,i,r),o&&(this.renderer.setScissor(t,s,i,r),this.renderer.setScissorTest(n))}dispose(){var e,t,s;this.setSize(0,0),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.forceContextLoss()}}const Os={background:null};class Es extends J{get scene(){return this.controller}constructor(e){super(),this.options=e}addScene(e,t){const s=new v.Scene;return e!=null&&e.background&&(s.background=e.background),this.addController(s,t)}removePage(e){super.removePage(e,t=>{const s=new U.ResourceTracker;s.track(t),s.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.visible=s})}}class Ts{constructor(e){this.event=new _e.EventEmitter;const{renderer:t,scene:s,camera:i}=e,r=new Mt.TransformControls(i,t.domElement);if(r.getHelper){const o=r.getHelper();if(s.add(o),+v.REVISION<170){const n=r._root;n.dispose=()=>{n.traverse(a=>{a.geometry&&a.geometry.dispose(),a.material&&a.material.dispose()})},r.dispose=()=>{r.disconnect(),n.dispose()}}}else r instanceof v.Object3D&&s.add(r);this.controls=r,this.addEvent()}get detach(){return this.controls.detach.bind(this.controls)}get attach(){return this.controls.attach.bind(this.controls)}addEvent(){let e=null,t=null,s=null;const i=this.controls;i.addEventListener("change",()=>{const r=i.object;r!==void 0&&this.event.emit("change",r)}),i.addEventListener("mouseDown",()=>{const r=i.object;e=r.position.clone(),t=r.rotation.clone(),s=r.scale.clone(),this.event.emit("mouseDown",r)}),i.addEventListener("mouseUp",()=>{const r=i.object;if(r!==void 0)switch(i.getMode()){case"translate":e.equals(r.position)||this.event.emit("translate",r,r.position,e);break;case"rotate":t.equals(r.rotation)||this.event.emit("rotate",r,r.rotation,t);break;case"scale":s.equals(r.scale)||this.event.emit("scale",r,r.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const ws={antialias:!0,devicePixelRatio:window.devicePixelRatio};class xs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i,renderer:r}=e,{devicePixelRatio:o,antialias:n}=i,a=new r({antialias:n});a.setSize(t,s),a.setPixelRatio(o),this.renderer=a}setSize(e,t){this.renderer.setSize(e,t)}render(e,t){this.renderer.render(e,t)}dispose(){var e,t;this.setSize(1,1),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}const ue=class ue{constructor(e){var r,o;this.raycaster=new v.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new v.Vector3,this._cameraTarget=new v.Vector3,this.event=new _e.EventEmitter,this.timer=new v.Timer,this.userData={},this.pageActiveIndex=0,this.pageCountIndex=0,this.userSetDprCache=1,this.viewPadding=[0,0,0,0],this._isDispose=!1,this.event.setMaxListeners(1/0),(o=(r=this.timer).connect)==null||o.call(r,document),this.options=vt(ue.options,e,{isMergeableObject:xe.isPlainObject}),this.userSetDprCache=this.options.renderer.devicePixelRatio;const{container:t,stats:s,transformControls:i}=this.options;if(this.init(),this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),i&&this.initTransformControls(),s){const n=new Ct({horizontal:!1});n.dom.style.position="absolute",n.init(this.renderer),t.appendChild(n.dom),this.stats=n}this.initResizeObserver(),this.tweenUpdateRaf()}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?2:this.renderer.capabilities.getMaxAnisotropy()}get controls(){return this.controlsController.cameraControls}get cameraPositon(){return this.controls.getPosition(this._cameraPositon,!1)}get cameraTarget(){return this.controls.getTarget(this._cameraTarget,!1)}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}get loader(){return this.loaderController.loader}get lead(){return this.leadController.lead}get mList(){return this.mListController.mList}tweenUpdateRaf(){ye.update(),this.TweenRaf=requestAnimationFrame(this.tweenUpdateRaf.bind(this))}use(e,...t){this.installPlugins.has(e.pluginName)?console.log("plugin already installed"):typeof e.install=="function"&&(e.install(this,...t),this.installPlugins.set(e.pluginName,e))}addPage({sceneOptions:e,cameraOptions:t}={}){const s=this.pageCountIndex+1,i=this.cameraController.addPerspectiveCamera(t,s),r=this.sceneController.addScene(e,s);r.add(i),this.controlsController.addCameraControls(i,s),this.loaderController.addLoader(r,s);const o=this.mListController.addMList(null,s);return this.leadController.addLead(r,o,s),this.pageCountIndex=s,s}removePage(e){this.cameraController.removePage(e),this.sceneController.removePage(e),this.controlsController.removePage(e),this.loaderController.removePage(e),this.mListController.removePage(e),this.leadController.removePage(e),this.pageCountIndex===e&&(this.pageCountIndex-=1),this.pageActiveIndex===e&&(this.render(),this.showPage(0))}showPage(e){var s;if(e===this.pageActiveIndex)return;const t=this.scene;this.sceneController.setPageActive(e),t&&((s=this.cssRendererController)==null||s.render(t,this.camera)),this.cameraController.setPageActive(e),this.controlsController.setPageActive(e),this.loaderController.setPageActive(e),this.mListController.setPageActive(e),this.leadController.setPageActive(e),this.pageActiveIndex=e}init(){var f;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:c}=this.getSize(),m=t?new xs({width:a,height:c,renderer:this.options.WebGPURenderer,rendererParams:ws}):new Cs({width:a,height:c,rendererParams:ee(z({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:c}),C=new Es({}),_=new ss({controlsParams:{domElement:(f=o==null?void 0:o.domElement)!=null?f:m.renderer.domElement}}),u=new _s({loaderParams:z({anisotropy:this.maxAnisotropy},n)}),g=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=_,this.loaderController=u,this.mListController=g,this.leadController=y;const l=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.showPage(l),s){const E=new ls({container:e,sceneController:C,cameraController:p});E.add(C.scene),this.helperController=E,i&&E.addViewHelper()}e.appendChild(m.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,o=new ts({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=o,e&&o.addBloomPass(z({},t)),s&&o.addSSAOPass(z({},i)),o.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const o=new as(e);t&&o.addRenderer("css2d",i),s&&o.addRenderer("css3d",r),this.cssRendererController=o}}initTransformControls(){const e=new Ts({camera:this.camera,renderer:this.renderer,scene:this.scene});e.event.on("mouseDown",()=>{var t;(t=this.controlsController)==null||t.disable()}),e.event.on("mouseUp",()=>{var t;(t=this.controlsController)==null||t.enable()}),this.transformController=e}getSize(){const{container:e}=this.options;return{width:e.offsetWidth,height:e.offsetHeight}}initResizeObserver(){const{container:e}=this.options;if(this.resizeObserver)return;const t=new ResizeObserver(s=>{for(const i of s){const r=i.contentRect;this.handeleResize(r.width,r.height),this.setDevicePixelRatio(this.userSetDprCache)}});t.observe(e),this.resizeObserver=t}handeleResize(e,t,s=!0){const{rendererController:i,cameraController:r,composerController:o,cssRendererController:n,leadController:a}=this,c=this.renderer.getSize(new v.Vector2);c.x===e&&c.y===t||(r.setSize(e,t),i.setSize(e,t),o==null||o.setSize(e,t),n==null||n.setSize(e,t),a.setSize(e,t),this.installPlugins.forEach(m=>{var p;(p=m.setSize)==null||p.call(m,e,t)}),this.viewPadding.some(m=>m!==0)&&this.setViewPadding(...this.viewPadding),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var n;this.userSetDprCache=e;const{width:t,height:s}=this.getSize();let i=Math.sqrt(this.maxBackufferArea/(t*s));i=(i*100|0)/100;const r=Math.min(e,i);r!==e&&console.warn("maxBackufferArea:",this.maxBackufferArea," the pixel ratio is set to",r);const o=this.renderer.getPixelRatio();r!==o&&(this.rendererController.setPixelRatio(r),(n=this.composerController)==null||n.setPixelRatio(r),this.viewPadding.some(a=>a!==0)&&this.setViewPadding(...this.viewPadding))}setViewPadding(e=0,t=0,s=0,i=0){const{width:r,height:o}=this.renderer.getSize(new v.Vector2),n={x:i,y:s,width:r-i-t,height:o-e-s};this.rendererController.setViewport(n),this.cameraController.setAspect(n.width/n.height),this.viewPadding=[e,t,s,i]}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:o}=r,n=new v.Vector2,a=o.getBoundingClientRect();if(n.x=(e.clientX-a.left)/(a.right-a.left)*2-1,n.y=-((e.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){i.setFromCamera(n,this.camera);const c=i.intersectObjects(t||this.scene.children,s);if(c.length)return{object:c[0].object,index:c[0].index,intersects:c}}}render(){var s,i,r,o,n,a;if(!this.camera||!this.scene)return;this.event.emit("beforeRender"),this.timer.update(),ye.update();const e=this.timer.getDelta(),t=this.timer.getElapsed();this.controlsController.update(e,t),this.leadController.update(e,t),this.installPlugins.forEach(c=>{var m;(m=c.update)==null||m.call(c,e,t)}),(s=this.helperController)==null||s.update(e,this.controlsController,this.cameraTarget),(i=this.composerController)!=null&&i.active?this.composerController.render():(r=this.rendererController)==null||r.render(this.scene,this.camera),(o=this.helperController)==null||o.renderViewHelper(this.renderer),(n=this.cssRendererController)==null||n.render(this.scene,this.camera),(a=this.stats)==null||a.update(),this.event.emit("render",{delta:e,elapsed:t})}start(){var e;window.cancelAnimationFrame(this.TweenRaf),(e=this.renderer)==null||e.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){var e;this.tweenUpdateRaf(),(e=this.renderer)==null||e.setAnimationLoop(null),this.event.emit("stop")}autoRotate(e){this.controlsController.autoRotateSpeed=e}showPipViewport(e){this.composerController.pipViewportState=e;let t=this.pipCameraControls;if(e){const{width:s,height:i}=this.getSize(),r=new DOMRect(e.x/s,(i-e.y-e.height)/i,e.width/s,e.height/i);if(t)t.enabled=!0,t.camera.position.copy(this.camera.position);else{const o=this.cameraController.cloneCamera(31);o.aspect=e.width/e.height,o.updateProjectionMatrix(),t=this.controlsController.addCameraControls(o,this.sceneController.activeIndex),t.addEventListener("update",()=>{this.controls.enabled=!1}),t.addEventListener("sleep",()=>{this.controls.enabled=!0}),this.pipCameraControls=t}t.interactiveArea=r}}dispose(){var e,t,s,i,r,o,n,a,c,m,p,C,_,u;this.handeleResize(1,1,!1),this.stop(),this.timer.dispose(),ye.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(g=>{var y;(y=g.dispose)==null||y.call(g)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(i=this.cssRendererController)==null||i.dispose(),(r=this.sceneController)==null||r.dispose(),(o=this.cameraController)==null||o.dispose(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(c=this.rendererController)==null||c.dispose(),(m=this.loaderController)==null||m.dispose(),(p=this.leadController)==null||p.dispose(),(C=this.mListController)==null||C.dispose(),this.cssRendererController=void 0,this.installPlugins.clear(),(_=this.stats)==null||_.dom.remove(),(u=this.renderer)==null||u.domElement.remove(),this._isDispose=!0}};ue.options={stats:U.IS_DEV,helper:U.IS_DEV,viewHelper:U.IS_DEV,controls:!0,transformControls:U.IS_DEV,renderer:vs,composer:es,scene:Os,camera:lt,bloom:!1,bloomParams:Jt,ssao:!1,loader:fs,ssaoParams:Qt,css2DRenderer:!1,css2DRendererParams:z({},$e),css3DRenderer:!1,css3DRendererParams:z({},$e)};let me=ue;const bs=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=bs;exports.default=me;
|
package/dist/index.module.js
CHANGED
|
@@ -29,9 +29,9 @@ var se = (c, e, t) => new Promise((s, i) => {
|
|
|
29
29
|
import * as Ce from "@tweenjs/tween.js";
|
|
30
30
|
import Dt from "deepmerge";
|
|
31
31
|
import Ut from "stats-gl";
|
|
32
|
-
import { Vector3 as H, PerspectiveCamera as
|
|
32
|
+
import { Vector3 as H, PerspectiveCamera as kt, Matrix4 as W, ShaderMaterial as zt, UniformsUtils as Ft, RawShaderMaterial as Nt, MeshBasicMaterial as It, PointsMaterial as nt, SpriteMaterial as at, Color as Ht, Layers as jt, Vector2 as B, WebGLRenderTarget as Bt, HalfFloatType as Vt, MathUtils as Yt, Vector4 as Zt, Quaternion as lt, Spherical as Wt, Box3 as ht, Sphere as Kt, Raycaster as ct, AxesHelper as De, CameraHelper as $t, PointLightHelper as Gt, DirectionalLightHelper as Xt, SpotLightHelper as qt, HemisphereLightHelper as Qt, Box3Helper as Ue, Scene as dt, Group as ke, Camera as Jt, Loader as pt, FileLoader as Se, Texture as fe, VideoTexture as es, LoadingManager as ts, DataTexture as ss, WebGLRenderer as is, REVISION as rs, Object3D as os, Timer as ns } from "three";
|
|
33
33
|
import { M as mt, B as Oe, a as as, R as Pe, I as he } from "./WebGPULineSegments2.module.js";
|
|
34
|
-
import { EffectComposer as
|
|
34
|
+
import { EffectComposer as ze } from "three/examples/jsm/postprocessing/EffectComposer";
|
|
35
35
|
import { RenderPass as ls } from "three/examples/jsm/postprocessing/RenderPass";
|
|
36
36
|
import { SSAOPass as hs } from "three/examples/jsm/postprocessing/SSAOPass";
|
|
37
37
|
import { UnrealBloomPass as cs } from "three/examples/jsm/postprocessing/UnrealBloomPass";
|
|
@@ -95,7 +95,7 @@ function j(c) {
|
|
|
95
95
|
return c.isOrthographicCamera;
|
|
96
96
|
}
|
|
97
97
|
const $ = Math.PI * 2, Ie = Math.PI / 2, ut = 1e-5, ie = Math.PI / 180;
|
|
98
|
-
function
|
|
98
|
+
function z(c, e, t) {
|
|
99
99
|
return Math.max(e, Math.min(t, c));
|
|
100
100
|
}
|
|
101
101
|
function A(c, e = ut) {
|
|
@@ -118,7 +118,7 @@ function ce(c, e, t, s, i = 1 / 0, r) {
|
|
|
118
118
|
const o = 2 / s, n = o * r, a = 1 / (1 + n + 0.48 * n * n + 0.235 * n * n * n);
|
|
119
119
|
let h = c - e;
|
|
120
120
|
const m = e, p = i * s;
|
|
121
|
-
h =
|
|
121
|
+
h = z(h, -p, p), e = c - h;
|
|
122
122
|
const v = (t.value + o * h) * r;
|
|
123
123
|
t.value = (t.value - o * v) * a;
|
|
124
124
|
let _ = e + (h + v) * a;
|
|
@@ -212,10 +212,10 @@ class ws {
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
const de = 1 / 8, xs = /Mac/.test(navigator.platform);
|
|
215
|
-
let T, Be, pe, we, D, x, L, G, ne, F, N, Z, Ve, Ye,
|
|
215
|
+
let T, Be, pe, we, D, x, L, G, ne, F, N, Z, Ve, Ye, k, ae, X, Ze, xe, We, be, Le, me;
|
|
216
216
|
class J extends ws {
|
|
217
217
|
static install(e) {
|
|
218
|
-
T = e.THREE, Be = Object.freeze(new T.Vector3(0, 0, 0)), pe = Object.freeze(new T.Vector3(0, 1, 0)), we = Object.freeze(new T.Vector3(0, 0, 1)), D = new T.Vector2(), x = new T.Vector3(), L = new T.Vector3(), G = new T.Vector3(), ne = new T.Vector3(), F = new T.Vector3(), N = new T.Vector3(), Z = new T.Vector3(), Ve = new T.Vector3(), Ye = new T.Vector3(),
|
|
218
|
+
T = e.THREE, Be = Object.freeze(new T.Vector3(0, 0, 0)), pe = Object.freeze(new T.Vector3(0, 1, 0)), we = Object.freeze(new T.Vector3(0, 0, 1)), D = new T.Vector2(), x = new T.Vector3(), L = new T.Vector3(), G = new T.Vector3(), ne = new T.Vector3(), F = new T.Vector3(), N = new T.Vector3(), Z = new T.Vector3(), Ve = new T.Vector3(), Ye = new T.Vector3(), k = new T.Spherical(), ae = new T.Spherical(), X = new T.Box3(), Ze = new T.Box3(), xe = new T.Sphere(), We = new T.Quaternion(), be = new T.Quaternion(), Le = new T.Matrix4(), me = new T.Raycaster();
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
221
|
* list all ACTIONs
|
|
@@ -268,7 +268,7 @@ class J extends ws {
|
|
|
268
268
|
const O = $ * this.azimuthRotateSpeed * l / this._elementRect.height, C = $ * this.polarRotateSpeed * f / this._elementRect.height;
|
|
269
269
|
this.rotate(O, C, !0);
|
|
270
270
|
}, this._dollyInternal = (l, f, O) => {
|
|
271
|
-
const C = Math.pow(0.95, -l * this.dollySpeed), w = this._sphericalEnd.radius, E = this._sphericalEnd.radius * C, b =
|
|
271
|
+
const C = Math.pow(0.95, -l * this.dollySpeed), w = this._sphericalEnd.radius, E = this._sphericalEnd.radius * C, b = z(
|
|
272
272
|
E,
|
|
273
273
|
this.minDistance,
|
|
274
274
|
this.maxDistance
|
|
@@ -646,11 +646,11 @@ class J extends ws {
|
|
|
646
646
|
* @category Properties
|
|
647
647
|
*/
|
|
648
648
|
set interactiveArea(e) {
|
|
649
|
-
this._interactiveArea.width =
|
|
649
|
+
this._interactiveArea.width = z(e.width, 0, 1), this._interactiveArea.height = z(e.height, 0, 1), this._interactiveArea.x = z(
|
|
650
650
|
e.x,
|
|
651
651
|
0,
|
|
652
652
|
1 - this._interactiveArea.width
|
|
653
|
-
), this._interactiveArea.y =
|
|
653
|
+
), this._interactiveArea.y = z(
|
|
654
654
|
e.y,
|
|
655
655
|
0,
|
|
656
656
|
1 - this._interactiveArea.height
|
|
@@ -788,11 +788,11 @@ class J extends ws {
|
|
|
788
788
|
*/
|
|
789
789
|
rotateTo(e, t, s = !1) {
|
|
790
790
|
this._isUserControllingRotate = !1;
|
|
791
|
-
const i =
|
|
791
|
+
const i = z(
|
|
792
792
|
e,
|
|
793
793
|
this.minAzimuthAngle,
|
|
794
794
|
this.maxAzimuthAngle
|
|
795
|
-
), r =
|
|
795
|
+
), r = z(t, this.minPolarAngle, this.maxPolarAngle);
|
|
796
796
|
this._sphericalEnd.theta = i, this._sphericalEnd.phi = r, this._sphericalEnd.makeSafe(), this._needsUpdate = !0, s || (this._spherical.theta = this._sphericalEnd.theta, this._spherical.phi = this._sphericalEnd.phi);
|
|
797
797
|
const o = !s || P(
|
|
798
798
|
this._spherical.theta,
|
|
@@ -822,7 +822,7 @@ class J extends ws {
|
|
|
822
822
|
*/
|
|
823
823
|
dollyTo(e, t = !1) {
|
|
824
824
|
return this._isUserControllingDolly = !1, this._lastDollyDirection = K.NONE, this._changedDolly = 0, this._dollyToNoClamp(
|
|
825
|
-
|
|
825
|
+
z(e, this.minDistance, this.maxDistance),
|
|
826
826
|
t
|
|
827
827
|
);
|
|
828
828
|
}
|
|
@@ -880,7 +880,7 @@ class J extends ws {
|
|
|
880
880
|
* @category Methods
|
|
881
881
|
*/
|
|
882
882
|
zoomTo(e, t = !1) {
|
|
883
|
-
this._isUserControllingZoom = !1, this._zoomEnd =
|
|
883
|
+
this._isUserControllingZoom = !1, this._zoomEnd = z(e, this.minZoom, this.maxZoom), this._needsUpdate = !0, t || (this._zoom = this._zoomEnd);
|
|
884
884
|
const s = !t || P(this._zoom, this._zoomEnd, this.restThreshold);
|
|
885
885
|
return this._changedZoom = 0, this._createOnRestPromise(s);
|
|
886
886
|
}
|
|
@@ -1087,18 +1087,18 @@ class J extends ws {
|
|
|
1087
1087
|
lerpLookAt(e, t, s, i, r, o, n, a, h, m, p, v, _, u = !1) {
|
|
1088
1088
|
this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = K.NONE, this._changedDolly = 0;
|
|
1089
1089
|
const g = x.set(i, r, o), y = L.set(e, t, s);
|
|
1090
|
-
|
|
1090
|
+
k.setFromVector3(
|
|
1091
1091
|
y.sub(g).applyQuaternion(this._yAxisUpSpace)
|
|
1092
1092
|
);
|
|
1093
1093
|
const l = G.set(m, p, v), f = L.set(n, a, h);
|
|
1094
1094
|
ae.setFromVector3(
|
|
1095
1095
|
f.sub(l).applyQuaternion(this._yAxisUpSpace)
|
|
1096
1096
|
), this._targetEnd.copy(g.lerp(l, _));
|
|
1097
|
-
const O = ae.theta -
|
|
1097
|
+
const O = ae.theta - k.theta, C = ae.phi - k.phi, w = ae.radius - k.radius;
|
|
1098
1098
|
this._sphericalEnd.set(
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1099
|
+
k.radius + w * _,
|
|
1100
|
+
k.phi + C * _,
|
|
1101
|
+
k.theta + O * _
|
|
1102
1102
|
), this.normalizeRotations(), this._needsUpdate = !0, u || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));
|
|
1103
1103
|
const E = !u || P(this._target.x, this._targetEnd.x, this.restThreshold) && P(this._target.y, this._targetEnd.y, this.restThreshold) && P(this._target.z, this._targetEnd.z, this.restThreshold) && P(
|
|
1104
1104
|
this._spherical.theta,
|
|
@@ -1154,7 +1154,7 @@ class J extends ws {
|
|
|
1154
1154
|
s,
|
|
1155
1155
|
i
|
|
1156
1156
|
);
|
|
1157
|
-
return this._sphericalEnd.phi =
|
|
1157
|
+
return this._sphericalEnd.phi = z(
|
|
1158
1158
|
this._sphericalEnd.phi,
|
|
1159
1159
|
this.minPolarAngle,
|
|
1160
1160
|
this.maxPolarAngle
|
|
@@ -1532,9 +1532,9 @@ class J extends ws {
|
|
|
1532
1532
|
*/
|
|
1533
1533
|
fromJSON(e, t = !1) {
|
|
1534
1534
|
const s = JSON.parse(e);
|
|
1535
|
-
this.enabled = s.enabled, this.minDistance = s.minDistance, this.maxDistance = oe(s.maxDistance), this.minZoom = s.minZoom, this.maxZoom = oe(s.maxZoom), this.minPolarAngle = s.minPolarAngle, this.maxPolarAngle = oe(s.maxPolarAngle), this.minAzimuthAngle = oe(s.minAzimuthAngle), this.maxAzimuthAngle = oe(s.maxAzimuthAngle), this.smoothTime = s.smoothTime, this.draggingSmoothTime = s.draggingSmoothTime, this.dollySpeed = s.dollySpeed, this.truckSpeed = s.truckSpeed, this.dollyToCursor = s.dollyToCursor, this._target0.fromArray(s.target0), this._position0.fromArray(s.position0), this._zoom0 = s.zoom0, this._focalOffset0.fromArray(s.focalOffset0), this.moveTo(s.target[0], s.target[1], s.target[2], t),
|
|
1535
|
+
this.enabled = s.enabled, this.minDistance = s.minDistance, this.maxDistance = oe(s.maxDistance), this.minZoom = s.minZoom, this.maxZoom = oe(s.maxZoom), this.minPolarAngle = s.minPolarAngle, this.maxPolarAngle = oe(s.maxPolarAngle), this.minAzimuthAngle = oe(s.minAzimuthAngle), this.maxAzimuthAngle = oe(s.maxAzimuthAngle), this.smoothTime = s.smoothTime, this.draggingSmoothTime = s.draggingSmoothTime, this.dollySpeed = s.dollySpeed, this.truckSpeed = s.truckSpeed, this.dollyToCursor = s.dollyToCursor, this._target0.fromArray(s.target0), this._position0.fromArray(s.position0), this._zoom0 = s.zoom0, this._focalOffset0.fromArray(s.focalOffset0), this.moveTo(s.target[0], s.target[1], s.target[2], t), k.setFromVector3(
|
|
1536
1536
|
x.fromArray(s.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)
|
|
1537
|
-
), this.rotateTo(
|
|
1537
|
+
), this.rotateTo(k.theta, k.phi, t), this.dollyTo(k.radius, t), this.zoomTo(s.zoom, t), this.setFocalOffset(
|
|
1538
1538
|
s.focalOffset[0],
|
|
1539
1539
|
s.focalOffset[1],
|
|
1540
1540
|
s.focalOffset[2],
|
|
@@ -2005,7 +2005,7 @@ class Ds extends ee {
|
|
|
2005
2005
|
return this.controller;
|
|
2006
2006
|
}
|
|
2007
2007
|
addPerspectiveCamera(e = Tt, t) {
|
|
2008
|
-
const { fov: s, far: i, near: r, up: o, aspect: n } = e, a = n != null ? n : this.width / this.height, h = new
|
|
2008
|
+
const { fov: s, far: i, near: r, up: o, aspect: n } = e, a = n != null ? n : this.width / this.height, h = new kt(s, a, r, i);
|
|
2009
2009
|
return h.up = o, this.addController(h, t);
|
|
2010
2010
|
}
|
|
2011
2011
|
setPageActive(e) {
|
|
@@ -2079,7 +2079,7 @@ class Ds extends ee {
|
|
|
2079
2079
|
}
|
|
2080
2080
|
const Us = (c) => {
|
|
2081
2081
|
const e = new ds(
|
|
2082
|
-
new
|
|
2082
|
+
new zt({
|
|
2083
2083
|
uniforms: {
|
|
2084
2084
|
baseTexture: { value: null },
|
|
2085
2085
|
bloomTexture: { value: c.renderTarget2.texture },
|
|
@@ -2113,7 +2113,7 @@ const Us = (c) => {
|
|
|
2113
2113
|
"baseTexture"
|
|
2114
2114
|
);
|
|
2115
2115
|
return e.needsSwap = !0, e;
|
|
2116
|
-
},
|
|
2116
|
+
}, ks = {
|
|
2117
2117
|
name: "OutputShader",
|
|
2118
2118
|
uniforms: {
|
|
2119
2119
|
tDiffuse: { value: null },
|
|
@@ -2207,10 +2207,10 @@ const Us = (c) => {
|
|
|
2207
2207
|
}`
|
|
2208
2208
|
)
|
|
2209
2209
|
};
|
|
2210
|
-
class
|
|
2210
|
+
class zs extends ps {
|
|
2211
2211
|
constructor() {
|
|
2212
2212
|
super();
|
|
2213
|
-
const e =
|
|
2213
|
+
const e = ks;
|
|
2214
2214
|
this.uniforms = Ft.clone(e.uniforms), this.material = new Nt({
|
|
2215
2215
|
name: e.name,
|
|
2216
2216
|
uniforms: this.uniforms,
|
|
@@ -2265,7 +2265,7 @@ class Ws {
|
|
|
2265
2265
|
samples: Math.min(n, a),
|
|
2266
2266
|
type: Vt
|
|
2267
2267
|
}
|
|
2268
|
-
), p = new
|
|
2268
|
+
), p = new ze(o, m), v = this.getSize();
|
|
2269
2269
|
p.setSize(v.width, v.height);
|
|
2270
2270
|
const _ = new ls(
|
|
2271
2271
|
s.scene,
|
|
@@ -2284,7 +2284,7 @@ class Ws {
|
|
|
2284
2284
|
this.renderPass.scene = e, this.ssaoPass && (this.ssaoPass.scene = e), this.scene = e;
|
|
2285
2285
|
}
|
|
2286
2286
|
addOutputPass() {
|
|
2287
|
-
const { premultiplieAlpha: e } = this.options.composerParams, t = new
|
|
2287
|
+
const { premultiplieAlpha: e } = this.options.composerParams, t = new zs();
|
|
2288
2288
|
this.outputPass = t, this.setPremultiplieAlpha(e), this.finalComposer.addPass(t);
|
|
2289
2289
|
}
|
|
2290
2290
|
setPremultiplieAlpha(e) {
|
|
@@ -2302,7 +2302,7 @@ class Ws {
|
|
|
2302
2302
|
s
|
|
2303
2303
|
);
|
|
2304
2304
|
this.bloomPass = n;
|
|
2305
|
-
const a = new
|
|
2305
|
+
const a = new ze(t);
|
|
2306
2306
|
a.renderToScreen = !1, a.addPass(this.renderPass), a.addPass(n), this.bloomComposer = a;
|
|
2307
2307
|
const h = Us(a);
|
|
2308
2308
|
h.uniforms.bloomAlphaType.value = o, this.bloomComposer = a, this.finalComposer.addPass(h), this.mixPass = h, this.bloomLayer.set(Oe);
|
|
@@ -2893,12 +2893,12 @@ class ti extends ei {
|
|
|
2893
2893
|
key: "@Scene",
|
|
2894
2894
|
name: "场景",
|
|
2895
2895
|
mList: !1
|
|
2896
|
-
}), this.group = this.createBaseObject(new
|
|
2896
|
+
}), this.group = this.createBaseObject(new ke(), {
|
|
2897
2897
|
key: "@Group",
|
|
2898
2898
|
name: "物体组",
|
|
2899
2899
|
target: this.scene,
|
|
2900
2900
|
mList: !1
|
|
2901
|
-
}), this.prefabGroup = this.createBaseObject(new
|
|
2901
|
+
}), this.prefabGroup = this.createBaseObject(new ke(), {
|
|
2902
2902
|
key: "@PrefabGroup",
|
|
2903
2903
|
name: "预制组",
|
|
2904
2904
|
target: this.scene,
|
|
@@ -2919,7 +2919,7 @@ class ti extends ei {
|
|
|
2919
2919
|
const o = this.objectWrapChindIdMap.get(s.target), n = o !== void 0 ? o + 1 : 0;
|
|
2920
2920
|
this.objectWrapChindIdMap.set(s.target, n), this.setBaseObjectKey(
|
|
2921
2921
|
i,
|
|
2922
|
-
{ type: `$p:__c__${n}`,
|
|
2922
|
+
{ type: `$p:__c__${n}`, uId: "$p:", key: "$p:" },
|
|
2923
2923
|
s.target
|
|
2924
2924
|
);
|
|
2925
2925
|
}
|
|
@@ -2975,8 +2975,9 @@ class ti extends ei {
|
|
|
2975
2975
|
}), h.pencil = this.pencil, h.lead = this, h.mList = this.mList, h.isPrefab = n, h.objectType = `${e}`, h.objectOptions = t, this.setBaseObjectKey(
|
|
2976
2976
|
h,
|
|
2977
2977
|
{
|
|
2978
|
-
type: h.keyType,
|
|
2979
|
-
|
|
2978
|
+
type: t.keyType || h.keyType,
|
|
2979
|
+
key: t.key,
|
|
2980
|
+
uId: t.uId
|
|
2980
2981
|
},
|
|
2981
2982
|
m
|
|
2982
2983
|
), this.objectsPm.set(
|
|
@@ -2986,13 +2987,13 @@ class ti extends ei {
|
|
|
2986
2987
|
});
|
|
2987
2988
|
}
|
|
2988
2989
|
setBaseObjectKey(e, t, s) {
|
|
2989
|
-
let i = "", r = t.
|
|
2990
|
+
let i = "", r = t.key, o = t.type || e.objectType, n = t.uId;
|
|
2990
2991
|
return s && (r != null && r.includes("$p:") && (r = r.replace("$p:", s.keyName || "")), o != null && o.includes("$p:") && (o = o.replace("$p:", s.keyType || "")), n != null && n.includes("$p:") && (n = n.replace("$p:", s.keyUId || ""))), i = `${o}`, r && n ? i += `#${r}-${n}` : (r || n) && (i += `#${r || n}`), this.objects.has(i) ? this.setBaseObjectKey(
|
|
2991
2992
|
e,
|
|
2992
2993
|
{
|
|
2993
|
-
name: t.name,
|
|
2994
2994
|
type: t.type,
|
|
2995
|
-
|
|
2995
|
+
key: t.key,
|
|
2996
|
+
uId: fs()
|
|
2996
2997
|
},
|
|
2997
2998
|
s
|
|
2998
2999
|
) : (e.key = i, e.keyType = o, e.keyUId = n, e.keyName = r, this.objects.set(i, e), i);
|