gl-draw 0.12.8 → 0.12.10

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 CHANGED
@@ -91,4 +91,4 @@
91
91
  gl_FragColor = ( base_color + vec4( 1.0 ) * bloom_color );
92
92
  }
93
93
  }
94
- `,defines:{}}),"baseTexture");return t.needsSwap=!0,t},yt=1,K=!1,Fe=new w.MeshBasicMaterial({color:"black"}),He=new w.PointsMaterial({color:"black",sizeAttenuation:!1}),Ie=new w.PointsMaterial({color:"black",sizeAttenuation:!0}),ke=new w.SpriteMaterial({color:"black",sizeAttenuation:!0}),Ve=new w.SpriteMaterial({color:"black",sizeAttenuation:!1}),Be=new Vt.MeshLineMaterial({color:"black",sizeAttenuation:0,lineWidth:0}),Ne={kernelRadius:8,minDistance:.005,maxDistance:.1},Ye={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},Ze={multisampling:4,premultiplieAlpha:!1};class qe{constructor(t){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new w.Layers,this.bloomMaterials={},this.bloomVisible={},this.pipViewportState=null,this.options=t;const{rendererController:e,sceneController:s,cameraController:r,composerParams:i}=t,{renderer:n}=e,{multisampling:a}=i,{maxSamples:l}=n.capabilities,m=n.getDrawingBufferSize(new w.Vector2),C=new w.WebGLRenderTarget(m.width,m.height,{samples:Math.min(a,l),type:w.HalfFloatType}),c=new ae.RenderPass(s.scene,r.camera),E=new vt.EffectComposer(n,C);E.addPass(c),this.renderer=n,this.scene=s.scene,this.camera=r.camera,this.finalComposer=E,this.renderPass=c;const g=this.getSize();this.setSize(g.width,g.height),r.event.on("cameraChange",u=>{this.changeCamera(u)}),s.event.on("sceneChange",u=>{this.changeScene(u)})}changeCamera(t){this.renderPass.camera=t,this.camera=t}changeScene(t){this.renderPass.scene=t,this.ssaoPass&&(this.ssaoPass.scene=t),this.scene=t}addOutputPass(){const{premultiplieAlpha:t}=this.options.composerParams,e=new ze;this.outputPass=e,this.setPremultiplieAlpha(t),this.finalComposer.addPass(e)}setPremultiplieAlpha(t){this.outputPass&&(this.outputPass.uniforms.premultiplieAlpha.value=t?1:0)}addSSAOPass(t){const{scene:e,camera:s,renderer:r}=this,i=r.getSize(new w.Vector2),n=i.width,a=i.height,l=new he.SSAOPass(e,s,n,a);l.kernelRadius=t.kernelRadius,l.minDistance=t.minDistance,l.maxDistance=t.maxDistance,this.ssaoPass=l,this.finalComposer.addPass(l)}addSSAOGui(t){if(!this.ssaoPass)return;new Et({ssao:{kernelRadius:{min:0,max:32,target:()=>this.ssaoPass},minDistance:{min:.001,max:.02,target:()=>this.ssaoPass},maxDistance:{min:.01,max:.3,target:()=>this.ssaoPass}}}).showGui(t)}addBloomPass(t){const{renderer:e}=this,{threshold:s,strength:r,radius:i,bloomAlphaType:n}=t,a=new me.UnrealBloomPass(new w.Vector2(window.innerWidth,window.innerHeight),r,i,s);this.bloomPass=a;const l=new vt.EffectComposer(e);l.renderToScreen=!1,l.addPass(this.renderPass),l.addPass(a),this.bloomComposer=l;const m=Me(l);m.uniforms.bloomAlphaType.value=n,this.bloomComposer=l,this.finalComposer.addPass(m),this.mixPass=m,this.bloomLayer.set(yt)}addBloomGui(t){if(!this.bloomComposer)return;new Et({bloom:{threshold:{min:0,max:1,step:.01,target:()=>this.bloomPass},radius:{min:0,max:1,step:.001,target:()=>this.bloomPass},strength:{min:0,max:10,step:.001,target:()=>this.bloomPass}}}).showGui(t)}toggleBloomSelection(t,e){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}const{object3d:s}=t;if(!s)return;let r=e;e===void 0&&(r=!this.bloomSelection.has(s)),r?(this.bloomSelection.add(s),s.traverse(i=>{i.layers.enable(yt)})):(this.bloomSelection.delete(s),s.traverse(i=>{i.layers.disable(yt)})),this.bloomSelection.size===0?this.bloomComposerActive=!1:this.bloomComposerActive=!0}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(t,e){var s;(s=this.bloomComposer)==null||s.setSize(t,e),this.finalComposer.setSize(t,e)}setPixelRatio(t){var e;(e=this.bloomComposer)==null||e.setPixelRatio(t),this.finalComposer.setPixelRatio(t)}darkenNonBloomed(){const t=[],e=[];this.scene.children.forEach(s=>{s.isTransformControls||s.isTransformControlsRoot||s.type==="RectAreaLightHelper"?t.push(s):e.push(s)}),t.forEach(s=>{this.bloomVisible[s.uuid]=s.visible,s.visible=!1}),e.forEach(s=>{s.traverse(r=>{const i=r,n=r,a=r;i.material&&this.bloomLayer.test(i.layers)===!1&&(this.bloomMaterials[i.uuid]=i.material,n.isSprite?n.material.sizeAttenuation?n.material=ke:n.material=Ve:i.material instanceof Vt.MeshLineMaterial?i.material=Be:a.isPoints?a.material.sizeAttenuation?a.material=Ie:a.material=He:i.material=Fe)})})}restoreNonBloomed(){this.scene.traverse(t=>{const e=t;this.bloomMaterials[e.uuid]?(e.material=this.bloomMaterials[e.uuid],delete this.bloomMaterials[e.uuid]):this.bloomVisible[e.uuid]!==void 0&&(e.visible=this.bloomVisible[e.uuid],delete this.bloomVisible[e.uuid])})}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed()):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new w.Vector2)}render(){if(!this.active)return;const{cameraController:t,rendererController:e}=this.options;if(t.cameraArr[1]){t.setCameraActive(0);const s=this.getSize();e.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1}),this.finalComposerRender(),this.pipViewportState&&(t.setCameraActive(1),e.setViewport(ot(V({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender())}else this.finalComposerRender();this.finalComposerRender()}dispose(){var t;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(t=this.bloomComposer)==null||t.dispose()}}const dt=class dt{constructor(t,e){this.raycaster=new w.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new w.Vector3,this._cameraTarget=new w.Vector3,this.event=new st.eventsExports.EventEmitter,this.clock=new w.Clock,this.userData={},this.dprCache=1,this.options=Jt(dt.options,t,{isMergeableObject:pe.isPlainObject}),this.dprCache=this.options.renderer.devicePixelRatio,this.event.setMaxListeners(1/0);const{container:s,stats:r,gui:i,resizeObserver:n}=this.options;if(i){const a=new ee;a.open(!1),this.gui=a}if(this.init(),r){const a=new te({horizontal:!1});a.init(this.renderer),a.dom.style.position="absolute",s.appendChild(a.dom),this.stats=a}this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),this.initControls(),n&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime(),e&&(Array.isArray(e)||(e=[e]),e.forEach(a=>{Array.isArray(a)||(a=[a]),this.use(a[0],a[1])}))}getPlugin(t){return this.installPlugins.get(t)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?0: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}use(t,...e){this.installPlugins.has(t.pluginName)?console.log("plugin already installed"):typeof t.install=="function"&&(t.install(this,...e),this.installPlugins.set(t.pluginName,t))}init(){const{container:t,isdev:e,WebGPUTHREE:s,helper:r,viewHelper:i,renderer:n,scene:a,camera:l,controls:m}=this.options,{width:C,height:c}=this.getSize(),E=new Te({isdev:e,width:C,height:c,cameraParams:l,cameraControls:m===!0}),g=new xe({cameraController:E,sceneParams:a}),u=s?new Ee({width:C,height:c,sceneController:g,cameraController:E,isdev:e,renderer:s.WebGPURenderer,rendererParams:ye}):new Ce({width:C,height:c,sceneController:g,cameraController:E,isdev:e,rendererParams:ot(V({},n),{antialias:!1})});if(r){const p=new we({container:t,sceneController:g,cameraController:E});p.add(g.scene),this.helperController=p,i&&p.addViewHelper()}this.sceneController=g,this.rendererController=u,this.cameraController=E,t.appendChild(u.renderer.domElement)}initComposer(){const{bloom:t,bloomParams:e,ssao:s,ssaoParams:r,composer:i}=this.options,n=new qe({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:i});this.composerController=n,t&&(n.addBloomPass(V({},e)),this.gui&&n.addBloomGui(this.gui)),s&&(n.addSSAOPass(V({},r)),this.gui&&n.addSSAOGui(this.gui)),n.addOutputPass()}initCSSRenderer(){const{container:t,css2DRenderer:e,css3DRenderer:s,css2DRendererParams:r,css3DRendererParams:i}=this.options;if(e||s){const n=new Re(t);e&&n.addRenderer("css2d",r),s&&n.addRenderer("css3d",i),this.cssRendererController=n}}initControls(){const{controls:t,controlsParams:e,transformControls:s}=this.options;if(t){const r=new Pe({camera:this.camera,controlsParams:{domElement:(e==null?void 0:e.domElement)||this.renderer.domElement},customControls:typeof t=="boolean"?void 0:t});this.controlsController=r}if(s){const r=new Se({camera:this.camera,renderer:this.renderer,scene:this.scene});r.event.on("mouseDown",()=>{var i;(i=this.controlsController)==null||i.disable()}),r.event.on("mouseUp",()=>{var i;(i=this.controlsController)==null||i.enable()}),this.transformController=r}}getSize(){const{container:t}=this.options;return{width:t.offsetWidth,height:t.offsetHeight}}initResizeObserver(){const{container:t}=this.options;if(this.resizeObserver)return;const e=new ResizeObserver(s=>{for(const r of s){const i=r.contentRect;this.handeleResize(i.width,i.height),this.checkBackufferArea()}});e.observe(t),this.resizeObserver=e}checkBackufferArea(t=this.maxBackufferArea){t>this.maxBackufferArea&&(t=this.maxBackufferArea);const e=this.dprCache,{width:s,height:r}=this.getSize();let i=Math.sqrt(t/(s*r));i=(i*100|0)/100;const n=Math.min(e,i);this.setDevicePixelRatio(n),this.dprCache=e,n!==e&&console.warn("maxBackufferArea:",t," the pixel ratio is set to",n)}handeleResize(t,e,s=!0){const{rendererController:r,cameraController:i,composerController:n,cssRendererController:a}=this,l=this.renderer.getSize(new w.Vector2);l.x===t&&l.y===e||(i==null||i.setSize(t,e),r==null||r.setSize(t,e),n==null||n.setSize(t,e),a==null||a.setSize(t,e),this.installPlugins.forEach(m=>{var C;(C=m.setSize)==null||C.call(m,t,e)}),this.render(),s&&this.event.emit("resize",{width:t,height:e}))}setDevicePixelRatio(t){var s;const e=this.renderer.getPixelRatio();t!==e&&(this.dprCache=t,this.rendererController.setPixelRatio(t),(s=this.composerController)==null||s.setPixelRatio(t))}pick(t,e,s=!0){const{raycaster:r,options:i}=this,{container:n}=i,a=new w.Vector2,l=n.getBoundingClientRect();if(a.x=(t.clientX-l.left)/(l.right-l.left)*2-1,a.y=-((t.clientY-l.top)/(l.bottom-l.top))*2+1,this.camera&&this.scene){r.setFromCamera(a,this.camera);const m=r.intersectObjects(e||this.scene.children,s);if(m.length)return{object:m[0].object,intersects:m}}}render(){var n,a,l,m,C,c,E;const{scene:t,camera:e,clock:s}=this,r=s.getDelta(),i=s.getElapsedTime();xt.update(),(n=this.controlsController)==null||n.update(r),this.installPlugins.forEach(g=>{var u;(u=g.update)==null||u.call(g,r,i)}),(a=this.helperController)==null||a.update(r,this.controlsController,this.cameraTarget),(l=this.composerController)!=null&&l.active?this.composerController.render():(m=this.rendererController)==null||m.render(),(C=this.helperController)==null||C.renderViewHelper(this.renderer),(c=this.cssRendererController)==null||c.render(t,e),(E=this.stats)==null||E.update(),this.event.emit("render",{delta:r,elapsed:i})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(t){this.controlsController.autoRotateSpeed=t}showPipViewport(t){this.composerController.pipViewportState=t;let e=this.controlsController.cameraControlsArr[1];if(t){const{width:s,height:r}=this.getSize(),i=new DOMRect(t.x/s,(r-t.y-t.height)/r,t.width/s,t.height/r);if(e)e.enabled=!0,this.cameraController.cameraArr[1].position.copy(this.cameraController.camera.position);else{const n=this.cameraController.cloneCamera();e=this.controlsController.addCameraControls(n,i)}e.interactiveArea=i}else e&&(e.enabled=!1)}dispose(){var t,e,s,r,i,n,a,l,m,C,c;this.stop(),xt.removeAll(),this.event.removeAllListeners(),(t=this.resizeObserver)==null||t.unobserve(this.options.container),this.installPlugins.forEach(E=>{var g;(g=E.dispose)==null||g.call(E)}),(e=this.controlsController)==null||e.dispose(),(s=this.transformController)==null||s.dispose(),(r=this.cssRendererController)==null||r.dispose(),(i=this.sceneController)==null||i.dispose(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(l=this.rendererController)==null||l.dispose(),this.cssRendererController=void 0,(m=this.gui)==null||m.destroy(),this.installPlugins.clear(),(C=this.stats)==null||C.dom.remove(),(c=this.renderer)==null||c.domElement.remove()}};dt.options={isdev:K,stats:K,gui:K,helper:K,viewHelper:K,controls:!0,transformControls:K,resizeObserver:!0,renderer:ge,composer:Ze,scene:ve,camera:Oe,bloom:!1,bloomParams:Ye,ssao:!1,ssaoParams:Ne,css2DRenderer:!1,css2DRendererParams:V({},kt),css3DRenderer:!1,css3DRendererParams:V({},kt)};let ct=dt;const We=j.ACTION;exports.BaseObject=_e.BaseObject;exports.GUIObject=Et;exports.Pencil=ct;exports.cameraControlsAction=We;exports.default=ct;
94
+ `,defines:{}}),"baseTexture");return t.needsSwap=!0,t},yt=1,K=!1,Fe=new w.MeshBasicMaterial({color:"black"}),He=new w.PointsMaterial({color:"black",sizeAttenuation:!1}),Ie=new w.PointsMaterial({color:"black",sizeAttenuation:!0}),ke=new w.SpriteMaterial({color:"black",sizeAttenuation:!0}),Ve=new w.SpriteMaterial({color:"black",sizeAttenuation:!1}),Be=new Vt.MeshLineMaterial({color:"black",sizeAttenuation:0,lineWidth:0}),Ne={kernelRadius:8,minDistance:.005,maxDistance:.1},Ye={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},Ze={multisampling:4,premultiplieAlpha:!1};class qe{constructor(t){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new w.Layers,this.bloomMaterials={},this.bloomVisible={},this.pipViewportState=null,this.options=t;const{rendererController:e,sceneController:s,cameraController:r,composerParams:i}=t,{renderer:n}=e,{multisampling:a}=i,{maxSamples:l}=n.capabilities,m=n.getDrawingBufferSize(new w.Vector2),C=new w.WebGLRenderTarget(m.width,m.height,{samples:Math.min(a,l),type:w.HalfFloatType}),c=new ae.RenderPass(s.scene,r.camera),E=new vt.EffectComposer(n,C);E.addPass(c),this.renderer=n,this.scene=s.scene,this.camera=r.camera,this.finalComposer=E,this.renderPass=c;const g=this.getSize();this.setSize(g.width,g.height),r.event.on("cameraChange",u=>{this.changeCamera(u)}),s.event.on("sceneChange",u=>{this.changeScene(u)})}changeCamera(t){this.renderPass.camera=t,this.camera=t}changeScene(t){this.renderPass.scene=t,this.ssaoPass&&(this.ssaoPass.scene=t),this.scene=t}addOutputPass(){const{premultiplieAlpha:t}=this.options.composerParams,e=new ze;this.outputPass=e,this.setPremultiplieAlpha(t),this.finalComposer.addPass(e)}setPremultiplieAlpha(t){this.outputPass&&(this.outputPass.uniforms.premultiplieAlpha.value=t?1:0)}addSSAOPass(t){const{scene:e,camera:s,renderer:r}=this,i=r.getSize(new w.Vector2),n=i.width,a=i.height,l=new he.SSAOPass(e,s,n,a);l.kernelRadius=t.kernelRadius,l.minDistance=t.minDistance,l.maxDistance=t.maxDistance,this.ssaoPass=l,this.finalComposer.addPass(l)}addSSAOGui(t){if(!this.ssaoPass)return;new Et({ssao:{kernelRadius:{min:0,max:32,target:()=>this.ssaoPass},minDistance:{min:.001,max:.02,target:()=>this.ssaoPass},maxDistance:{min:.01,max:.3,target:()=>this.ssaoPass}}}).showGui(t)}addBloomPass(t){const{renderer:e}=this,{threshold:s,strength:r,radius:i,bloomAlphaType:n}=t,a=new me.UnrealBloomPass(new w.Vector2(window.innerWidth,window.innerHeight),r,i,s);this.bloomPass=a;const l=new vt.EffectComposer(e);l.renderToScreen=!1,l.addPass(this.renderPass),l.addPass(a),this.bloomComposer=l;const m=Me(l);m.uniforms.bloomAlphaType.value=n,this.bloomComposer=l,this.finalComposer.addPass(m),this.mixPass=m,this.bloomLayer.set(yt)}addBloomGui(t){if(!this.bloomComposer)return;new Et({bloom:{threshold:{min:0,max:1,step:.01,target:()=>this.bloomPass},radius:{min:0,max:1,step:.001,target:()=>this.bloomPass},strength:{min:0,max:10,step:.001,target:()=>this.bloomPass}}}).showGui(t)}toggleBloomSelection(t,e){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}const{object3d:s}=t;if(!s)return;let r=e;e===void 0&&(r=!this.bloomSelection.has(s)),r?(this.bloomSelection.add(s),s.traverse(i=>{i.layers.enable(yt)})):(this.bloomSelection.delete(s),s.traverse(i=>{i.layers.disable(yt)})),this.bloomSelection.size===0?this.bloomComposerActive=!1:this.bloomComposerActive=!0}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(t,e){var s;(s=this.bloomComposer)==null||s.setSize(t,e),this.finalComposer.setSize(t,e)}setPixelRatio(t){var e;(e=this.bloomComposer)==null||e.setPixelRatio(t),this.finalComposer.setPixelRatio(t)}darkenNonBloomed(){const t=[],e=[];this.scene.children.forEach(s=>{s.isTransformControls||s.isTransformControlsRoot||s.type==="RectAreaLightHelper"?t.push(s):e.push(s)}),t.forEach(s=>{this.bloomVisible[s.uuid]=s.visible,s.visible=!1}),e.forEach(s=>{s.traverse(r=>{const i=r,n=r,a=r;i.material&&this.bloomLayer.test(i.layers)===!1&&(this.bloomMaterials[i.uuid]=i.material,n.isSprite?n.material.sizeAttenuation?n.material=ke:n.material=Ve:i.material instanceof Vt.MeshLineMaterial?i.material=Be:a.isPoints?a.material.sizeAttenuation?a.material=Ie:a.material=He:i.material=Fe)})})}restoreNonBloomed(){this.scene.traverse(t=>{const e=t;this.bloomMaterials[e.uuid]?(e.material=this.bloomMaterials[e.uuid],delete this.bloomMaterials[e.uuid]):this.bloomVisible[e.uuid]!==void 0&&(e.visible=this.bloomVisible[e.uuid],delete this.bloomVisible[e.uuid])})}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed()):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new w.Vector2)}render(){if(!this.active)return;const{cameraController:t,rendererController:e}=this.options;if(t.cameraArr[1]){t.setCameraActive(0);const s=this.getSize();e.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1}),this.finalComposerRender(),this.pipViewportState&&(t.setCameraActive(1),e.setViewport(ot(V({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender())}else this.finalComposerRender()}dispose(){var t;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(t=this.bloomComposer)==null||t.dispose()}}const dt=class dt{constructor(t,e){this.raycaster=new w.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new w.Vector3,this._cameraTarget=new w.Vector3,this.event=new st.eventsExports.EventEmitter,this.clock=new w.Clock,this.userData={},this.dprCache=1,this.options=Jt(dt.options,t,{isMergeableObject:pe.isPlainObject}),this.dprCache=this.options.renderer.devicePixelRatio,this.event.setMaxListeners(1/0);const{container:s,stats:r,gui:i,resizeObserver:n}=this.options;if(i){const a=new ee;a.open(!1),this.gui=a}if(this.init(),r){const a=new te({horizontal:!1});a.init(this.renderer),a.dom.style.position="absolute",s.appendChild(a.dom),this.stats=a}this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),this.initControls(),n&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime(),e&&(Array.isArray(e)||(e=[e]),e.forEach(a=>{Array.isArray(a)||(a=[a]),this.use(a[0],a[1])}))}getPlugin(t){return this.installPlugins.get(t)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?0: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}use(t,...e){this.installPlugins.has(t.pluginName)?console.log("plugin already installed"):typeof t.install=="function"&&(t.install(this,...e),this.installPlugins.set(t.pluginName,t))}init(){const{container:t,isdev:e,WebGPUTHREE:s,helper:r,viewHelper:i,renderer:n,scene:a,camera:l,controls:m}=this.options,{width:C,height:c}=this.getSize(),E=new Te({isdev:e,width:C,height:c,cameraParams:l,cameraControls:m===!0}),g=new xe({cameraController:E,sceneParams:a}),u=s?new Ee({width:C,height:c,sceneController:g,cameraController:E,isdev:e,renderer:s.WebGPURenderer,rendererParams:ye}):new Ce({width:C,height:c,sceneController:g,cameraController:E,isdev:e,rendererParams:ot(V({},n),{antialias:!1})});if(r){const p=new we({container:t,sceneController:g,cameraController:E});p.add(g.scene),this.helperController=p,i&&p.addViewHelper()}this.sceneController=g,this.rendererController=u,this.cameraController=E,t.appendChild(u.renderer.domElement)}initComposer(){const{bloom:t,bloomParams:e,ssao:s,ssaoParams:r,composer:i}=this.options,n=new qe({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:i});this.composerController=n,t&&(n.addBloomPass(V({},e)),this.gui&&n.addBloomGui(this.gui)),s&&(n.addSSAOPass(V({},r)),this.gui&&n.addSSAOGui(this.gui)),n.addOutputPass()}initCSSRenderer(){const{container:t,css2DRenderer:e,css3DRenderer:s,css2DRendererParams:r,css3DRendererParams:i}=this.options;if(e||s){const n=new Re(t);e&&n.addRenderer("css2d",r),s&&n.addRenderer("css3d",i),this.cssRendererController=n}}initControls(){const{controls:t,controlsParams:e,transformControls:s}=this.options;if(t){const r=new Pe({camera:this.camera,controlsParams:{domElement:(e==null?void 0:e.domElement)||this.renderer.domElement},customControls:typeof t=="boolean"?void 0:t});this.controlsController=r}if(s){const r=new Se({camera:this.camera,renderer:this.renderer,scene:this.scene});r.event.on("mouseDown",()=>{var i;(i=this.controlsController)==null||i.disable()}),r.event.on("mouseUp",()=>{var i;(i=this.controlsController)==null||i.enable()}),this.transformController=r}}getSize(){const{container:t}=this.options;return{width:t.offsetWidth,height:t.offsetHeight}}initResizeObserver(){const{container:t}=this.options;if(this.resizeObserver)return;const e=new ResizeObserver(s=>{for(const r of s){const i=r.contentRect;this.handeleResize(i.width,i.height),this.checkBackufferArea()}});e.observe(t),this.resizeObserver=e}checkBackufferArea(t=this.maxBackufferArea){t>this.maxBackufferArea&&(t=this.maxBackufferArea);const e=this.dprCache,{width:s,height:r}=this.getSize();let i=Math.sqrt(t/(s*r));i=(i*100|0)/100;const n=Math.min(e,i);this.setDevicePixelRatio(n),this.dprCache=e,n!==e&&console.warn("maxBackufferArea:",t," the pixel ratio is set to",n)}handeleResize(t,e,s=!0){const{rendererController:r,cameraController:i,composerController:n,cssRendererController:a}=this,l=this.renderer.getSize(new w.Vector2);l.x===t&&l.y===e||(i==null||i.setSize(t,e),r==null||r.setSize(t,e),n==null||n.setSize(t,e),a==null||a.setSize(t,e),this.installPlugins.forEach(m=>{var C;(C=m.setSize)==null||C.call(m,t,e)}),this.render(),s&&this.event.emit("resize",{width:t,height:e}))}setDevicePixelRatio(t){var s;const e=this.renderer.getPixelRatio();t!==e&&(this.dprCache=t,this.rendererController.setPixelRatio(t),(s=this.composerController)==null||s.setPixelRatio(t))}pick(t,e,s=!0){const{raycaster:r,options:i}=this,{container:n}=i,a=new w.Vector2,l=n.getBoundingClientRect();if(a.x=(t.clientX-l.left)/(l.right-l.left)*2-1,a.y=-((t.clientY-l.top)/(l.bottom-l.top))*2+1,this.camera&&this.scene){r.setFromCamera(a,this.camera);const m=r.intersectObjects(e||this.scene.children,s);if(m.length)return{object:m[0].object,intersects:m}}}render(){var n,a,l,m,C,c,E;const{scene:t,camera:e,clock:s}=this,r=s.getDelta(),i=s.getElapsedTime();xt.update(),(n=this.controlsController)==null||n.update(r),this.installPlugins.forEach(g=>{var u;(u=g.update)==null||u.call(g,r,i)}),(a=this.helperController)==null||a.update(r,this.controlsController,this.cameraTarget),(l=this.composerController)!=null&&l.active?this.composerController.render():(m=this.rendererController)==null||m.render(),(C=this.helperController)==null||C.renderViewHelper(this.renderer),(c=this.cssRendererController)==null||c.render(t,e),(E=this.stats)==null||E.update(),this.event.emit("render",{delta:r,elapsed:i})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(t){this.controlsController.autoRotateSpeed=t}showPipViewport(t){this.composerController.pipViewportState=t;let e=this.controlsController.cameraControlsArr[1];if(t){const{width:s,height:r}=this.getSize(),i=new DOMRect(t.x/s,(r-t.y-t.height)/r,t.width/s,t.height/r);if(e)e.enabled=!0,this.cameraController.cameraArr[1].position.copy(this.cameraController.camera.position);else{const n=this.cameraController.cloneCamera();e=this.controlsController.addCameraControls(n,i)}e.interactiveArea=i}else e&&(e.enabled=!1)}dispose(){var t,e,s,r,i,n,a,l,m,C,c;this.stop(),xt.removeAll(),this.event.removeAllListeners(),(t=this.resizeObserver)==null||t.unobserve(this.options.container),this.installPlugins.forEach(E=>{var g;(g=E.dispose)==null||g.call(E)}),(e=this.controlsController)==null||e.dispose(),(s=this.transformController)==null||s.dispose(),(r=this.cssRendererController)==null||r.dispose(),(i=this.sceneController)==null||i.dispose(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(l=this.rendererController)==null||l.dispose(),this.cssRendererController=void 0,(m=this.gui)==null||m.destroy(),this.installPlugins.clear(),(C=this.stats)==null||C.dom.remove(),(c=this.renderer)==null||c.domElement.remove()}};dt.options={isdev:K,stats:K,gui:K,helper:K,viewHelper:K,controls:!0,transformControls:K,resizeObserver:!0,renderer:ge,composer:Ze,scene:ve,camera:Oe,bloom:!1,bloomParams:Ye,ssao:!1,ssaoParams:Ne,css2DRenderer:!1,css2DRendererParams:V({},kt),css3DRenderer:!1,css3DRendererParams:V({},kt)};let ct=dt;const We=j.ACTION;exports.BaseObject=_e.BaseObject;exports.GUIObject=Et;exports.Pencil=ct;exports.cameraControlsAction=We;exports.default=ct;
@@ -2692,7 +2692,6 @@ class Ge {
2692
2692
  })), this.finalComposerRender());
2693
2693
  } else
2694
2694
  this.finalComposerRender();
2695
- this.finalComposerRender();
2696
2695
  }
2697
2696
  dispose() {
2698
2697
  var t;