gl-draw 0.12.22 → 0.12.23

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 e.needsSwap=!0,e},ye=1,K=!1,Ht=new w.MeshBasicMaterial({color:"black"}),kt=new w.PointsMaterial({color:"black",sizeAttenuation:!1}),Vt=new w.PointsMaterial({color:"black",sizeAttenuation:!0}),Bt=new w.SpriteMaterial({color:"black",sizeAttenuation:!0}),Nt=new w.SpriteMaterial({color:"black",sizeAttenuation:!1}),Yt=new Ve.MeshLineMaterial({color:"black",sizeAttenuation:0,lineWidth:0}),Zt={kernelRadius:8,minDistance:.005,maxDistance:.1},qt={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},Wt={multisampling:4,premultiplieAlpha:!1};class Gt{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new w.Layers,this.bloomMaterials={},this.bloomVisible={},this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:n}=t,{multisampling:a}=r,{maxSamples:l}=n.capabilities,d=n.getDrawingBufferSize(new w.Vector2),y=new w.WebGLRenderTarget(d.width,d.height,{samples:Math.min(a,l),type:w.HalfFloatType}),c=new Te.EffectComposer(n,y),v=this.getSize();c.setSize(v.width,v.height);const C=new ht.RenderPass(s.scene,i.camera);c.addPass(C),this.renderer=n,this.scene=s.scene,this.camera=i.camera,this.finalComposer=c,this.renderPass=C,i.event.on("cameraChange",u=>{this.changeCamera(u)}),s.event.on("sceneChange",u=>{this.changeScene(u)})}changeCamera(e){this.renderPass.camera=e,this.camera=e}changeScene(e){this.renderPass.scene=e,this.ssaoPass&&(this.ssaoPass.scene=e),this.scene=e}addOutputPass(){const{premultiplieAlpha:e}=this.options.composerParams,t=new Ft;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 w.Vector2),n=r.width,a=r.height,l=new lt.SSAOPass(t,s,n,a);l.kernelRadius=e.kernelRadius,l.minDistance=e.minDistance,l.maxDistance=e.maxDistance,this.ssaoPass=l,this.finalComposer.addPass(l)}addSSAOGui(e){if(!this.ssaoPass)return;new Ee({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(e)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:n}=e,a=new pt.UnrealBloomPass(new w.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=a;const l=new Te.EffectComposer(t);l.renderToScreen=!1,l.addPass(this.renderPass),l.addPass(a),this.bloomComposer=l;const d=It(l);d.uniforms.bloomAlphaType.value=n,this.bloomComposer=l,this.finalComposer.addPass(d),this.mixPass=d,this.bloomLayer.set(ye)}addBloomGui(e){if(!this.bloomComposer)return;new Ee({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(e)}toggleBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}const{object3d:s}=e;if(!s)return;let i=t;t===void 0&&(i=!this.bloomSelection.has(s)),i?(this.bloomSelection.add(s),s.traverse(r=>{r.layers.enable(ye)})):(this.bloomSelection.delete(s),s.traverse(r=>{r.layers.disable(ye)})),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(s=>{s.isTransformControls||s.isTransformControlsRoot||s.type==="RectAreaLightHelper"?e.push(s):t.push(s)}),e.forEach(s=>{this.bloomVisible[s.uuid]=s.visible,s.visible=!1}),t.forEach(s=>{s.traverse(i=>{const r=i,n=i,a=i;r.material&&this.bloomLayer.test(r.layers)===!1&&(this.bloomMaterials[r.uuid]=r.material,n.isSprite?n.material.sizeAttenuation?n.material=Bt:n.material=Nt:r.material instanceof Ve.MeshLineMaterial?r.material=Yt:a.isPoints?a.material.sizeAttenuation?a.material=Vt:a.material=kt:r.material=Ht)})})}restoreNonBloomed(){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])})}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:e,rendererController:t}=this.options;if(this.pipViewportState){e.setCameraActive(0);const s=this.getSize();t.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1}),this.finalComposerRender(),e.setCameraActive(1),t.setViewport(me(B({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender()}else this.finalComposerRender()}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}const ce=class ce{constructor(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 se.eventsExports.EventEmitter,this.timer=new $e.Timer,this.userData={},this.pageActiveIndex=-1,this.userSetDprCache=1,this.event.setMaxListeners(1/0),this.timer.connect(document),this.options=et(ce.options,e,{isMergeableObject:_t.isPlainObject}),this.userSetDprCache=this.options.renderer.devicePixelRatio;const{container:t,stats:s,gui:i,transformControls:r}=this.options;if(this.init(),this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),r&&this.initTransformControls(),s){const n=new tt({horizontal:!1});n.init(this.renderer),t.appendChild(n.dom),this.stats=n}if(i){const n=new st;n.open(!1),this.gui=n}this.initResizeObserver()}getPlugin(e){return this.installPlugins.get(e)}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(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.cameraController.addPerspectiveCamera(t);return this.sceneController.addScene(e).add(s),this.controlsController.addCameraControls(s),this.sceneController.sceneArr.length-1}removePage(e){e<=0||(this.cameraController.removeCamera(e),this.sceneController.removeScene(e),this.controlsController.removeCameraControls(e),this.pageActiveIndex===e&&this.showPage(0))}showPage(e){if(e!==this.pageActiveIndex){if(e!==-1&&!this.sceneController.sceneArr[e]){console.warn("addPage before showPage");return}this.sceneController.setSceneActive(e),this.controls.enabled=!1,e!==-1&&(this.cameraController.setCameraActive(e),this.controlsController.setCameraControlsActive(e),this.controls.enabled=!0),this.pageActiveIndex=e}}init(){const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controlsParams:n}=this.options,{width:a,height:l}=this.getSize(),d=t?new Ot({width:a,height:l,renderer:t.WebGPURenderer,rendererParams:Et}):new yt({width:a,height:l,rendererParams:me(B({},r),{antialias:!1})}),y=new Tt({width:a,height:l}),c=new St({}),v=new At({controlsParams:{domElement:(n==null?void 0:n.domElement)||d.renderer.domElement}});this.sceneController=c,this.cameraController=y,this.controlsController=v,this.rendererController=d;const C=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.pageActiveIndex=C,this.controls.setLookAt(0,0,400,0,0,0,!1),s){const u=new Pt({container:e,sceneController:c,cameraController:y});u.add(c.scene),this.helperController=u,i&&u.addViewHelper()}e.appendChild(d.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,n=new Gt({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=n,e&&(n.addBloomPass(B({},t)),this.gui&&n.addBloomGui(this.gui)),s&&(n.addSSAOPass(B({},i)),this.gui&&n.addSSAOGui(this.gui)),n.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const n=new zt(e);t&&n.addRenderer("css2d",i),s&&n.addRenderer("css3d",r),this.cssRendererController=n}}initTransformControls(){const e=new Dt({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:n,cssRendererController:a}=this,l=this.renderer.getSize(new w.Vector2);l.x===e&&l.y===t||(r==null||r.setSize(e,t),i==null||i.setSize(e,t),n==null||n.setSize(e,t),a==null||a.setSize(e,t),this.installPlugins.forEach(d=>{var y;(y=d.setSize)==null||y.call(d,e,t)}),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var a;this.userSetDprCache=e;const t=this.renderer.getPixelRatio();if(e===t)return;const{width:s,height:i}=this.getSize();let r=Math.sqrt(this.maxBackufferArea/(s*i));r=(r*100|0)/100;const n=Math.min(e,r);n!==e&&console.warn("maxBackufferArea:",this.maxBackufferArea," the pixel ratio is set to",n),this.rendererController.setPixelRatio(n),(a=this.composerController)==null||a.setPixelRatio(n)}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:n}=r,a=new w.Vector2,l=n.getBoundingClientRect();if(a.x=(e.clientX-l.left)/(l.right-l.left)*2-1,a.y=-((e.clientY-l.top)/(l.bottom-l.top))*2+1,this.camera&&this.scene){i.setFromCamera(a,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 n,a,l,d,y,c,v;const{scene:e,camera:t,timer:s}=this;s.update(),xe.update();const i=s.getDelta(),r=s.getElapsed();(n=this.controlsController)==null||n.update(i),this.installPlugins.forEach(C=>{var u;(u=C.update)==null||u.call(C,i,r)}),(a=this.helperController)==null||a.update(i,this.controlsController,this.cameraTarget),(l=this.composerController)!=null&&l.active?this.composerController.render():(d=this.rendererController)==null||d.render(this.scene,this.camera),(y=this.helperController)==null||y.renderViewHelper(this.renderer),(c=this.cssRendererController)==null||c.render(e,t),(v=this.stats)==null||v.update(),this.event.emit("render",{delta:i,elapsed:r})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(e){this.controlsController.autoRotateSpeed=e}showPipViewport(e){this.composerController.pipViewportState=e;let t=this.controlsController.cameraControlsArr[1];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,this.cameraController.cameraArr[1].position.copy(this.cameraController.camera.position);else{const n=this.cameraController.cloneCamera();t=this.controlsController.addCameraControls(n,r)}t.interactiveArea=r}else if(t){this.cameraController.setCameraActive(0);const s=this.getSize();this.rendererController.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1});const i=s.width/s.height;this.cameraController.camera.aspect!==i&&(this.cameraController.camera.aspect=i,this.cameraController.camera.updateProjectionMatrix()),t.enabled=!1}}dispose(){var e,t,s,i,r,n,a,l,d,y,c;this.stop(),this.timer.dispose(),xe.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(v=>{var C;(C=v.dispose)==null||C.call(v)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(i=this.cssRendererController)==null||i.dispose(),(r=this.sceneController)==null||r.dispose(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(l=this.rendererController)==null||l.dispose(),this.cssRendererController=void 0,(d=this.gui)==null||d.destroy(),this.installPlugins.clear(),(y=this.stats)==null||y.dom.remove(),(c=this.renderer)==null||c.domElement.remove()}};ce.options={isdev:K,stats:K,gui:K,helper:K,viewHelper:K,controls:!0,transformControls:K,renderer:Ct,composer:Wt,scene:xt,camera:vt,bloom:!1,bloomParams:qt,ssao:!1,ssaoParams:Zt,css2DRenderer:!1,css2DRendererParams:B({},ke),css3DRenderer:!1,css3DRendererParams:B({},ke)};let le=ce;const Xt=j.ACTION;exports.BaseObject=ut.BaseObject;exports.GUIObject=Ee;exports.Pencil=le;exports.cameraControlsAction=Xt;exports.default=le;
94
+ `,defines:{}}),"baseTexture");return e.needsSwap=!0,e},ye=1,K=!1,Ht=new w.MeshBasicMaterial({color:"black"}),kt=new w.PointsMaterial({color:"black",sizeAttenuation:!1}),Vt=new w.PointsMaterial({color:"black",sizeAttenuation:!0}),Bt=new w.SpriteMaterial({color:"black",sizeAttenuation:!0}),Nt=new w.SpriteMaterial({color:"black",sizeAttenuation:!1}),Yt=new Ve.MeshLineMaterial({color:"black",sizeAttenuation:0,lineWidth:0}),Zt={kernelRadius:8,minDistance:.005,maxDistance:.1},qt={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},Wt={multisampling:4,premultiplieAlpha:!1};class Gt{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new w.Layers,this.bloomMaterials={},this.bloomVisible={},this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:n}=t;this.renderer=n;const{multisampling:a}=r,{maxSamples:l}=n.capabilities,d=n.getDrawingBufferSize(new w.Vector2),y=new w.WebGLRenderTarget(d.width,d.height,{samples:Math.min(a,l),type:w.HalfFloatType}),c=new Te.EffectComposer(n,y),v=this.getSize();c.setSize(v.width,v.height);const C=new ht.RenderPass(s.scene,i.camera);c.addPass(C),this.scene=s.scene,this.camera=i.camera,this.finalComposer=c,this.renderPass=C,i.event.on("cameraChange",u=>{this.changeCamera(u)}),s.event.on("sceneChange",u=>{this.changeScene(u)})}changeCamera(e){this.renderPass.camera=e,this.camera=e}changeScene(e){this.renderPass.scene=e,this.ssaoPass&&(this.ssaoPass.scene=e),this.scene=e}addOutputPass(){const{premultiplieAlpha:e}=this.options.composerParams,t=new Ft;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 w.Vector2),n=r.width,a=r.height,l=new lt.SSAOPass(t,s,n,a);l.kernelRadius=e.kernelRadius,l.minDistance=e.minDistance,l.maxDistance=e.maxDistance,this.ssaoPass=l,this.finalComposer.addPass(l)}addSSAOGui(e){if(!this.ssaoPass)return;new Ee({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(e)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:n}=e,a=new pt.UnrealBloomPass(new w.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=a;const l=new Te.EffectComposer(t);l.renderToScreen=!1,l.addPass(this.renderPass),l.addPass(a),this.bloomComposer=l;const d=It(l);d.uniforms.bloomAlphaType.value=n,this.bloomComposer=l,this.finalComposer.addPass(d),this.mixPass=d,this.bloomLayer.set(ye)}addBloomGui(e){if(!this.bloomComposer)return;new Ee({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(e)}toggleBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}const{object3d:s}=e;if(!s)return;let i=t;t===void 0&&(i=!this.bloomSelection.has(s)),i?(this.bloomSelection.add(s),s.traverse(r=>{r.layers.enable(ye)})):(this.bloomSelection.delete(s),s.traverse(r=>{r.layers.disable(ye)})),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(s=>{s.isTransformControls||s.isTransformControlsRoot||s.type==="RectAreaLightHelper"?e.push(s):t.push(s)}),e.forEach(s=>{this.bloomVisible[s.uuid]=s.visible,s.visible=!1}),t.forEach(s=>{s.traverse(i=>{const r=i,n=i,a=i;r.material&&this.bloomLayer.test(r.layers)===!1&&(this.bloomMaterials[r.uuid]=r.material,n.isSprite?n.material.sizeAttenuation?n.material=Bt:n.material=Nt:r.material instanceof Ve.MeshLineMaterial?r.material=Yt:a.isPoints?a.material.sizeAttenuation?a.material=Vt:a.material=kt:r.material=Ht)})})}restoreNonBloomed(){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])})}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:e,rendererController:t}=this.options;if(this.pipViewportState){e.setCameraActive(0);const s=this.getSize();t.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1}),this.finalComposerRender(),e.setCameraActive(1),t.setViewport(me(B({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender()}else this.finalComposerRender()}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}const ce=class ce{constructor(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 se.eventsExports.EventEmitter,this.timer=new $e.Timer,this.userData={},this.pageActiveIndex=-1,this.userSetDprCache=1,this.event.setMaxListeners(1/0),this.timer.connect(document),this.options=et(ce.options,e,{isMergeableObject:_t.isPlainObject}),this.userSetDprCache=this.options.renderer.devicePixelRatio;const{container:t,stats:s,gui:i,transformControls:r}=this.options;if(this.init(),this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),r&&this.initTransformControls(),s){const n=new tt({horizontal:!1});n.init(this.renderer),t.appendChild(n.dom),this.stats=n}if(i){const n=new st;n.open(!1),this.gui=n}this.initResizeObserver()}getPlugin(e){return this.installPlugins.get(e)}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(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.cameraController.addPerspectiveCamera(t);return this.sceneController.addScene(e).add(s),this.controlsController.addCameraControls(s),this.sceneController.sceneArr.length-1}removePage(e){e<=0||(this.cameraController.removeCamera(e),this.sceneController.removeScene(e),this.controlsController.removeCameraControls(e),this.pageActiveIndex===e&&this.showPage(0))}showPage(e){if(e!==this.pageActiveIndex){if(e!==-1&&!this.sceneController.sceneArr[e]){console.warn("addPage before showPage");return}this.sceneController.setSceneActive(e),this.controls.enabled=!1,e!==-1&&(this.cameraController.setCameraActive(e),this.controlsController.setCameraControlsActive(e),this.controls.enabled=!0),this.pageActiveIndex=e}}init(){const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controlsParams:n}=this.options,{width:a,height:l}=this.getSize(),d=t?new Ot({width:a,height:l,renderer:t.WebGPURenderer,rendererParams:Et}):new yt({width:a,height:l,rendererParams:me(B({},r),{antialias:!1})}),y=new Tt({width:a,height:l}),c=new St({}),v=new At({controlsParams:{domElement:(n==null?void 0:n.domElement)||d.renderer.domElement}});this.sceneController=c,this.cameraController=y,this.controlsController=v,this.rendererController=d;const C=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.pageActiveIndex=C,this.controls.setLookAt(0,0,400,0,0,0,!1),s){const u=new Pt({container:e,sceneController:c,cameraController:y});u.add(c.scene),this.helperController=u,i&&u.addViewHelper()}e.appendChild(d.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,n=new Gt({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=n,e&&(n.addBloomPass(B({},t)),this.gui&&n.addBloomGui(this.gui)),s&&(n.addSSAOPass(B({},i)),this.gui&&n.addSSAOGui(this.gui)),n.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const n=new zt(e);t&&n.addRenderer("css2d",i),s&&n.addRenderer("css3d",r),this.cssRendererController=n}}initTransformControls(){const e=new Dt({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:n,cssRendererController:a}=this,l=this.renderer.getSize(new w.Vector2);l.x===e&&l.y===t||(r==null||r.setSize(e,t),i==null||i.setSize(e,t),n==null||n.setSize(e,t),a==null||a.setSize(e,t),this.installPlugins.forEach(d=>{var y;(y=d.setSize)==null||y.call(d,e,t)}),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var a;this.userSetDprCache=e;const t=this.renderer.getPixelRatio();if(e===t)return;const{width:s,height:i}=this.getSize();let r=Math.sqrt(this.maxBackufferArea/(s*i));r=(r*100|0)/100;const n=Math.min(e,r);n!==e&&console.warn("maxBackufferArea:",this.maxBackufferArea," the pixel ratio is set to",n),this.rendererController.setPixelRatio(n),(a=this.composerController)==null||a.setPixelRatio(n)}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:n}=r,a=new w.Vector2,l=n.getBoundingClientRect();if(a.x=(e.clientX-l.left)/(l.right-l.left)*2-1,a.y=-((e.clientY-l.top)/(l.bottom-l.top))*2+1,this.camera&&this.scene){i.setFromCamera(a,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 n,a,l,d,y,c,v;const{scene:e,camera:t,timer:s}=this;s.update(),xe.update();const i=s.getDelta(),r=s.getElapsed();(n=this.controlsController)==null||n.update(i),this.installPlugins.forEach(C=>{var u;(u=C.update)==null||u.call(C,i,r)}),(a=this.helperController)==null||a.update(i,this.controlsController,this.cameraTarget),(l=this.composerController)!=null&&l.active?this.composerController.render():(d=this.rendererController)==null||d.render(this.scene,this.camera),(y=this.helperController)==null||y.renderViewHelper(this.renderer),(c=this.cssRendererController)==null||c.render(e,t),(v=this.stats)==null||v.update(),this.event.emit("render",{delta:i,elapsed:r})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(e){this.controlsController.autoRotateSpeed=e}showPipViewport(e){this.composerController.pipViewportState=e;let t=this.controlsController.cameraControlsArr[1];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,this.cameraController.cameraArr[1].position.copy(this.cameraController.camera.position);else{const n=this.cameraController.cloneCamera();t=this.controlsController.addCameraControls(n,r)}t.interactiveArea=r}else if(t){this.cameraController.setCameraActive(0);const s=this.getSize();this.rendererController.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1});const i=s.width/s.height;this.cameraController.camera.aspect!==i&&(this.cameraController.camera.aspect=i,this.cameraController.camera.updateProjectionMatrix()),t.enabled=!1}}dispose(){var e,t,s,i,r,n,a,l,d,y,c;this.stop(),this.timer.dispose(),xe.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(v=>{var C;(C=v.dispose)==null||C.call(v)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(i=this.cssRendererController)==null||i.dispose(),(r=this.sceneController)==null||r.dispose(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(l=this.rendererController)==null||l.dispose(),this.cssRendererController=void 0,(d=this.gui)==null||d.destroy(),this.installPlugins.clear(),(y=this.stats)==null||y.dom.remove(),(c=this.renderer)==null||c.domElement.remove()}};ce.options={isdev:K,stats:K,gui:K,helper:K,viewHelper:K,controls:!0,transformControls:K,renderer:Ct,composer:Wt,scene:xt,camera:vt,bloom:!1,bloomParams:qt,ssao:!1,ssaoParams:Zt,css2DRenderer:!1,css2DRendererParams:B({},ke),css3DRenderer:!1,css3DRendererParams:B({},ke)};let le=ce;const Xt=j.ACTION;exports.BaseObject=ut.BaseObject;exports.GUIObject=Ee;exports.Pencil=le;exports.cameraControlsAction=Xt;exports.default=le;
@@ -2510,7 +2510,9 @@ class Ke {
2510
2510
  sceneController: s,
2511
2511
  cameraController: i,
2512
2512
  composerParams: r
2513
- } = t, { renderer: n } = e, { multisampling: a } = r, { maxSamples: l } = n.capabilities, d = n.getDrawingBufferSize(
2513
+ } = t, { renderer: n } = e;
2514
+ this.renderer = n;
2515
+ const { multisampling: a } = r, { maxSamples: l } = n.capabilities, d = n.getDrawingBufferSize(
2514
2516
  new w.Vector2()
2515
2517
  ), y = new w.WebGLRenderTarget(
2516
2518
  d.width,
@@ -2525,7 +2527,7 @@ class Ke {
2525
2527
  s.scene,
2526
2528
  i.camera
2527
2529
  );
2528
- c.addPass(C), this.renderer = n, this.scene = s.scene, this.camera = i.camera, this.finalComposer = c, this.renderPass = C, i.event.on("cameraChange", (u) => {
2530
+ c.addPass(C), this.scene = s.scene, this.camera = i.camera, this.finalComposer = c, this.renderPass = C, i.event.on("cameraChange", (u) => {
2529
2531
  this.changeCamera(u);
2530
2532
  }), s.event.on("sceneChange", (u) => {
2531
2533
  this.changeScene(u);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gl-draw",
3
- "version": "0.12.22",
3
+ "version": "0.12.23",
4
4
  "author": "gitplus <hstits@gmail.com>",
5
5
  "scripts": {
6
6
  "start": "bundler-dev",