gl-draw 0.16.0-beta.3 → 0.16.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.module.js +151 -155
- package/package.json +1 -1
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 Me.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Me.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}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Ve=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,d=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(d.width,d.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Ae.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const u=new Ot.RenderPass(s.scene,i.camera);p.addPass(u),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=u,i.event.on("pageChange",f=>{this.changeCamera(f)}),s.event.on("pageChange",f=>{this.changeScene(f)})}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 Ae.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const d=Vt(a);d.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(d),this.mixPass=d,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 d;const o=r,n=r,a=r;if((d=o.material)!=null&&d.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=Gt:n.material=$t: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=Ve)}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===Ve){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(k({},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 Ye=new v.Vector3,is=new v.Quaternion,Ze=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 d=document.createElement("div");d.style.transformOrigin="0 0",d.style.pointerEvents="none",a.appendChild(d);const m=document.createElement("div");m.style.transformStyle="preserve-3d",d.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const _=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(d.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,d.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):d.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(`+_+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${x} )translateZ(`+_+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+_+"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",d.style.width=y+"px",d.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 u(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 f(y){y.isCSS3DObject&&(y.element.style.display="none");for(let l=0,_=y.children.length;l<_;l++)f(y.children[l])}function g(y,l,_,E){if(y.visible===!1){f(y);return}if(y.isCSS3DObject){const O=y.layers.test(_.layers)===!0,x=y.element;if(x.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,_);let T;y.isCSS3DSprite?(H.copy(_.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(rs.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(Ye,is,Ze),H.setPosition(Ye),H.scale(Ze),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=u(H)):T=u(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,_)}}for(let O=0,x=y.children.length;O<x;O++)g(y.children[O],l,_)}}}const $=new v.Vector3,We=new v.Matrix4,qe=new v.Matrix4,Ke=new v.Vector3,Ge=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(f,g){f.matrixWorldAutoUpdate===!0&&f.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),We.copy(g.matrixWorldInverse),qe.multiplyMatrices(g.projectionMatrix,We),m(f,f,g),u(f)},this.setSize=function(f,g){s=f,i=g,r=s/2,o=i/2,a.style.width=f+"px",a.style.height=g+"px"};function d(f){f.isCSS2DObject&&(f.element.style.display="none");for(let g=0,y=f.children.length;g<y;g++)d(f.children[g])}function m(f,g,y){if(f.visible===!1){d(f);return}if(f.isCSS2DObject){$.setFromMatrixPosition(f.matrixWorld),$.applyMatrix4(qe);const l=$.z>=-1&&$.z<=1&&f.layers.test(y.layers)===!0,_=f.element;_.style.display=l===!0?"":"none",l===!0&&(f.onBeforeRender(t,g,y),_.style.transform="translate("+-100*f.center.x+"%,"+-100*f.center.y+"%)translate("+($.x*r+r)+"px,"+(-$.y*o+o)+"px)",_.parentNode!==a&&a.appendChild(_),f.onAfterRender(t,g,y));const E={distanceToCameraSquared:p(y,f)};n.objects.set(f,E)}for(let l=0,_=f.children.length;l<_;l++)m(f.children[l],g,y)}function p(f,g){return Ke.setFromMatrixPosition(f.matrixWorld),Ge.setFromMatrixPosition(g.matrixWorld),Ke.distanceToSquared(Ge)}function C(f){const g=[];return f.traverseVisible(function(y){y.isCSS2DObject&&g.push(y)}),g}function u(f){const g=C(f).sort(function(l,_){if(l.renderOrder!==_.renderOrder)return _.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(_).distanceToCameraSquared;return E-O}),y=g.length;for(let l=0,_=g.length;l<_;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 wt.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:d}=a.userData;d&&n.box.setFromObject(d,!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 Xe(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(u=>{o.has(u.type)&&n.push(ee(k({},u),{objArr:u.objArr instanceof Function?u.objArr():u.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const u of n)for(const f of u.objArr){if(!f.object3d||!f.visibleWithAncestors)continue;a.has(f)||a.set(f,new Map);const g=a.get(f);g.has(u.type)||g.set(u.type,[]),g.get(u.type).push(u.cb)}if(a.size===0)return;const d=[...a.keys()].map(u=>u.object3d),m=(C=this.pencil.pick(r,d,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const u=m[0];this.processIntersection(u,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Xe(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 d=a.get("enter");if(d&&!this.prevActiveObjects.has(n))for(const p of d)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 d=a.get("down");if(d)for(const p of d)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 u=5;if(!r&&Math.abs(C.clientX-e.clientX)<=u&&Math.abs(C.clientY-e.clientY)<=u)for(const f of m)f({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 d=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Xe(d),!1),o.push({arr:a,type:m,listener:d})}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=k({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;else if(s.target){const r=s.target.key;if(r==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target)?this.objectWrapChindIdMap.get(s.target)+1:0;this.objectWrapChindIdMap.set(s.target,o),i.key=`${r}__c__${o}`}}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})}),i}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(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 r,o,n;const i=this.objectNamesToFactories.get(e);if(i){t||(t={}),t.target===void 0&&(t.target=s);const a=t.target,d=(r=t.onTop)!=null?r:0,m=(o=t.prefab)!=null?o:!1,p=(n=t.create)!=null?n:!0,C=new i().create(t);let u;return a===null?u=null:typeof a=="string"?u=this.objects.get(a):a!=null&&a.isBaseObject||a?u=a:m?u=this.prefabGroup:u=this.group,p===!1?C.create=()=>{}:p!==!0&&(C.create=()=>{p(C)}),C.pencil=this.pencil,C.lead=this,C.mList=this.mList,C.isPrefab=m,C.objectType=`${e}`,C.objectOptions=t,this.setBaseObjectKey(C,t.key?`$t:#${t.key}`:"$t:",u==null?void 0:u.key),this.objectsPm.set(C,this.addBaseObject(C,u,d)),yield this.objectsPm.get(C),this.objectsPm.delete(C),C}throw new Error(`Unrecognized:${e}`)})}setBaseObjectKey(e,t,s){const i=e.objectType;let r=t.replace("$t:",i);if(s){const[,o]=s.split("#");r=r.replace("$p:",o)}return this.objects.has(r)&&(r.includes("#")?r+=`-${xe.generateUUID()}`:r+=`#${xe.generateUUID()}`),e.key=r,this.objects.set(r,e),r}updateBaseObjectKey(e,t){var o;let s;for(const[n,a]of this.objects.entries())if(a===e){s=n;break}const i=(o=e.parent)==null?void 0:o.key,r=this.setBaseObjectKey(e,t,i);return s&&this.objects.delete(s),this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach((n,a)=>{n.key.includes("__c__")&&this.updateBaseObjectKey(n,`${r}__c__${a}`)}),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"),d=n.stream().pipeThrough(a);new Response(d).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Qe 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 d=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;d=d.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",u,!1),o.removeEventListener("error",f,!1)},u=()=>{C(),r.needsUpdate=!0,t&&t(r)},f=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",u,!1),o.addEventListener("error",f,!1);const g=window.URL.createObjectURL(d);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=k({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 Qe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Qe(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 Re.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 Re.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=k({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=xe.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 d=yield o.loadAsync(e);if(this.assets.set(e,d),r.resolve(d),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;d.anisotropy=m}return d}catch(d){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(d=>{if(d){const m=this.getSrcByAsset(d,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(k({},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 d=`${t}#${n}`;this.add(d,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,d,m)=>{if(typeof d=="string"&&!Number.isNaN(Number(d))){const p=Number(d);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[d]=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 d=o[n];return this.rmBaseObjectMap(e,d),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 d=s(a);return d!==a&&(o[n]=d),d}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){we.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 d;const a=(d=i.materialList)==null?void 0:d[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:we.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:d,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:u,depth:f}=i,g=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:u,depth:f});g.setSize(t,s),g.setPixelRatio(o),g.toneMappingExposure=d,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,d;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(d=e.scissorTest)!=null?d:!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 bs={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:we.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 _;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:d}=this.getSize(),m=t?new xs({width:a,height:d,renderer:this.options.WebGPURenderer,rendererParams:bs}):new Cs({width:a,height:d,rendererParams:ee(k({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:d}),C=new Es({}),u=new ss({controlsParams:{domElement:(_=o==null?void 0:o.domElement)!=null?_:m.renderer.domElement}}),f=new _s({loaderParams:k({anisotropy:this.maxAnisotropy},n)}),g=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=u,this.loaderController=f,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(k({},t)),s&&o.addSSAOPass(k({},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,d=this.renderer.getSize(new v.Vector2);d.x===e&&d.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 d=i.intersectObjects(t||this.scene.children,s);if(d.length)return{object:d[0].object,index:d[0].index,intersects:d}}}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(d=>{var m;(m=d.update)==null||m.call(d,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,d,m,p,C,u,f;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(),(d=this.rendererController)==null||d.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(),(u=this.stats)==null||u.dom.remove(),(f=this.renderer)==null||f.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:k({},$e),css3DRenderer:!1,css3DRendererParams:k({},$e)};let me=ue;const ws=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=ws;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 Me.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Me.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}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Ve=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,d=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(d.width,d.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Ae.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const u=new Ot.RenderPass(s.scene,i.camera);p.addPass(u),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=u,i.event.on("pageChange",f=>{this.changeCamera(f)}),s.event.on("pageChange",f=>{this.changeScene(f)})}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 Ae.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const d=Vt(a);d.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(d),this.mixPass=d,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 d;const o=r,n=r,a=r;if((d=o.material)!=null&&d.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=Gt:n.material=$t: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=Ve)}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===Ve){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(k({},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 Ye=new v.Vector3,is=new v.Quaternion,Ze=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 d=document.createElement("div");d.style.transformOrigin="0 0",d.style.pointerEvents="none",a.appendChild(d);const m=document.createElement("div");m.style.transformStyle="preserve-3d",d.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const _=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(d.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,d.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):d.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(`+_+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${x} )translateZ(`+_+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+_+"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",d.style.width=y+"px",d.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 u(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 f(y){y.isCSS3DObject&&(y.element.style.display="none");for(let l=0,_=y.children.length;l<_;l++)f(y.children[l])}function g(y,l,_,E){if(y.visible===!1){f(y);return}if(y.isCSS3DObject){const O=y.layers.test(_.layers)===!0,x=y.element;if(x.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,_);let T;y.isCSS3DSprite?(H.copy(_.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(rs.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(Ye,is,Ze),H.setPosition(Ye),H.scale(Ze),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=u(H)):T=u(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,_)}}for(let O=0,x=y.children.length;O<x;O++)g(y.children[O],l,_)}}}const $=new v.Vector3,We=new v.Matrix4,qe=new v.Matrix4,Ke=new v.Vector3,Ge=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(f,g){f.matrixWorldAutoUpdate===!0&&f.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),We.copy(g.matrixWorldInverse),qe.multiplyMatrices(g.projectionMatrix,We),m(f,f,g),u(f)},this.setSize=function(f,g){s=f,i=g,r=s/2,o=i/2,a.style.width=f+"px",a.style.height=g+"px"};function d(f){f.isCSS2DObject&&(f.element.style.display="none");for(let g=0,y=f.children.length;g<y;g++)d(f.children[g])}function m(f,g,y){if(f.visible===!1){d(f);return}if(f.isCSS2DObject){$.setFromMatrixPosition(f.matrixWorld),$.applyMatrix4(qe);const l=$.z>=-1&&$.z<=1&&f.layers.test(y.layers)===!0,_=f.element;_.style.display=l===!0?"":"none",l===!0&&(f.onBeforeRender(t,g,y),_.style.transform="translate("+-100*f.center.x+"%,"+-100*f.center.y+"%)translate("+($.x*r+r)+"px,"+(-$.y*o+o)+"px)",_.parentNode!==a&&a.appendChild(_),f.onAfterRender(t,g,y));const E={distanceToCameraSquared:p(y,f)};n.objects.set(f,E)}for(let l=0,_=f.children.length;l<_;l++)m(f.children[l],g,y)}function p(f,g){return Ke.setFromMatrixPosition(f.matrixWorld),Ge.setFromMatrixPosition(g.matrixWorld),Ke.distanceToSquared(Ge)}function C(f){const g=[];return f.traverseVisible(function(y){y.isCSS2DObject&&g.push(y)}),g}function u(f){const g=C(f).sort(function(l,_){if(l.renderOrder!==_.renderOrder)return _.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(_).distanceToCameraSquared;return E-O}),y=g.length;for(let l=0,_=g.length;l<_;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 wt.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:d}=a.userData;d&&n.box.setFromObject(d,!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 Xe(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(u=>{o.has(u.type)&&n.push(ee(k({},u),{objArr:u.objArr instanceof Function?u.objArr():u.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const u of n)for(const f of u.objArr){if(!f.object3d||!f.visibleWithAncestors)continue;a.has(f)||a.set(f,new Map);const g=a.get(f);g.has(u.type)||g.set(u.type,[]),g.get(u.type).push(u.cb)}if(a.size===0)return;const d=[...a.keys()].map(u=>u.object3d),m=(C=this.pencil.pick(r,d,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const u=m[0];this.processIntersection(u,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Xe(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 d=a.get("enter");if(d&&!this.prevActiveObjects.has(n))for(const p of d)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 d=a.get("down");if(d)for(const p of d)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 u=5;if(!r&&Math.abs(C.clientX-e.clientX)<=u&&Math.abs(C.clientY-e.clientY)<=u)for(const f of m)f({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 d=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Xe(d),!1),o.push({arr:a,type:m,listener:d})}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=k({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;else if(s.target){const r=s.target.key;if(r==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target)?this.objectWrapChindIdMap.get(s.target)+1:0;this.objectWrapChindIdMap.set(s.target,o),i.key=`${r}__c__${o}`}}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})}),i}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(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 r,o,n;const i=this.objectNamesToFactories.get(e);if(i){t||(t={}),t.target===void 0&&(t.target=s);const a=t.target,d=(r=t.onTop)!=null?r:0,m=(o=t.prefab)!=null?o:!1,p=(n=t.create)!=null?n:!0,C=new i().create(t);let u;return a===null?u=null:typeof a=="string"?u=this.objects.get(a):a!=null&&a.isBaseObject||a?u=a:m?u=this.prefabGroup:u=this.group,p===!1?C.create=()=>{}:p!==!0&&(C.create=()=>{p(C)}),C.pencil=this.pencil,C.lead=this,C.mList=this.mList,C.isPrefab=m,C.objectType=`${e}`,C.objectOptions=t,this.setBaseObjectKey(C,t.key?`$t:#${t.key}`:"$t:",u==null?void 0:u.key),this.objectsPm.set(C,this.addBaseObject(C,u,d)),yield this.objectsPm.get(C),this.objectsPm.delete(C),C}throw new Error(`Unrecognized:${e}`)})}setBaseObjectKey(e,t,s){const i=e.objectType;let r=t.replace("$t:",i);return s&&(r=r.replace("$p:",s)),this.objects.has(r)&&(r.includes("#")?r+=`-${xe.generateUUID()}`:r+=`#${xe.generateUUID()}`),e.key=r,this.objects.set(r,e),r}updateBaseObjectKey(e,t){var o;let s;for(const[n,a]of this.objects.entries())if(a===e){s=n;break}const i=(o=e.parent)==null?void 0:o.key,r=this.setBaseObjectKey(e,t,i);return s&&this.objects.delete(s),this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach((n,a)=>{n.key.includes("__c__")&&this.updateBaseObjectKey(n,`${r}__c__${a}`)}),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"),d=n.stream().pipeThrough(a);new Response(d).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Qe 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 d=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;d=d.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",u,!1),o.removeEventListener("error",f,!1)},u=()=>{C(),r.needsUpdate=!0,t&&t(r)},f=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",u,!1),o.addEventListener("error",f,!1);const g=window.URL.createObjectURL(d);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=k({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 Qe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Qe(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 Re.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 Re.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=k({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=xe.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 d=yield o.loadAsync(e);if(this.assets.set(e,d),r.resolve(d),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;d.anisotropy=m}return d}catch(d){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(d=>{if(d){const m=this.getSrcByAsset(d,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(k({},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 d=`${t}#${n}`;this.add(d,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,d,m)=>{if(typeof d=="string"&&!Number.isNaN(Number(d))){const p=Number(d);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[d]=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 d=o[n];return this.rmBaseObjectMap(e,d),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 d=s(a);return d!==a&&(o[n]=d),d}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){we.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 d;const a=(d=i.materialList)==null?void 0:d[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:we.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:d,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:u,depth:f}=i,g=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:u,depth:f});g.setSize(t,s),g.setPixelRatio(o),g.toneMappingExposure=d,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,d;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(d=e.scissorTest)!=null?d:!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 bs={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:we.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 _;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:d}=this.getSize(),m=t?new xs({width:a,height:d,renderer:this.options.WebGPURenderer,rendererParams:bs}):new Cs({width:a,height:d,rendererParams:ee(k({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:d}),C=new Es({}),u=new ss({controlsParams:{domElement:(_=o==null?void 0:o.domElement)!=null?_:m.renderer.domElement}}),f=new _s({loaderParams:k({anisotropy:this.maxAnisotropy},n)}),g=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=u,this.loaderController=f,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(k({},t)),s&&o.addSSAOPass(k({},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,d=this.renderer.getSize(new v.Vector2);d.x===e&&d.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 d=i.intersectObjects(t||this.scene.children,s);if(d.length)return{object:d[0].object,index:d[0].index,intersects:d}}}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(d=>{var m;(m=d.update)==null||m.call(d,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,d,m,p,C,u,f;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(),(d=this.rendererController)==null||d.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(),(u=this.stats)==null||u.dom.remove(),(f=this.renderer)==null||f.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:k({},$e),css3DRenderer:!1,css3DRendererParams:k({},$e)};let me=ue;const ws=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=ws;exports.default=me;
|
package/dist/index.module.js
CHANGED
|
@@ -29,7 +29,7 @@ var se = (h, e, t) => new Promise((s, i) => {
|
|
|
29
29
|
import * as Ce from "@tweenjs/tween.js";
|
|
30
30
|
import Ut from "deepmerge";
|
|
31
31
|
import zt from "stats-gl";
|
|
32
|
-
import { Vector3 as j, PerspectiveCamera as kt, Matrix4 as W, ShaderMaterial as Ft, UniformsUtils as Nt, RawShaderMaterial as It, MeshBasicMaterial as jt, PointsMaterial as at, SpriteMaterial as lt, Color as Ht, Layers as Bt, Vector2 as B, WebGLRenderTarget as Vt, HalfFloatType as Yt, MathUtils as Zt, Vector4 as Wt, Quaternion as ht, Spherical as Kt, Box3 as ct, Sphere as $t, Raycaster as dt, AxesHelper as De, CameraHelper as Gt, PointLightHelper as Xt, DirectionalLightHelper as qt, SpotLightHelper as Qt, HemisphereLightHelper as Jt, Box3Helper as Ue, Scene as
|
|
32
|
+
import { Vector3 as j, PerspectiveCamera as kt, Matrix4 as W, ShaderMaterial as Ft, UniformsUtils as Nt, RawShaderMaterial as It, MeshBasicMaterial as jt, PointsMaterial as at, SpriteMaterial as lt, Color as Ht, Layers as Bt, Vector2 as B, WebGLRenderTarget as Vt, HalfFloatType as Yt, MathUtils as Zt, Vector4 as Wt, Quaternion as ht, Spherical as Kt, Box3 as ct, Sphere as $t, Raycaster as dt, AxesHelper as De, CameraHelper as Gt, PointLightHelper as Xt, DirectionalLightHelper as qt, SpotLightHelper as Qt, HemisphereLightHelper as Jt, Box3Helper as Ue, Scene as mt, Group as ze, Camera as es, Loader as pt, FileLoader as Se, Texture as fe, VideoTexture as ts, LoadingManager as ss, DataTexture as is, WebGLRenderer as rs, REVISION as os, Object3D as ns, Timer as as } from "three";
|
|
33
33
|
import { M as ut, B as Oe, a as ls, R as Pe, I as he } from "./WebGPULineSegments2.module.js";
|
|
34
34
|
import { EffectComposer as ke } from "three/examples/jsm/postprocessing/EffectComposer";
|
|
35
35
|
import { RenderPass as hs } from "three/examples/jsm/postprocessing/RenderPass";
|
|
@@ -45,8 +45,8 @@ import "three/examples/jsm/utils/BufferGeometryUtils";
|
|
|
45
45
|
import "three-bvh-csg";
|
|
46
46
|
import "three/examples/jsm/lights/RectAreaLightUniformsLib";
|
|
47
47
|
import "three/examples/jsm/lines/LineSegments2";
|
|
48
|
-
import { ShaderPass as
|
|
49
|
-
import { OutputPass as
|
|
48
|
+
import { ShaderPass as ms } from "three/examples/jsm/postprocessing/ShaderPass";
|
|
49
|
+
import { OutputPass as ps } from "three/examples/jsm/postprocessing/OutputPass";
|
|
50
50
|
import { FullScreenQuad as Fe } from "three/examples/jsm/postprocessing/Pass";
|
|
51
51
|
import { RectAreaLightHelper as us } from "three/examples/jsm/helpers/RectAreaLightHelper";
|
|
52
52
|
import { ViewHelper as fs } from "three/examples/jsm/helpers/ViewHelper";
|
|
@@ -117,25 +117,25 @@ function ce(h, e, t, s, i = 1 / 0, r) {
|
|
|
117
117
|
s = Math.max(1e-4, s);
|
|
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 d = h - e;
|
|
120
|
-
const
|
|
121
|
-
d = k(d, -
|
|
120
|
+
const p = e, m = i * s;
|
|
121
|
+
d = k(d, -m, m), e = h - d;
|
|
122
122
|
const v = (t.value + o * d) * r;
|
|
123
123
|
t.value = (t.value - o * v) * a;
|
|
124
124
|
let u = e + (d + v) * a;
|
|
125
|
-
return
|
|
125
|
+
return p - h > 0 == u > p && (u = p, t.value = (u - p) / r), u;
|
|
126
126
|
}
|
|
127
127
|
function Be(h, e, t, s, i = 1 / 0, r, o) {
|
|
128
128
|
s = Math.max(1e-4, s);
|
|
129
129
|
const n = 2 / s, a = n * r, d = 1 / (1 + a + 0.48 * a * a + 0.235 * a * a * a);
|
|
130
|
-
let
|
|
131
|
-
const y =
|
|
130
|
+
let p = e.x, m = e.y, v = e.z, u = h.x - p, f = h.y - m, g = h.z - v;
|
|
131
|
+
const y = p, l = m, _ = v, O = i * s, C = O * O, w = u * u + f * f + g * g;
|
|
132
132
|
if (w > C) {
|
|
133
133
|
const ve = Math.sqrt(w);
|
|
134
134
|
u = u / ve * O, f = f / ve * O, g = g / ve * O;
|
|
135
135
|
}
|
|
136
|
-
|
|
136
|
+
p = h.x - u, m = h.y - f, v = h.z - g;
|
|
137
137
|
const E = (t.x + n * u) * r, x = (t.y + n * f) * r, R = (t.z + n * g) * r;
|
|
138
|
-
t.x = (t.x - n * E) * d, t.y = (t.y - n * x) * d, t.z = (t.z - n * R) * d, o.x =
|
|
138
|
+
t.x = (t.x - n * E) * d, t.y = (t.y - n * x) * d, t.z = (t.z - n * R) * d, o.x = p + (u + E) * d, o.y = m + (f + x) * d, o.z = v + (g + R) * d;
|
|
139
139
|
const V = y - h.x, le = l - h.y, bt = _ - h.z, xt = o.x - y, Lt = o.y - l, Pt = o.z - _;
|
|
140
140
|
return V * xt + le * Lt + bt * Pt > 0 && (o.x = y, o.y = l, o.z = _, t.x = (o.x - y) / r, t.y = (o.y - l) / r, t.z = (o.z - _) / r), o;
|
|
141
141
|
}
|
|
@@ -212,10 +212,10 @@ class ws {
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
const de = 1 / 8, bs = /Mac/.test(navigator.platform);
|
|
215
|
-
let T, Ve,
|
|
215
|
+
let T, Ve, me, we, D, b, L, G, ne, F, N, Z, Ye, Ze, z, ae, X, We, be, Ke, xe, Le, pe;
|
|
216
216
|
class J extends ws {
|
|
217
217
|
static install(e) {
|
|
218
|
-
T = e.THREE, Ve = Object.freeze(new T.Vector3(0, 0, 0)),
|
|
218
|
+
T = e.THREE, Ve = Object.freeze(new T.Vector3(0, 0, 0)), me = Object.freeze(new T.Vector3(0, 1, 0)), we = Object.freeze(new T.Vector3(0, 0, 1)), D = new T.Vector2(), b = 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(), Ye = new T.Vector3(), Ze = new T.Vector3(), z = new T.Spherical(), ae = new T.Spherical(), X = new T.Box3(), We = new T.Box3(), be = new T.Sphere(), Ke = new T.Quaternion(), xe = new T.Quaternion(), Le = new T.Matrix4(), pe = new T.Raycaster();
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
221
|
* list all ACTIONs
|
|
@@ -281,7 +281,7 @@ class J extends ws {
|
|
|
281
281
|
"camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."
|
|
282
282
|
), this._camera = e, this._yAxisUpSpace = new T.Quaternion().setFromUnitVectors(
|
|
283
283
|
this._camera.up,
|
|
284
|
-
|
|
284
|
+
me
|
|
285
285
|
), this._yAxisUpSpaceInverse = this._yAxisUpSpace.clone().invert(), this._state = c.NONE, this._target = new T.Vector3(), this._targetEnd = this._target.clone(), this._focalOffset = new T.Vector3(), this._focalOffsetEnd = this._focalOffset.clone(), this._spherical = new T.Spherical().setFromVector3(
|
|
286
286
|
b.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)
|
|
287
287
|
), this._sphericalEnd = this._spherical.clone(), this._lastDistance = this._spherical.radius, this._zoom = this._camera.zoom, this._zoomEnd = this._zoom, this._lastZoom = this._zoom, this._nearPlaneCorners = [
|
|
@@ -380,7 +380,7 @@ class J extends ws {
|
|
|
380
380
|
}
|
|
381
381
|
};
|
|
382
382
|
let d = -1;
|
|
383
|
-
const
|
|
383
|
+
const p = (l) => {
|
|
384
384
|
if (!this._domElement || !this._enabled || this.mouseButtons.wheel === c.NONE) return;
|
|
385
385
|
if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {
|
|
386
386
|
const E = this._domElement.getBoundingClientRect(), x = (l.clientX - E.left) / (E.right - E.left), R = (l.clientY - E.top) / (E.bottom - E.top);
|
|
@@ -419,7 +419,7 @@ class J extends ws {
|
|
|
419
419
|
}
|
|
420
420
|
}
|
|
421
421
|
this.dispatchEvent({ type: "control" });
|
|
422
|
-
},
|
|
422
|
+
}, m = (l) => {
|
|
423
423
|
if (!(!this._domElement || !this._enabled)) {
|
|
424
424
|
if (this.mouseButtons.right === J.ACTION.NONE) {
|
|
425
425
|
const _ = l instanceof PointerEvent ? l.pointerId : 0, O = this._findPointerById(_);
|
|
@@ -535,13 +535,13 @@ class J extends ws {
|
|
|
535
535
|
this.unlockPointer();
|
|
536
536
|
};
|
|
537
537
|
this._addAllEventListeners = (l) => {
|
|
538
|
-
this._domElement = l, this._domElement.style.touchAction = "none", this._domElement.style.userSelect = "none", this._domElement.style.webkitUserSelect = "none", this._domElement.addEventListener("pointerdown", o), this._domElement.addEventListener("pointercancel", a), this._domElement.addEventListener("wheel",
|
|
538
|
+
this._domElement = l, this._domElement.style.touchAction = "none", this._domElement.style.userSelect = "none", this._domElement.style.webkitUserSelect = "none", this._domElement.addEventListener("pointerdown", o), this._domElement.addEventListener("pointercancel", a), this._domElement.addEventListener("wheel", p, {
|
|
539
539
|
passive: !1
|
|
540
|
-
}), this._domElement.addEventListener("contextmenu",
|
|
540
|
+
}), this._domElement.addEventListener("contextmenu", m);
|
|
541
541
|
}, this._removeAllEventListeners = () => {
|
|
542
|
-
this._domElement && (this._domElement.style.touchAction = "", this._domElement.style.userSelect = "", this._domElement.style.webkitUserSelect = "", this._domElement.removeEventListener("pointerdown", o), this._domElement.removeEventListener("pointercancel", a), this._domElement.removeEventListener("wheel",
|
|
542
|
+
this._domElement && (this._domElement.style.touchAction = "", this._domElement.style.userSelect = "", this._domElement.style.webkitUserSelect = "", this._domElement.removeEventListener("pointerdown", o), this._domElement.removeEventListener("pointercancel", a), this._domElement.removeEventListener("wheel", p, {
|
|
543
543
|
passive: !1
|
|
544
|
-
}), this._domElement.removeEventListener("contextmenu",
|
|
544
|
+
}), this._domElement.removeEventListener("contextmenu", m), this._domElement.ownerDocument.removeEventListener(
|
|
545
545
|
"pointermove",
|
|
546
546
|
n,
|
|
547
547
|
{ passive: !1 }
|
|
@@ -985,10 +985,10 @@ class J extends ws {
|
|
|
985
985
|
d.isEmpty() && (console.warn(
|
|
986
986
|
"camera-controls: fitTo() cannot be used with an empty box. Aborting"
|
|
987
987
|
), Promise.resolve());
|
|
988
|
-
const
|
|
989
|
-
a.push(this.rotateTo(
|
|
988
|
+
const p = He(this._sphericalEnd.theta, je), m = He(this._sphericalEnd.phi, je);
|
|
989
|
+
a.push(this.rotateTo(p, m, t));
|
|
990
990
|
const v = b.setFromSpherical(this._sphericalEnd).normalize(), u = Ke.setFromUnitVectors(v, we), f = P(Math.abs(v.y), 1);
|
|
991
|
-
f && u.multiply(xe.setFromAxisAngle(
|
|
991
|
+
f && u.multiply(xe.setFromAxisAngle(me, p)), u.multiply(this._yAxisUpSpaceInverse);
|
|
992
992
|
const g = We.makeEmpty();
|
|
993
993
|
L.copy(d.min).applyQuaternion(u), g.expandByPoint(L), L.copy(d.min).setX(d.max.x).applyQuaternion(u), g.expandByPoint(L), L.copy(d.min).setY(d.max.y).applyQuaternion(u), g.expandByPoint(L), L.copy(d.max).setZ(d.min.z).applyQuaternion(u), g.expandByPoint(L), L.copy(d.min).setZ(d.max.z).applyQuaternion(u), g.expandByPoint(L), L.copy(d.max).setY(d.min.y).applyQuaternion(u), g.expandByPoint(L), L.copy(d.max).setX(d.min.x).applyQuaternion(u), g.expandByPoint(L), L.copy(d.max).applyQuaternion(u), g.expandByPoint(L), g.min.x -= i, g.min.y -= o, g.max.x += r, g.max.y += n, u.setFromUnitVectors(we, v), f && u.premultiply(xe.invert()), u.premultiply(this._yAxisUpSpace);
|
|
994
994
|
const y = g.getSize(b), l = g.getCenter(L).applyQuaternion(u);
|
|
@@ -1051,7 +1051,7 @@ class J extends ws {
|
|
|
1051
1051
|
this._targetEnd.copy(a), this._sphericalEnd.setFromVector3(
|
|
1052
1052
|
d.sub(a).applyQuaternion(this._yAxisUpSpace)
|
|
1053
1053
|
), this.normalizeRotations(), this._needsUpdate = !0, n || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));
|
|
1054
|
-
const
|
|
1054
|
+
const p = !n || 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(
|
|
1055
1055
|
this._spherical.theta,
|
|
1056
1056
|
this._sphericalEnd.theta,
|
|
1057
1057
|
this.restThreshold
|
|
@@ -1064,7 +1064,7 @@ class J extends ws {
|
|
|
1064
1064
|
this._sphericalEnd.radius,
|
|
1065
1065
|
this.restThreshold
|
|
1066
1066
|
);
|
|
1067
|
-
return this._createOnRestPromise(
|
|
1067
|
+
return this._createOnRestPromise(p);
|
|
1068
1068
|
}
|
|
1069
1069
|
/**
|
|
1070
1070
|
* Similar to setLookAt, but it interpolates between two states.
|
|
@@ -1084,13 +1084,13 @@ class J extends ws {
|
|
|
1084
1084
|
* @param enableTransition
|
|
1085
1085
|
* @category Methods
|
|
1086
1086
|
*/
|
|
1087
|
-
lerpLookAt(e, t, s, i, r, o, n, a, d,
|
|
1087
|
+
lerpLookAt(e, t, s, i, r, o, n, a, d, p, m, v, u, f = !1) {
|
|
1088
1088
|
this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = K.NONE, this._changedDolly = 0;
|
|
1089
1089
|
const g = b.set(i, r, o), y = L.set(e, t, s);
|
|
1090
1090
|
z.setFromVector3(
|
|
1091
1091
|
y.sub(g).applyQuaternion(this._yAxisUpSpace)
|
|
1092
1092
|
);
|
|
1093
|
-
const l = G.set(
|
|
1093
|
+
const l = G.set(p, m, v), _ = L.set(n, a, d);
|
|
1094
1094
|
ae.setFromVector3(
|
|
1095
1095
|
_.sub(l).applyQuaternion(this._yAxisUpSpace)
|
|
1096
1096
|
), this._targetEnd.copy(g.lerp(l, u));
|
|
@@ -1347,7 +1347,7 @@ class J extends ws {
|
|
|
1347
1347
|
* @category Methods
|
|
1348
1348
|
*/
|
|
1349
1349
|
updateCameraUp() {
|
|
1350
|
-
this._yAxisUpSpace.setFromUnitVectors(this._camera.up,
|
|
1350
|
+
this._yAxisUpSpace.setFromUnitVectors(this._camera.up, me), this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert();
|
|
1351
1351
|
}
|
|
1352
1352
|
/**
|
|
1353
1353
|
* Apply current camera-up direction to the camera.
|
|
@@ -1375,12 +1375,12 @@ class J extends ws {
|
|
|
1375
1375
|
if (A(t))
|
|
1376
1376
|
this._thetaVelocity.value = 0, this._spherical.theta = this._sphericalEnd.theta;
|
|
1377
1377
|
else {
|
|
1378
|
-
const
|
|
1378
|
+
const m = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;
|
|
1379
1379
|
this._spherical.theta = ce(
|
|
1380
1380
|
this._spherical.theta,
|
|
1381
1381
|
this._sphericalEnd.theta,
|
|
1382
1382
|
this._thetaVelocity,
|
|
1383
|
-
|
|
1383
|
+
m,
|
|
1384
1384
|
1 / 0,
|
|
1385
1385
|
e
|
|
1386
1386
|
), this._needsUpdate = !0;
|
|
@@ -1388,12 +1388,12 @@ class J extends ws {
|
|
|
1388
1388
|
if (A(s))
|
|
1389
1389
|
this._phiVelocity.value = 0, this._spherical.phi = this._sphericalEnd.phi;
|
|
1390
1390
|
else {
|
|
1391
|
-
const
|
|
1391
|
+
const m = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;
|
|
1392
1392
|
this._spherical.phi = ce(
|
|
1393
1393
|
this._spherical.phi,
|
|
1394
1394
|
this._sphericalEnd.phi,
|
|
1395
1395
|
this._phiVelocity,
|
|
1396
|
-
|
|
1396
|
+
m,
|
|
1397
1397
|
1 / 0,
|
|
1398
1398
|
e
|
|
1399
1399
|
), this._needsUpdate = !0;
|
|
@@ -1401,12 +1401,12 @@ class J extends ws {
|
|
|
1401
1401
|
if (A(i))
|
|
1402
1402
|
this._radiusVelocity.value = 0, this._spherical.radius = this._sphericalEnd.radius;
|
|
1403
1403
|
else {
|
|
1404
|
-
const
|
|
1404
|
+
const m = this._isUserControllingDolly ? this.draggingSmoothTime : this.smoothTime;
|
|
1405
1405
|
this._spherical.radius = ce(
|
|
1406
1406
|
this._spherical.radius,
|
|
1407
1407
|
this._sphericalEnd.radius,
|
|
1408
1408
|
this._radiusVelocity,
|
|
1409
|
-
|
|
1409
|
+
m,
|
|
1410
1410
|
this.maxSpeed,
|
|
1411
1411
|
e
|
|
1412
1412
|
), this._needsUpdate = !0;
|
|
@@ -1414,12 +1414,12 @@ class J extends ws {
|
|
|
1414
1414
|
if (A(r.x) && A(r.y) && A(r.z))
|
|
1415
1415
|
this._targetVelocity.set(0, 0, 0), this._target.copy(this._targetEnd);
|
|
1416
1416
|
else {
|
|
1417
|
-
const
|
|
1417
|
+
const m = this._isUserControllingTruck ? this.draggingSmoothTime : this.smoothTime;
|
|
1418
1418
|
Be(
|
|
1419
1419
|
this._target,
|
|
1420
1420
|
this._targetEnd,
|
|
1421
1421
|
this._targetVelocity,
|
|
1422
|
-
|
|
1422
|
+
m,
|
|
1423
1423
|
this.maxSpeed,
|
|
1424
1424
|
e,
|
|
1425
1425
|
this._target
|
|
@@ -1428,12 +1428,12 @@ class J extends ws {
|
|
|
1428
1428
|
if (A(o.x) && A(o.y) && A(o.z))
|
|
1429
1429
|
this._focalOffsetVelocity.set(0, 0, 0), this._focalOffset.copy(this._focalOffsetEnd);
|
|
1430
1430
|
else {
|
|
1431
|
-
const
|
|
1431
|
+
const m = this._isUserControllingOffset ? this.draggingSmoothTime : this.smoothTime;
|
|
1432
1432
|
Be(
|
|
1433
1433
|
this._focalOffset,
|
|
1434
1434
|
this._focalOffsetEnd,
|
|
1435
1435
|
this._focalOffsetVelocity,
|
|
1436
|
-
|
|
1436
|
+
m,
|
|
1437
1437
|
this.maxSpeed,
|
|
1438
1438
|
e,
|
|
1439
1439
|
this._focalOffset
|
|
@@ -1442,21 +1442,21 @@ class J extends ws {
|
|
|
1442
1442
|
if (A(n))
|
|
1443
1443
|
this._zoomVelocity.value = 0, this._zoom = this._zoomEnd;
|
|
1444
1444
|
else {
|
|
1445
|
-
const
|
|
1445
|
+
const m = this._isUserControllingZoom ? this.draggingSmoothTime : this.smoothTime;
|
|
1446
1446
|
this._zoom = ce(
|
|
1447
1447
|
this._zoom,
|
|
1448
1448
|
this._zoomEnd,
|
|
1449
1449
|
this._zoomVelocity,
|
|
1450
|
-
|
|
1450
|
+
m,
|
|
1451
1451
|
1 / 0,
|
|
1452
1452
|
e
|
|
1453
1453
|
);
|
|
1454
1454
|
}
|
|
1455
1455
|
if (this.dollyToCursor) {
|
|
1456
1456
|
if (Y(this._camera) && this._changedDolly !== 0) {
|
|
1457
|
-
const
|
|
1457
|
+
const m = this._spherical.radius - this._lastDistance, v = this._camera, u = this._getCameraDirection(ne), f = b.copy(u).cross(v.up).normalize();
|
|
1458
1458
|
f.lengthSq() === 0 && (f.x = 1);
|
|
1459
|
-
const g = L.crossVectors(f, u), y = this._sphericalEnd.radius * Math.tan(v.getEffectiveFOV() * ie * 0.5), _ = (this._sphericalEnd.radius -
|
|
1459
|
+
const g = L.crossVectors(f, u), y = this._sphericalEnd.radius * Math.tan(v.getEffectiveFOV() * ie * 0.5), _ = (this._sphericalEnd.radius - m - this._sphericalEnd.radius) / this._sphericalEnd.radius, O = G.copy(this._targetEnd).add(
|
|
1460
1460
|
f.multiplyScalar(
|
|
1461
1461
|
this._dollyControlCoord.x * y * v.aspect
|
|
1462
1462
|
)
|
|
@@ -1464,24 +1464,24 @@ class J extends ws {
|
|
|
1464
1464
|
g.multiplyScalar(this._dollyControlCoord.y * y)
|
|
1465
1465
|
), C = b.copy(this._targetEnd).lerp(O, _), w = this._lastDollyDirection === K.IN && this._spherical.radius <= this.minDistance, E = this._lastDollyDirection === K.OUT && this.maxDistance <= this._spherical.radius;
|
|
1466
1466
|
if (this.infinityDolly && (w || E)) {
|
|
1467
|
-
this._sphericalEnd.radius -=
|
|
1468
|
-
const R = L.copy(u).multiplyScalar(-
|
|
1467
|
+
this._sphericalEnd.radius -= m, this._spherical.radius -= m;
|
|
1468
|
+
const R = L.copy(u).multiplyScalar(-m);
|
|
1469
1469
|
C.add(R);
|
|
1470
1470
|
}
|
|
1471
1471
|
this._boundary.clampPoint(C, C);
|
|
1472
1472
|
const x = L.subVectors(C, this._targetEnd);
|
|
1473
|
-
this._targetEnd.copy(C), this._target.add(x), this._changedDolly -=
|
|
1473
|
+
this._targetEnd.copy(C), this._target.add(x), this._changedDolly -= m, A(this._changedDolly) && (this._changedDolly = 0);
|
|
1474
1474
|
} else if (H(this._camera) && this._changedZoom !== 0) {
|
|
1475
|
-
const
|
|
1475
|
+
const m = this._zoom - this._lastZoom, v = this._camera, u = b.set(
|
|
1476
1476
|
this._dollyControlCoord.x,
|
|
1477
1477
|
this._dollyControlCoord.y,
|
|
1478
1478
|
(v.near + v.far) / (v.near - v.far)
|
|
1479
|
-
).unproject(v), f = L.set(0, 0, -1).applyQuaternion(v.quaternion), g = G.copy(u).add(f.multiplyScalar(-u.dot(v.up))), l = -(this._zoom -
|
|
1479
|
+
).unproject(v), f = L.set(0, 0, -1).applyQuaternion(v.quaternion), g = G.copy(u).add(f.multiplyScalar(-u.dot(v.up))), l = -(this._zoom - m - this._zoom) / this._zoom, _ = this._getCameraDirection(ne), O = this._targetEnd.dot(_), C = b.copy(this._targetEnd).lerp(g, l), w = C.dot(_), E = _.multiplyScalar(
|
|
1480
1480
|
w - O
|
|
1481
1481
|
);
|
|
1482
1482
|
C.sub(E), this._boundary.clampPoint(C, C);
|
|
1483
1483
|
const x = L.subVectors(C, this._targetEnd);
|
|
1484
|
-
this._targetEnd.copy(C), this._target.add(x), this._changedZoom -=
|
|
1484
|
+
this._targetEnd.copy(C), this._target.add(x), this._changedZoom -= m, A(this._changedZoom) && (this._changedZoom = 0);
|
|
1485
1485
|
}
|
|
1486
1486
|
}
|
|
1487
1487
|
this._camera.zoom !== this._zoom && (this._camera.zoom = this._zoom, this._camera.updateProjectionMatrix(), this._updateNearPlaneCorners(), this._needsUpdate = !0), this._dragNeedsUpdate = !0;
|
|
@@ -1491,8 +1491,8 @@ class J extends ws {
|
|
|
1491
1491
|
b.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),
|
|
1492
1492
|
1
|
|
1493
1493
|
);
|
|
1494
|
-
const
|
|
1495
|
-
return
|
|
1494
|
+
const p = this._needsUpdate;
|
|
1495
|
+
return p && !this._updatedLastTime ? (this._hasRested = !1, this.dispatchEvent({ type: "wake" }), this.dispatchEvent({ type: "update" })) : p ? (this.dispatchEvent({ type: "update" }), A(t, this.restThreshold) && A(s, this.restThreshold) && A(i, this.restThreshold) && A(r.x, this.restThreshold) && A(r.y, this.restThreshold) && A(r.z, this.restThreshold) && A(o.x, this.restThreshold) && A(o.y, this.restThreshold) && A(o.z, this.restThreshold) && A(n, this.restThreshold) && !this._hasRested && (this._hasRested = !0, this.dispatchEvent({ type: "rest" }))) : !p && this._updatedLastTime && (this._hasRested || (this._hasRested = !0, this.dispatchEvent({ type: "rest" })), this.dispatchEvent({ type: "sleep" })), this._lastDistance = this._spherical.radius, this._lastZoom = this._zoom, this._updatedLastTime = p, this._needsUpdate = !1, p;
|
|
1496
1496
|
}
|
|
1497
1497
|
/**
|
|
1498
1498
|
* Get all state in JSON string
|
|
@@ -1622,8 +1622,8 @@ class J extends ws {
|
|
|
1622
1622
|
const r = L.copy(this._nearPlaneCorners[i]);
|
|
1623
1623
|
r.applyMatrix4(Le);
|
|
1624
1624
|
const o = G.addVectors(this._target, r);
|
|
1625
|
-
|
|
1626
|
-
const n =
|
|
1625
|
+
pe.set(o, s), pe.far = this._spherical.radius + 1;
|
|
1626
|
+
const n = pe.intersectObjects(this.colliderMeshes);
|
|
1627
1627
|
n.length !== 0 && n[0].distance < e && (e = n[0].distance);
|
|
1628
1628
|
}
|
|
1629
1629
|
return e;
|
|
@@ -1701,9 +1701,9 @@ class J extends ws {
|
|
|
1701
1701
|
if (!n.geometry) return;
|
|
1702
1702
|
const a = n.geometry.clone();
|
|
1703
1703
|
a.applyMatrix4(n.matrixWorld);
|
|
1704
|
-
const
|
|
1705
|
-
for (let
|
|
1706
|
-
b.fromBufferAttribute(
|
|
1704
|
+
const p = a.attributes.position;
|
|
1705
|
+
for (let m = 0, v = p.count; m < v; m++)
|
|
1706
|
+
b.fromBufferAttribute(p, m), r = Math.max(r, i.distanceToSquared(b));
|
|
1707
1707
|
}), s.radius = Math.sqrt(r), s;
|
|
1708
1708
|
}
|
|
1709
1709
|
}
|
|
@@ -1780,8 +1780,8 @@ S.prototype.emit = function(e) {
|
|
|
1780
1780
|
if (typeof a == "function")
|
|
1781
1781
|
$e(a, this, t);
|
|
1782
1782
|
else
|
|
1783
|
-
for (var d = a.length,
|
|
1784
|
-
$e(
|
|
1783
|
+
for (var d = a.length, p = Et(a, d), s = 0; s < d; ++s)
|
|
1784
|
+
$e(p[s], this, t);
|
|
1785
1785
|
return !0;
|
|
1786
1786
|
};
|
|
1787
1787
|
function yt(h, e, t, s) {
|
|
@@ -2078,7 +2078,7 @@ class Ds extends ee {
|
|
|
2078
2078
|
}
|
|
2079
2079
|
}
|
|
2080
2080
|
const Us = (h) => {
|
|
2081
|
-
const e = new
|
|
2081
|
+
const e = new ms(
|
|
2082
2082
|
new Ft({
|
|
2083
2083
|
uniforms: {
|
|
2084
2084
|
baseTexture: { value: null },
|
|
@@ -2207,7 +2207,7 @@ const Us = (h) => {
|
|
|
2207
2207
|
}`
|
|
2208
2208
|
)
|
|
2209
2209
|
};
|
|
2210
|
-
class ks extends
|
|
2210
|
+
class ks extends ps {
|
|
2211
2211
|
constructor() {
|
|
2212
2212
|
super();
|
|
2213
2213
|
const e = zs;
|
|
@@ -2258,20 +2258,20 @@ class Ws {
|
|
|
2258
2258
|
composerParams: r
|
|
2259
2259
|
} = e, { renderer: o } = t;
|
|
2260
2260
|
this.renderer = o;
|
|
2261
|
-
const { multisampling: n } = r, { maxSamples: a } = o.capabilities, d = o.getDrawingBufferSize(new B()),
|
|
2261
|
+
const { multisampling: n } = r, { maxSamples: a } = o.capabilities, d = o.getDrawingBufferSize(new B()), p = new Vt(
|
|
2262
2262
|
d.width,
|
|
2263
2263
|
d.height,
|
|
2264
2264
|
{
|
|
2265
2265
|
samples: Math.min(n, a),
|
|
2266
2266
|
type: Yt
|
|
2267
2267
|
}
|
|
2268
|
-
),
|
|
2269
|
-
|
|
2268
|
+
), m = new ke(o, p), v = this.getSize();
|
|
2269
|
+
m.setSize(v.width, v.height);
|
|
2270
2270
|
const u = new hs(
|
|
2271
2271
|
s.scene,
|
|
2272
2272
|
i.camera
|
|
2273
2273
|
);
|
|
2274
|
-
|
|
2274
|
+
m.addPass(u), this.scene = s.scene, this.camera = i.camera, this.finalComposer = m, this.renderPass = u, i.event.on("pageChange", (f) => {
|
|
2275
2275
|
this.changeCamera(f);
|
|
2276
2276
|
}), s.event.on("pageChange", (f) => {
|
|
2277
2277
|
this.changeScene(f);
|
|
@@ -2460,8 +2460,8 @@ class Xs {
|
|
|
2460
2460
|
a.style.overflow = "hidden", this.domElement = a;
|
|
2461
2461
|
const d = document.createElement("div");
|
|
2462
2462
|
d.style.transformOrigin = "0 0", d.style.pointerEvents = "none", a.appendChild(d);
|
|
2463
|
-
const
|
|
2464
|
-
|
|
2463
|
+
const p = document.createElement("div");
|
|
2464
|
+
p.style.transformStyle = "preserve-3d", d.appendChild(p), this.getSize = function() {
|
|
2465
2465
|
return {
|
|
2466
2466
|
width: s,
|
|
2467
2467
|
height: i
|
|
@@ -2471,21 +2471,21 @@ class Xs {
|
|
|
2471
2471
|
l.view && l.view.enabled ? (d.style.transform = `translate( ${-l.view.offsetX * (s / l.view.width)}px, ${-l.view.offsetY * (i / l.view.height)}px )`, d.style.transform += `scale( ${l.view.fullWidth / l.view.width}, ${l.view.fullHeight / l.view.height} )`) : d.style.transform = "", y.matrixWorldAutoUpdate === !0 && y.updateMatrixWorld(), l.parent === null && l.matrixWorldAutoUpdate === !0 && l.updateMatrixWorld();
|
|
2472
2472
|
let O, C;
|
|
2473
2473
|
l.isOrthographicCamera && (O = -(l.right + l.left) / 2, C = (l.top + l.bottom) / 2);
|
|
2474
|
-
const w = l.view && l.view.enabled ? l.view.height / l.view.fullHeight : 1, E = l.isOrthographicCamera ? `scale( ${w} )scale(` + _ + ")translate(" +
|
|
2475
|
-
n.camera.style !== R && (
|
|
2474
|
+
const w = l.view && l.view.enabled ? l.view.height / l.view.fullHeight : 1, E = l.isOrthographicCamera ? `scale( ${w} )scale(` + _ + ")translate(" + m(O) + "px," + m(C) + "px)" + v(l.matrixWorldInverse) : `scale( ${w} )translateZ(` + _ + "px)" + v(l.matrixWorldInverse), R = (l.isPerspectiveCamera ? "perspective(" + _ + "px) " : "") + E + "translate(" + r + "px," + o + "px)";
|
|
2475
|
+
n.camera.style !== R && (p.style.transform = R, n.camera.style = R), g(y, y, l);
|
|
2476
2476
|
}, this.setSize = function(y, l) {
|
|
2477
|
-
s = y, i = l, r = s / 2, o = i / 2, a.style.width = y + "px", a.style.height = l + "px", d.style.width = y + "px", d.style.height = l + "px",
|
|
2477
|
+
s = y, i = l, r = s / 2, o = i / 2, a.style.width = y + "px", a.style.height = l + "px", d.style.width = y + "px", d.style.height = l + "px", p.style.width = y + "px", p.style.height = l + "px";
|
|
2478
2478
|
};
|
|
2479
|
-
function
|
|
2479
|
+
function m(y) {
|
|
2480
2480
|
return Math.abs(y) < 1e-10 ? 0 : y;
|
|
2481
2481
|
}
|
|
2482
2482
|
function v(y) {
|
|
2483
2483
|
const l = y.elements;
|
|
2484
|
-
return "matrix3d(" +
|
|
2484
|
+
return "matrix3d(" + m(l[0]) + "," + m(-l[1]) + "," + m(l[2]) + "," + m(l[3]) + "," + m(l[4]) + "," + m(-l[5]) + "," + m(l[6]) + "," + m(l[7]) + "," + m(l[8]) + "," + m(-l[9]) + "," + m(l[10]) + "," + m(l[11]) + "," + m(l[12]) + "," + m(-l[13]) + "," + m(l[14]) + "," + m(l[15]) + ")";
|
|
2485
2485
|
}
|
|
2486
2486
|
function u(y) {
|
|
2487
2487
|
const l = y.elements;
|
|
2488
|
-
return "translate(-50%,-50%)" + ("matrix3d(" +
|
|
2488
|
+
return "translate(-50%,-50%)" + ("matrix3d(" + m(l[0]) + "," + m(l[1]) + "," + m(l[2]) + "," + m(l[3]) + "," + m(-l[4]) + "," + m(-l[5]) + "," + m(-l[6]) + "," + m(-l[7]) + "," + m(l[8]) + "," + m(l[9]) + "," + m(l[10]) + "," + m(l[11]) + "," + m(l[12]) + "," + m(l[13]) + "," + m(l[14]) + "," + m(l[15]) + ")");
|
|
2489
2489
|
}
|
|
2490
2490
|
function f(y) {
|
|
2491
2491
|
y.isCSS3DObject && (y.element.style.display = "none");
|
|
@@ -2509,7 +2509,7 @@ class Xs {
|
|
|
2509
2509
|
const R = { style: E };
|
|
2510
2510
|
n.objects.set(y, R);
|
|
2511
2511
|
}
|
|
2512
|
-
w.parentNode !==
|
|
2512
|
+
w.parentNode !== p && p.appendChild(w), y.onAfterRender(t, l, _);
|
|
2513
2513
|
}
|
|
2514
2514
|
}
|
|
2515
2515
|
for (let C = 0, w = y.children.length; C < w; C++)
|
|
@@ -2536,7 +2536,7 @@ class qs {
|
|
|
2536
2536
|
height: i
|
|
2537
2537
|
};
|
|
2538
2538
|
}, this.render = function(f, g) {
|
|
2539
|
-
f.matrixWorldAutoUpdate === !0 && f.updateMatrixWorld(), g.parent === null && g.matrixWorldAutoUpdate === !0 && g.updateMatrixWorld(), Je.copy(g.matrixWorldInverse), et.multiplyMatrices(g.projectionMatrix, Je),
|
|
2539
|
+
f.matrixWorldAutoUpdate === !0 && f.updateMatrixWorld(), g.parent === null && g.matrixWorldAutoUpdate === !0 && g.updateMatrixWorld(), Je.copy(g.matrixWorldInverse), et.multiplyMatrices(g.projectionMatrix, Je), p(f, f, g), u(f);
|
|
2540
2540
|
}, this.setSize = function(f, g) {
|
|
2541
2541
|
s = f, i = g, r = s / 2, o = i / 2, a.style.width = f + "px", a.style.height = g + "px";
|
|
2542
2542
|
};
|
|
@@ -2545,7 +2545,7 @@ class qs {
|
|
|
2545
2545
|
for (let g = 0, y = f.children.length; g < y; g++)
|
|
2546
2546
|
d(f.children[g]);
|
|
2547
2547
|
}
|
|
2548
|
-
function
|
|
2548
|
+
function p(f, g, y) {
|
|
2549
2549
|
if (f.visible === !1) {
|
|
2550
2550
|
d(f);
|
|
2551
2551
|
return;
|
|
@@ -2555,14 +2555,14 @@ class qs {
|
|
|
2555
2555
|
const l = q.z >= -1 && q.z <= 1 && f.layers.test(y.layers) === !0, _ = f.element;
|
|
2556
2556
|
_.style.display = l === !0 ? "" : "none", l === !0 && (f.onBeforeRender(t, g, y), _.style.transform = "translate(" + -100 * f.center.x + "%," + -100 * f.center.y + "%)translate(" + (q.x * r + r) + "px," + (-q.y * o + o) + "px)", _.parentNode !== a && a.appendChild(_), f.onAfterRender(t, g, y));
|
|
2557
2557
|
const O = {
|
|
2558
|
-
distanceToCameraSquared:
|
|
2558
|
+
distanceToCameraSquared: m(y, f)
|
|
2559
2559
|
};
|
|
2560
2560
|
n.objects.set(f, O);
|
|
2561
2561
|
}
|
|
2562
2562
|
for (let l = 0, _ = f.children.length; l < _; l++)
|
|
2563
|
-
|
|
2563
|
+
p(f.children[l], g, y);
|
|
2564
2564
|
}
|
|
2565
|
-
function
|
|
2565
|
+
function m(f, g) {
|
|
2566
2566
|
return tt.setFromMatrixPosition(f.matrixWorld), st.setFromMatrixPosition(g.matrixWorld), tt.distanceToSquared(st);
|
|
2567
2567
|
}
|
|
2568
2568
|
function v(f) {
|
|
@@ -2730,15 +2730,15 @@ class ei {
|
|
|
2730
2730
|
g.has(u.type) || g.set(u.type, []), g.get(u.type).push(u.cb);
|
|
2731
2731
|
}
|
|
2732
2732
|
if (a.size === 0) return;
|
|
2733
|
-
const d = [...a.keys()].map((u) => u.object3d),
|
|
2734
|
-
if (!
|
|
2733
|
+
const d = [...a.keys()].map((u) => u.object3d), p = (v = this.pencil.pick(r, d, !0)) == null ? void 0 : v.intersects;
|
|
2734
|
+
if (!p || p.length === 0)
|
|
2735
2735
|
e === "down" ? this.handleDownOutside(r) : e === "move" && this.handleLeaveEvents(r);
|
|
2736
2736
|
else {
|
|
2737
|
-
const u =
|
|
2737
|
+
const u = p[0];
|
|
2738
2738
|
this.processIntersection(u, r, e);
|
|
2739
2739
|
}
|
|
2740
|
-
const
|
|
2741
|
-
this.prevActiveObjects = this.activeObjects, this.activeObjects =
|
|
2740
|
+
const m = this.prevActiveObjects;
|
|
2741
|
+
this.prevActiveObjects = this.activeObjects, this.activeObjects = m, this.activeObjects.clear();
|
|
2742
2742
|
};
|
|
2743
2743
|
this.domElement.addEventListener(
|
|
2744
2744
|
`pointer${e}`,
|
|
@@ -2768,18 +2768,18 @@ class ei {
|
|
|
2768
2768
|
if (t === "move") {
|
|
2769
2769
|
const d = a.get("enter");
|
|
2770
2770
|
if (d && !this.prevActiveObjects.has(n))
|
|
2771
|
-
for (const
|
|
2772
|
-
|
|
2771
|
+
for (const m of d)
|
|
2772
|
+
m({
|
|
2773
2773
|
baseObject: n,
|
|
2774
2774
|
realBaseObject: this.activeObject,
|
|
2775
2775
|
mouseEvent: e,
|
|
2776
2776
|
sp: o,
|
|
2777
2777
|
intersectionIndex: s
|
|
2778
2778
|
});
|
|
2779
|
-
const
|
|
2780
|
-
if (
|
|
2781
|
-
for (const
|
|
2782
|
-
|
|
2779
|
+
const p = a.get("move");
|
|
2780
|
+
if (p)
|
|
2781
|
+
for (const m of p)
|
|
2782
|
+
m({
|
|
2783
2783
|
baseObject: n,
|
|
2784
2784
|
realBaseObject: this.activeObject,
|
|
2785
2785
|
mouseEvent: e,
|
|
@@ -2789,21 +2789,21 @@ class ei {
|
|
|
2789
2789
|
} else {
|
|
2790
2790
|
const d = a.get("down");
|
|
2791
2791
|
if (d)
|
|
2792
|
-
for (const
|
|
2793
|
-
|
|
2792
|
+
for (const m of d)
|
|
2793
|
+
m({
|
|
2794
2794
|
baseObject: n,
|
|
2795
2795
|
realBaseObject: this.activeObject,
|
|
2796
2796
|
mouseEvent: e,
|
|
2797
2797
|
sp: o,
|
|
2798
2798
|
intersectionIndex: s
|
|
2799
2799
|
});
|
|
2800
|
-
const
|
|
2801
|
-
if (
|
|
2802
|
-
const
|
|
2800
|
+
const p = a.get("click");
|
|
2801
|
+
if (p) {
|
|
2802
|
+
const m = (v) => {
|
|
2803
2803
|
v.preventDefault();
|
|
2804
2804
|
const u = 5;
|
|
2805
2805
|
if (!r && Math.abs(v.clientX - e.clientX) <= u && Math.abs(v.clientY - e.clientY) <= u)
|
|
2806
|
-
for (const f of
|
|
2806
|
+
for (const f of p)
|
|
2807
2807
|
f({
|
|
2808
2808
|
baseObject: n,
|
|
2809
2809
|
realBaseObject: this.activeObject,
|
|
@@ -2811,9 +2811,9 @@ class ei {
|
|
|
2811
2811
|
sp: o,
|
|
2812
2812
|
intersectionIndex: s
|
|
2813
2813
|
});
|
|
2814
|
-
this.domElement.removeEventListener("pointerup",
|
|
2814
|
+
this.domElement.removeEventListener("pointerup", m);
|
|
2815
2815
|
};
|
|
2816
|
-
this.domElement.addEventListener("pointerup",
|
|
2816
|
+
this.domElement.addEventListener("pointerup", m);
|
|
2817
2817
|
}
|
|
2818
2818
|
}
|
|
2819
2819
|
}
|
|
@@ -2861,13 +2861,13 @@ class ei {
|
|
|
2861
2861
|
for (const n of r) {
|
|
2862
2862
|
const a = n;
|
|
2863
2863
|
a.element.style.pointerEvents = "auto";
|
|
2864
|
-
const d = (
|
|
2865
|
-
this.enabled && (
|
|
2864
|
+
const d = (m) => {
|
|
2865
|
+
this.enabled && (m.preventDefault(), s({
|
|
2866
2866
|
baseObject: a,
|
|
2867
|
-
mouseEvent:
|
|
2867
|
+
mouseEvent: m
|
|
2868
2868
|
}));
|
|
2869
|
-
},
|
|
2870
|
-
a.element.addEventListener(
|
|
2869
|
+
}, p = `pointer${t}`;
|
|
2870
|
+
a.element.addEventListener(p, rt(d), !1), o.push({ arr: a, type: p, listener: d });
|
|
2871
2871
|
}
|
|
2872
2872
|
return this.pickNodeFunctionsMap.set(i, o), i;
|
|
2873
2873
|
}
|
|
@@ -2889,7 +2889,7 @@ class ei {
|
|
|
2889
2889
|
}
|
|
2890
2890
|
class ti extends ei {
|
|
2891
2891
|
constructor(e, t) {
|
|
2892
|
-
super(e), this.objMap = /* @__PURE__ */ new Map(), this.objects = /* @__PURE__ */ new Map(), this.objectsPm = /* @__PURE__ */ new Map(), this.objectWrapChindIdMap = /* @__PURE__ */ new Map(), this.objectNamesToFactories = /* @__PURE__ */ new Map(), this.mList = t.mList, this.scene = this.createBaseObject(t.scene || new
|
|
2892
|
+
super(e), this.objMap = /* @__PURE__ */ new Map(), this.objects = /* @__PURE__ */ new Map(), this.objectsPm = /* @__PURE__ */ new Map(), this.objectWrapChindIdMap = /* @__PURE__ */ new Map(), this.objectNamesToFactories = /* @__PURE__ */ new Map(), this.mList = t.mList, this.scene = this.createBaseObject(t.scene || new mt(), {
|
|
2893
2893
|
key: "@Scene",
|
|
2894
2894
|
name: "场景",
|
|
2895
2895
|
mList: !1
|
|
@@ -2958,12 +2958,12 @@ class ti extends ei {
|
|
|
2958
2958
|
const i = this.objectNamesToFactories.get(e);
|
|
2959
2959
|
if (i) {
|
|
2960
2960
|
t || (t = {}), t.target === void 0 && (t.target = s);
|
|
2961
|
-
const a = t.target, d = (r = t.onTop) != null ? r : 0,
|
|
2961
|
+
const a = t.target, d = (r = t.onTop) != null ? r : 0, p = (o = t.prefab) != null ? o : !1, m = (n = t.create) != null ? n : !0, v = new i().create(t);
|
|
2962
2962
|
let u;
|
|
2963
|
-
return a === null ? u = null : typeof a == "string" ? u = this.objects.get(a) : a != null && a.isBaseObject || a ? u = a :
|
|
2964
|
-
} :
|
|
2965
|
-
|
|
2966
|
-
}), v.pencil = this.pencil, v.lead = this, v.mList = this.mList, v.isPrefab =
|
|
2963
|
+
return a === null ? u = null : typeof a == "string" ? u = this.objects.get(a) : a != null && a.isBaseObject || a ? u = a : p ? u = this.prefabGroup : u = this.group, m === !1 ? v.create = () => {
|
|
2964
|
+
} : m !== !0 && (v.create = () => {
|
|
2965
|
+
m(v);
|
|
2966
|
+
}), v.pencil = this.pencil, v.lead = this, v.mList = this.mList, v.isPrefab = p, v.objectType = `${e}`, v.objectOptions = t, this.setBaseObjectKey(
|
|
2967
2967
|
v,
|
|
2968
2968
|
t.key ? `$t:#${t.key}` : "$t:",
|
|
2969
2969
|
u == null ? void 0 : u.key
|
|
@@ -2978,11 +2978,7 @@ class ti extends ei {
|
|
|
2978
2978
|
setBaseObjectKey(e, t, s) {
|
|
2979
2979
|
const i = e.objectType;
|
|
2980
2980
|
let r = t.replace("$t:", i);
|
|
2981
|
-
|
|
2982
|
-
const [, o] = s.split("#");
|
|
2983
|
-
r = r.replace("$p:", o);
|
|
2984
|
-
}
|
|
2985
|
-
return this.objects.has(r) && (r.includes("#") ? r += `-${Ne()}` : r += `#${Ne()}`), e.key = r, this.objects.set(r, e), r;
|
|
2981
|
+
return s && (r = r.replace("$p:", s)), this.objects.has(r) && (r.includes("#") ? r += `-${Ne()}` : r += `#${Ne()}`), e.key = r, this.objects.set(r, e), r;
|
|
2986
2982
|
}
|
|
2987
2983
|
updateBaseObjectKey(e, t) {
|
|
2988
2984
|
var o;
|
|
@@ -3080,7 +3076,7 @@ class si extends ee {
|
|
|
3080
3076
|
});
|
|
3081
3077
|
}
|
|
3082
3078
|
}
|
|
3083
|
-
class ii extends
|
|
3079
|
+
class ii extends pt {
|
|
3084
3080
|
constructor(e) {
|
|
3085
3081
|
super(e);
|
|
3086
3082
|
}
|
|
@@ -3090,10 +3086,10 @@ class ii extends mt {
|
|
|
3090
3086
|
e,
|
|
3091
3087
|
(o) => {
|
|
3092
3088
|
const n = o, a = new DecompressionStream("gzip"), d = n.stream().pipeThrough(a);
|
|
3093
|
-
new Response(d).json().then((
|
|
3094
|
-
t == null || t(
|
|
3095
|
-
}).catch((
|
|
3096
|
-
i == null || i(
|
|
3089
|
+
new Response(d).json().then((m) => {
|
|
3090
|
+
t == null || t(m);
|
|
3091
|
+
}).catch((m) => {
|
|
3092
|
+
i == null || i(m);
|
|
3097
3093
|
});
|
|
3098
3094
|
},
|
|
3099
3095
|
s,
|
|
@@ -3101,7 +3097,7 @@ class ii extends mt {
|
|
|
3101
3097
|
);
|
|
3102
3098
|
}
|
|
3103
3099
|
}
|
|
3104
|
-
class ot extends
|
|
3100
|
+
class ot extends pt {
|
|
3105
3101
|
constructor(e) {
|
|
3106
3102
|
super(e), this.options = { type: "image" };
|
|
3107
3103
|
}
|
|
@@ -3116,8 +3112,8 @@ class ot extends mt {
|
|
|
3116
3112
|
e,
|
|
3117
3113
|
(a) => {
|
|
3118
3114
|
let d = a;
|
|
3119
|
-
const
|
|
3120
|
-
d = d.slice(0, a.size,
|
|
3115
|
+
const p = e.split(".").pop(), m = this.options.type === "image" ? `image/${p || "png"}` : `video/${p || "mp4"}`;
|
|
3116
|
+
d = d.slice(0, a.size, m);
|
|
3121
3117
|
const v = () => {
|
|
3122
3118
|
o.removeEventListener("load", u, !1), o.removeEventListener("error", f, !1);
|
|
3123
3119
|
}, u = () => {
|
|
@@ -3252,8 +3248,8 @@ class oi {
|
|
|
3252
3248
|
try {
|
|
3253
3249
|
const d = yield o.loadAsync(e);
|
|
3254
3250
|
if (this.assets.set(e, d), r.resolve(d), s === "images" || s === "media" || s === "exr" || s === "lottie") {
|
|
3255
|
-
const
|
|
3256
|
-
d.anisotropy =
|
|
3251
|
+
const p = (a = t == null ? void 0 : t.anisotropy) != null ? a : this.options.anisotropy;
|
|
3252
|
+
d.anisotropy = p;
|
|
3257
3253
|
}
|
|
3258
3254
|
return d;
|
|
3259
3255
|
} catch (d) {
|
|
@@ -3279,8 +3275,8 @@ class oi {
|
|
|
3279
3275
|
a.aoMap
|
|
3280
3276
|
].forEach((d) => {
|
|
3281
3277
|
if (d) {
|
|
3282
|
-
const
|
|
3283
|
-
|
|
3278
|
+
const p = this.getSrcByAsset(d, s);
|
|
3279
|
+
p && t.add(p);
|
|
3284
3280
|
}
|
|
3285
3281
|
});
|
|
3286
3282
|
});
|
|
@@ -3422,15 +3418,15 @@ class li {
|
|
|
3422
3418
|
if ("__isProxy" in o)
|
|
3423
3419
|
return o;
|
|
3424
3420
|
const n = new Proxy(o, {
|
|
3425
|
-
set: (a, d,
|
|
3421
|
+
set: (a, d, p) => {
|
|
3426
3422
|
if (typeof d == "string" && !Number.isNaN(Number(d))) {
|
|
3427
|
-
const
|
|
3428
|
-
if (
|
|
3429
|
-
const v = a[
|
|
3430
|
-
return this.rmBaseObjectMap(e, v), a[
|
|
3423
|
+
const m = Number(d);
|
|
3424
|
+
if (m >= 0 && m < a.length) {
|
|
3425
|
+
const v = a[m];
|
|
3426
|
+
return this.rmBaseObjectMap(e, v), a[m] = p, p && (this.applyColorSpaceToMaterials(p), this.addBaseObjectMap(e)), !0;
|
|
3431
3427
|
}
|
|
3432
3428
|
}
|
|
3433
|
-
return a[d] =
|
|
3429
|
+
return a[d] = p, !0;
|
|
3434
3430
|
}
|
|
3435
3431
|
});
|
|
3436
3432
|
return Object.defineProperty(n, "__isProxy", {
|
|
@@ -3533,8 +3529,8 @@ class li {
|
|
|
3533
3529
|
var d;
|
|
3534
3530
|
const a = (d = i.materialList) == null ? void 0 : d[n];
|
|
3535
3531
|
if (Array.isArray(a)) {
|
|
3536
|
-
const
|
|
3537
|
-
|
|
3532
|
+
const p = a.indexOf(e);
|
|
3533
|
+
p !== -1 && (a[p] = t);
|
|
3538
3534
|
} else a === e && i.materialList && (i.materialList[n] = t);
|
|
3539
3535
|
});
|
|
3540
3536
|
});
|
|
@@ -3582,8 +3578,8 @@ class di {
|
|
|
3582
3578
|
antialias: n,
|
|
3583
3579
|
powerPreference: a,
|
|
3584
3580
|
toneMappingExposure: d,
|
|
3585
|
-
outputColorSpace:
|
|
3586
|
-
logarithmicDepthBuffer:
|
|
3581
|
+
outputColorSpace: p,
|
|
3582
|
+
logarithmicDepthBuffer: m,
|
|
3587
3583
|
preserveDrawingBuffer: v,
|
|
3588
3584
|
stencil: u,
|
|
3589
3585
|
depth: f
|
|
@@ -3591,12 +3587,12 @@ class di {
|
|
|
3591
3587
|
alpha: r,
|
|
3592
3588
|
antialias: n,
|
|
3593
3589
|
powerPreference: a,
|
|
3594
|
-
logarithmicDepthBuffer:
|
|
3590
|
+
logarithmicDepthBuffer: m,
|
|
3595
3591
|
preserveDrawingBuffer: v,
|
|
3596
3592
|
stencil: u,
|
|
3597
3593
|
depth: f
|
|
3598
3594
|
});
|
|
3599
|
-
g.setSize(t, s), g.setPixelRatio(o), g.toneMappingExposure = d, g.outputColorSpace =
|
|
3595
|
+
g.setSize(t, s), g.setPixelRatio(o), g.toneMappingExposure = d, g.outputColorSpace = p, this.renderer = g;
|
|
3600
3596
|
}
|
|
3601
3597
|
setSize(e, t) {
|
|
3602
3598
|
this.renderer.setSize(e, t);
|
|
@@ -3617,10 +3613,10 @@ class di {
|
|
|
3617
3613
|
this.setSize(0, 0), (e = this.renderer) == null || e.clear(), (t = this.renderer) == null || t.dispose(), (s = this.renderer) == null || s.forceContextLoss();
|
|
3618
3614
|
}
|
|
3619
3615
|
}
|
|
3620
|
-
const
|
|
3616
|
+
const mi = {
|
|
3621
3617
|
background: null
|
|
3622
3618
|
};
|
|
3623
|
-
class
|
|
3619
|
+
class pi extends ee {
|
|
3624
3620
|
get scene() {
|
|
3625
3621
|
return this.controller;
|
|
3626
3622
|
}
|
|
@@ -3628,7 +3624,7 @@ class mi extends ee {
|
|
|
3628
3624
|
super(), this.options = e;
|
|
3629
3625
|
}
|
|
3630
3626
|
addScene(e, t) {
|
|
3631
|
-
const s = new
|
|
3627
|
+
const s = new mt();
|
|
3632
3628
|
return e != null && e.background && (s.background = e.background), this.addController(s, t);
|
|
3633
3629
|
}
|
|
3634
3630
|
removePage(e) {
|
|
@@ -3824,7 +3820,7 @@ const _e = class _e {
|
|
|
3824
3820
|
renderer: r,
|
|
3825
3821
|
controls: o,
|
|
3826
3822
|
loader: n
|
|
3827
|
-
} = this.options, { width: a, height: d } = this.getSize(),
|
|
3823
|
+
} = this.options, { width: a, height: d } = this.getSize(), p = t ? new _i({
|
|
3828
3824
|
width: a,
|
|
3829
3825
|
height: d,
|
|
3830
3826
|
//@ts-ignore
|
|
@@ -3837,13 +3833,13 @@ const _e = class _e {
|
|
|
3837
3833
|
antialias: !1
|
|
3838
3834
|
})
|
|
3839
3835
|
});
|
|
3840
|
-
this.rendererController =
|
|
3841
|
-
const
|
|
3836
|
+
this.rendererController = p;
|
|
3837
|
+
const m = new Ds({
|
|
3842
3838
|
width: a,
|
|
3843
3839
|
height: d
|
|
3844
|
-
}), v = new
|
|
3840
|
+
}), v = new pi({}), u = new Ks({
|
|
3845
3841
|
controlsParams: {
|
|
3846
|
-
domElement: (_ = o == null ? void 0 : o.domElement) != null ? _ :
|
|
3842
|
+
domElement: (_ = o == null ? void 0 : o.domElement) != null ? _ : p.renderer.domElement
|
|
3847
3843
|
}
|
|
3848
3844
|
}), f = new ai({
|
|
3849
3845
|
loaderParams: U({
|
|
@@ -3854,7 +3850,7 @@ const _e = class _e {
|
|
|
3854
3850
|
}), y = new si({
|
|
3855
3851
|
pencil: this
|
|
3856
3852
|
});
|
|
3857
|
-
this.sceneController = v, this.cameraController =
|
|
3853
|
+
this.sceneController = v, this.cameraController = m, this.controlsController = u, this.loaderController = f, this.mListController = g, this.leadController = y;
|
|
3858
3854
|
const l = this.addPage({
|
|
3859
3855
|
sceneOptions: this.options.scene,
|
|
3860
3856
|
cameraOptions: this.options.camera
|
|
@@ -3863,11 +3859,11 @@ const _e = class _e {
|
|
|
3863
3859
|
const O = new Js({
|
|
3864
3860
|
container: e,
|
|
3865
3861
|
sceneController: v,
|
|
3866
|
-
cameraController:
|
|
3862
|
+
cameraController: m
|
|
3867
3863
|
});
|
|
3868
3864
|
O.add(v.scene), this.helperController = O, i && O.addViewHelper();
|
|
3869
3865
|
}
|
|
3870
|
-
e.appendChild(
|
|
3866
|
+
e.appendChild(p.renderer.domElement);
|
|
3871
3867
|
}
|
|
3872
3868
|
initComposer() {
|
|
3873
3869
|
const {
|
|
@@ -3937,10 +3933,10 @@ const _e = class _e {
|
|
|
3937
3933
|
cssRendererController: n,
|
|
3938
3934
|
leadController: a
|
|
3939
3935
|
} = this, d = this.renderer.getSize(new B());
|
|
3940
|
-
d.x === e && d.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((
|
|
3941
|
-
var
|
|
3942
|
-
(
|
|
3943
|
-
}), this.viewPadding.some((
|
|
3936
|
+
d.x === e && d.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((p) => {
|
|
3937
|
+
var m;
|
|
3938
|
+
(m = p.setSize) == null || m.call(p, e, t);
|
|
3939
|
+
}), this.viewPadding.some((p) => p !== 0) && this.setViewPadding(...this.viewPadding), this.render(), s && this.event.emit("resize", { width: e, height: t }));
|
|
3944
3940
|
}
|
|
3945
3941
|
setDevicePixelRatio(e) {
|
|
3946
3942
|
var n;
|
|
@@ -3990,8 +3986,8 @@ const _e = class _e {
|
|
|
3990
3986
|
this.event.emit("beforeRender"), this.timer.update(), Ce.update();
|
|
3991
3987
|
const e = this.timer.getDelta(), t = this.timer.getElapsed();
|
|
3992
3988
|
this.controlsController.update(e, t), this.leadController.update(e, t), this.installPlugins.forEach((d) => {
|
|
3993
|
-
var
|
|
3994
|
-
(
|
|
3989
|
+
var p;
|
|
3990
|
+
(p = d.update) == null || p.call(d, e, t);
|
|
3995
3991
|
}), (s = this.helperController) == null || s.update(
|
|
3996
3992
|
e,
|
|
3997
3993
|
this.controlsController,
|
|
@@ -4036,11 +4032,11 @@ const _e = class _e {
|
|
|
4036
4032
|
}
|
|
4037
4033
|
}
|
|
4038
4034
|
dispose() {
|
|
4039
|
-
var e, t, s, i, r, o, n, a, d,
|
|
4035
|
+
var e, t, s, i, r, o, n, a, d, p, m, v, u, f;
|
|
4040
4036
|
this.handeleResize(1, 1, !1), this.stop(), this.timer.dispose(), Ce.removeAll(), this.event.removeAllListeners(), (e = this.resizeObserver) == null || e.unobserve(this.options.container), this.installPlugins.forEach((g) => {
|
|
4041
4037
|
var y;
|
|
4042
4038
|
(y = g.dispose) == null || y.call(g);
|
|
4043
|
-
}), (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(), (d = this.rendererController) == null || d.dispose(), (
|
|
4039
|
+
}), (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(), (d = this.rendererController) == null || d.dispose(), (p = this.loaderController) == null || p.dispose(), (m = this.leadController) == null || m.dispose(), (v = this.mListController) == null || v.dispose(), this.cssRendererController = void 0, this.installPlugins.clear(), (u = this.stats) == null || u.dom.remove(), (f = this.renderer) == null || f.domElement.remove(), this._isDispose = !0;
|
|
4044
4040
|
}
|
|
4045
4041
|
};
|
|
4046
4042
|
_e.options = {
|
|
@@ -4051,7 +4047,7 @@ _e.options = {
|
|
|
4051
4047
|
transformControls: he,
|
|
4052
4048
|
renderer: ci,
|
|
4053
4049
|
composer: Zs,
|
|
4054
|
-
scene:
|
|
4050
|
+
scene: mi,
|
|
4055
4051
|
camera: wt,
|
|
4056
4052
|
bloom: !1,
|
|
4057
4053
|
bloomParams: Ys,
|