gl-draw 0.9.0 → 0.9.2

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.
@@ -17,8 +17,8 @@ export default class BaseObject {
17
17
  get position(): THREE.Vector3;
18
18
  get rotation(): THREE.Euler;
19
19
  get scale(): THREE.Vector3;
20
- get add(): (...object: THREE.Object3D<THREE.Object3DEventMap>[]) => THREE.Object3D<THREE.Object3DEventMap>;
21
- get remove(): (...object: THREE.Object3D<THREE.Object3DEventMap>[]) => THREE.Object3D<THREE.Object3DEventMap>;
20
+ get add(): (...object: THREE.Object3D[]) => THREE.Object3D<THREE.Object3DEventMap>;
21
+ get remove(): (...object: THREE.Object3D[]) => THREE.Object3D<THREE.Object3DEventMap>;
22
22
  get visible(): boolean;
23
23
  pm: {
24
24
  promise: Promise<any>;
@@ -22,9 +22,11 @@ interface Options {
22
22
  export default class {
23
23
  options: Options;
24
24
  camera: THREE.PerspectiveCamera;
25
+ camera2?: THREE.PerspectiveCamera;
25
26
  customCamera: boolean;
26
27
  constructor(options: Options);
27
28
  setSize(width: number, height: number): void;
29
+ addCamera2(): THREE.PerspectiveCamera;
28
30
  setGui(gui: GUI): void;
29
31
  }
30
32
  export {};
@@ -57,6 +57,7 @@ export default class {
57
57
  scene: THREE.Scene;
58
58
  camera: THREE.Camera;
59
59
  finalComposer: EffectComposer;
60
+ finalComposer2?: EffectComposer;
60
61
  copyPass: CopyPass;
61
62
  fxaaPass?: EffectPass;
62
63
  bloomPass?: EffectPass;
@@ -67,6 +68,8 @@ export default class {
67
68
  options: Options;
68
69
  active: boolean;
69
70
  constructor(options: Options);
71
+ addFinalComposer(c: THREE.Camera): EffectComposer;
72
+ addFinalComposer2(c: THREE.Camera): void;
70
73
  addCopyPass(): void;
71
74
  addCrossFadePass(): void;
72
75
  addFXAAPass(): void;
@@ -80,6 +83,7 @@ export default class {
80
83
  disable(): void;
81
84
  setSize(width: number, height: number): void;
82
85
  render(): void;
86
+ render2(): void;
83
87
  dispose(): void;
84
88
  }
85
89
  export {};
@@ -13,8 +13,10 @@ export default class {
13
13
  options: Options;
14
14
  controls?: any;
15
15
  cameraControls: CameraControls;
16
+ cameraControls2?: CameraControls;
16
17
  autoRotateSpeed: number;
17
18
  constructor(options: Options);
19
+ addCameraControls2(c: THREE.PerspectiveCamera): void;
18
20
  enable(): void;
19
21
  disable(): void;
20
22
  update(delta: number): void;
@@ -1,4 +1,3 @@
1
- /// <reference types="postprocessing" />
2
1
  import * as THREE from 'three';
3
2
  import { EventEmitter } from 'events';
4
3
  import Stats from 'three/examples/jsm/libs/stats.module';
@@ -163,6 +162,11 @@ export default class Pencil {
163
162
  start(): void;
164
163
  stop(): void;
165
164
  autoRotate(speed: number): void;
165
+ mulitViewport: boolean;
166
+ setMulitViewport(state: boolean): void;
167
+ private setViewportFull;
168
+ private setViewportLeft;
169
+ private setViewportRight;
166
170
  dispose(): void;
167
171
  }
168
172
  export {};
@@ -41,7 +41,7 @@ export default class {
41
41
  options: Options;
42
42
  constructor(options: Options);
43
43
  setSize(width: number, height: number): void;
44
- render(): void;
44
+ render(c?: THREE.Camera): void;
45
45
  dispose(): void;
46
46
  }
47
47
  export {};
@@ -9,7 +9,7 @@ interface Options {
9
9
  export default class {
10
10
  controls: TransformControls;
11
11
  get detach(): () => TransformControls;
12
- get attach(): (object: THREE.Object3D<THREE.Object3DEventMap>) => TransformControls;
12
+ get attach(): (object: THREE.Object3D) => TransformControls;
13
13
  event: EventEmitter;
14
14
  constructor(options: Options);
15
15
  addEvent(): void;
@@ -52,8 +52,7 @@ o.prototype.getMaxListeners = function() {
52
52
  return y(this);
53
53
  };
54
54
  o.prototype.emit = function(e) {
55
- for (var n = [], r = 1; r < arguments.length; r++)
56
- n.push(arguments[r]);
55
+ for (var n = [], r = 1; r < arguments.length; r++) n.push(arguments[r]);
57
56
  var i = e === "error", f = this._events;
58
57
  if (f !== void 0)
59
58
  i = i && f.error === void 0;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var U=Object.defineProperty,V=Object.defineProperties;var N=Object.getOwnPropertyDescriptors;var R=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var O=(c,e,t)=>e in c?U(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t,v=(c,e)=>{for(var t in e||(e={}))A.call(e,t)&&O(c,t,e[t]);if(R)for(var t of R(e))T.call(e,t)&&O(c,t,e[t]);return c},M=(c,e)=>V(c,N(e));var z=(c,e)=>{var t={};for(var s in c)A.call(c,s)&&e.indexOf(s)<0&&(t[s]=c[s]);if(c!=null&&R)for(var s of R(c))e.indexOf(s)<0&&T.call(c,s)&&(t[s]=c[s]);return t};Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const B=require("camera-controls"),S=require("three"),_=require("@tweenjs/tween.js"),H=require("./events.js"),W=require("deepmerge"),X=require("three/examples/jsm/libs/stats.module"),$=require("lil-gui"),Y=require("./colorCorrection.js"),Z=require("./disposeMesh.js");require("idb-keyval");require("esus-lite");require("d3-geo");const L=require("./MeshLineMaterial.js"),J=require("three/examples/jsm/helpers/RectAreaLightHelper"),K=require("three/examples/jsm/controls/TransformControls"),Q=require("three/examples/jsm/renderers/CSS3DRenderer"),ee=require("three/examples/jsm/renderers/CSS2DRenderer"),p=require("postprocessing"),te=require("./isPlainObject.js"),se=require("./BaseObject.js");function k(c){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const t in c)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(c,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>c[t]})}}return e.default=c,Object.freeze(e)}const d=k(S),F=k(_),re={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:Y.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1,physicallyCorrectLights:!1};class oe{constructor(e){this.options=e;const{width:t,height:s,rendererParams:r}=e,{canvas:o,context:n,alpha:i,devicePixelRatio:a,antialias:l,powerPreference:h,toneMappingExposure:m,outputColorSpace:u,logarithmicDepthBuffer:g,preserveDrawingBuffer:P,stencil:f,depth:E,physicallyCorrectLights:b}=r,C=new d.WebGLRenderer({canvas:o,context:n,alpha:i,antialias:l,powerPreference:h,logarithmicDepthBuffer:g,preserveDrawingBuffer:P,stencil:f,depth:E});C.setSize(t,s),C.setPixelRatio(a),C.toneMappingExposure=m,C.outputColorSpace=u,+d.REVISION<155&&(C.useLegacyLights=b),this.renderer=C}setSize(e,t){this.renderer.setSize(e,t)}render(){const{scene:e,camera:t}=this.options;this.renderer.render(e,t)}dispose(){var e,t;(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}class x{constructor(e){this.guiParams={},e&&(this.guiParams=e)}showGui(e){e&&Object.keys(this.guiParams).forEach(t=>{const s=e.addFolder(t),r=this.guiParams[t];Object.keys(r).forEach(o=>{const{min:n,max:i,step:a,name:l,paramMap:h,items:m,value:u,target:g}=r[o],P=o.toLowerCase().indexOf("color")>-1;let f;const E=typeof u=="undefined"&&g,b=E?g():r[o],C=E?o:"value";m?f=s.add(b,C,m):P?f=s.addColor(b,C):f=s.add(b,C),f=f.name(l||o),typeof n!="undefined"&&(f=f.min(n)),typeof i!="undefined"&&(f=f.max(i)),typeof a!="undefined"&&(f=f.step(a)),f=f.onChange(()=>{this.setTargetValue(t,o,b[C],h)}),E&&f.listen()})})}setTargetValue(e,t,s,r){const{onChange:o,target:n,value:i}=this.guiParams[e][t],a=t.toLowerCase().indexOf("color")>-1;if(n&&!(typeof i=="undefined"&&n)){let h=n();Array.isArray(h)||(h=[h]),h.forEach(m=>{if(m)if(a)try{m[r||t].set(s)}catch(u){t!=="color"&&!r&&console.warn(`${t} is not a color,set paramMap`)}else m[r||t]=s})}o&&o(s)}setTargetValueByParams(){Object.keys(this.guiParams).forEach(e=>{Object.keys(this.guiParams[e]).forEach(t=>{const s=this.guiParams[e][t];typeof s.value!="undefined"&&this.setTargetValue(e,t,s.value,s.paramMap)})})}}const ne={fov:45,near:1,far:1e3,up:new d.Vector3(0,1,0)};class ie{constructor(e){this.customCamera=!1,this.options=e;const{width:t,height:s,cameraParams:r}=e;if(r instanceof d.Camera)this.camera=r,this.customCamera=!0;else{const{fov:o,far:n,near:i,up:a}=r,l=new d.PerspectiveCamera(o,t/s,i,n);l.position.set(0,0,400),l.lookAt(0,0,0),l.up=a,this.camera=l}}setSize(e,t){this.camera instanceof d.PerspectiveCamera&&(this.camera.aspect=e/t),this.camera.updateProjectionMatrix()}setGui(e){const t=new x({camera:M(v({},this.options.cameraControls?{}:{x:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},y:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},z:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position}}),{near:{min:0,max:1e3,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}},far:{min:0,max:2e4,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}})});this.camera instanceof d.PerspectiveCamera&&(t.guiParams.camera.fov={min:0,max:90,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}),t.showGui(e)}}const ae={background:null,om:!0};class le{constructor(e){this.overrideMaterial=!1,this.options=e;const{camera:t,sceneParams:s}=e,{background:r,om:o}=s,n=o?new d.Scene:new Proxy(new d.Scene,{set:(i,a,l)=>Reflect.set(i,a,l),get:(i,a)=>{if(a==="overrideMaterial"){const l=Reflect.get(i,a);return this.overrideMaterial=!!l,L.meshLineMaterialArr.forEach(h=>{this.overrideMaterial?h.useDepth=1:h.useDepth=0}),null}return Reflect.get(i,a)}});r&&(n.background=r),n.add(t),this.scene=n}dispose(){var e;(e=this.scene)==null||e.traverse(t=>{Z.disposeMesh(t)}),L.meshLineMaterialArr.length=0}}class ce{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{scene:s}=this.options;let r=this.helpers[t];if(r===void 0){if(e.isScene)r=new d.AxesHelper(100);else if(e.isCamera)r=new d.CameraHelper(e);else if(e.isPointLight)r=new d.PointLightHelper(e,1);else if(e.isDirectionalLight)r=new d.DirectionalLightHelper(e,1);else if(e.isSpotLight)r=new d.SpotLightHelper(e);else if(e.isHemisphereLight)r=new d.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)r=new J.RectAreaLightHelper(e);else{const o=new d.Box3;if(o.setFromObject(e,!0),o.isEmpty()===!1){r=new d.Box3Helper(o);const n=r.material;n.userData.object=e,n.depthTest=!1,n.transparent=!0}else return}s.add(r),this.helpers[t]=r}}remove(e){const t=e.uuid,{scene:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.remove(r),delete this.helpers[t],r instanceof d.Box3Helper&&r.dispose()}}removeAll(){Object.keys(this.helpers).forEach(e=>{this.remove({uuid:e})}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof d.AxesHelper||this.remove({uuid:e})})}update(){Object.values(this.helpers).forEach(e=>{if(e.update&&e.update(),e instanceof d.Box3Helper){const t=e.material,{object:s}=t.userData;s&&e.box.setFromObject(s,!0)}})}dispose(){this.helpers={}}}class de{constructor(e){this.autoRotateSpeed=0,this.options=e;const{camera:t,controlsParams:s,customControl:r}=e,{domElement:o}=s;if(r){const n=new r(t,o);n.enableDamping=!0,n.dampingFactor=.063,n.autoRotate=!1,n.autoRotateSpeed=-60,n.enableZoom=!0,n.zoomSpeed=.2,this.controls=n}else B.install({THREE:d}),this.cameraControls=new B(t,o)}enable(){this.controls?this.controls.enabled=!0:this.cameraControls&&(this.cameraControls.enabled=!0)}disable(){this.controls?this.controls.enabled=!1:this.cameraControls&&(this.cameraControls.enabled=!1)}update(e){var t,s;(t=this.controls)==null||t.update(),(s=this.cameraControls)==null||s.update(e),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*d.MathUtils.DEG2RAD)}dispose(){var e,t;(e=this.controls)==null||e.dispose(),(t=this.cameraControls)==null||t.dispose()}}class he{constructor(e){this.event=new H.eventsExports.EventEmitter;const{renderer:t,scene:s,camera:r}=e,o=new K.TransformControls(r,t.domElement);s.add(o),this.controls=o,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 r=this.controls;r.addEventListener("change",()=>{const o=r.object;o!==void 0&&this.event.emit("change",o)}),r.addEventListener("mouseDown",()=>{const o=r.object;e=o.position.clone(),t=o.rotation.clone(),s=o.scale.clone(),this.event.emit("mouseDown",o)}),r.addEventListener("mouseUp",()=>{const o=r.object;if(o!==void 0)switch(r.getMode()){case"translate":e.equals(o.position)||this.event.emit("translate",o,o.position,e);break;case"rotate":t.equals(o.rotation)||this.event.emit("rotate",o,o.rotation,t);break;case"scale":s.equals(o.scale)||this.event.emit("scale",o,o.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const j={zIndex:"auto"};class me{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,r=s.offsetWidth,o=s.offsetHeight,n=e==="css2d"?new ee.CSS2DRenderer:new Q.CSS3DRenderer;n.domElement.style.position="absolute",n.domElement.style.top="0",n.domElement.style.pointerEvents="none",n.domElement.style.zIndex=t.zIndex,n.setSize(r,o),s.appendChild(n.domElement),e==="css2d"?this.css2Drenderer=n:e==="css3d"&&(this.css3Drenderer=n)}setSize(e,t){var s,r;(s=this.css2Drenderer)==null||s.setSize(e,t),(r=this.css3Drenderer)==null||r.setSize(e,t)}render(e,t){var s,r;(s=this.css2Drenderer)==null||s.render(e,t),(r=this.css3Drenderer)==null||r.render(e,t)}dispose(){this.css2Drenderer=void 0,this.css3Drenderer=void 0}}const q=["encodings_fragment","colorspace_fragment"];class fe extends S.ShaderMaterial{constructor(){super({uniforms:{inputBuffer:new S.Uniform(null),ratio:new S.Uniform(1)},fragmentShader:`
1
+ "use strict";var I=Object.defineProperty,U=Object.defineProperties;var N=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;var A=(c,e,t)=>e in c?I(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t,v=(c,e)=>{for(var t in e||(e={}))B.call(e,t)&&A(c,t,e[t]);if(M)for(var t of M(e))z.call(e,t)&&A(c,t,e[t]);return c},R=(c,e)=>U(c,N(e));var T=(c,e)=>{var t={};for(var s in c)B.call(c,s)&&e.indexOf(s)<0&&(t[s]=c[s]);if(c!=null&&M)for(var s of M(c))e.indexOf(s)<0&&z.call(c,s)&&(t[s]=c[s]);return t};Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const x=require("camera-controls"),S=require("three"),_=require("@tweenjs/tween.js"),G=require("./events.js"),W=require("deepmerge"),X=require("three/examples/jsm/libs/stats.module"),$=require("lil-gui"),Y=require("./colorCorrection.js"),Z=require("./disposeMesh.js");require("idb-keyval");require("esus-lite");require("d3-geo");const L=require("./MeshLineMaterial.js"),J=require("three/examples/jsm/helpers/RectAreaLightHelper"),K=require("three/examples/jsm/controls/TransformControls"),Q=require("three/examples/jsm/renderers/CSS3DRenderer"),ee=require("three/examples/jsm/renderers/CSS2DRenderer"),u=require("postprocessing"),te=require("./isPlainObject.js"),se=require("./BaseObject.js");function H(c){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const t in c)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(c,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>c[t]})}}return e.default=c,Object.freeze(e)}const h=H(S),F=H(_),re={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:Y.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1,physicallyCorrectLights:!1};class oe{constructor(e){this.options=e;const{width:t,height:s,rendererParams:r}=e,{canvas:o,context:n,alpha:i,devicePixelRatio:a,antialias:l,powerPreference:d,toneMappingExposure:m,outputColorSpace:f,logarithmicDepthBuffer:g,preserveDrawingBuffer:P,stencil:p,depth:b,physicallyCorrectLights:w}=r,C=new h.WebGLRenderer({canvas:o,context:n,alpha:i,antialias:l,powerPreference:d,logarithmicDepthBuffer:g,preserveDrawingBuffer:P,stencil:p,depth:b});C.setSize(t,s),C.setPixelRatio(a),C.toneMappingExposure=m,C.outputColorSpace=f,+h.REVISION<155&&(C.useLegacyLights=w),this.renderer=C}setSize(e,t){this.renderer.setSize(e,t)}render(e){const{scene:t,camera:s}=this.options;this.renderer.render(t,e||s)}dispose(){var e,t;(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}class y{constructor(e){this.guiParams={},e&&(this.guiParams=e)}showGui(e){e&&Object.keys(this.guiParams).forEach(t=>{const s=e.addFolder(t),r=this.guiParams[t];Object.keys(r).forEach(o=>{const{min:n,max:i,step:a,name:l,paramMap:d,items:m,value:f,target:g}=r[o],P=o.toLowerCase().indexOf("color")>-1;let p;const b=typeof f=="undefined"&&g,w=b?g():r[o],C=b?o:"value";m?p=s.add(w,C,m):P?p=s.addColor(w,C):p=s.add(w,C),p=p.name(l||o),typeof n!="undefined"&&(p=p.min(n)),typeof i!="undefined"&&(p=p.max(i)),typeof a!="undefined"&&(p=p.step(a)),p=p.onChange(()=>{this.setTargetValue(t,o,w[C],d)}),b&&p.listen()})})}setTargetValue(e,t,s,r){const{onChange:o,target:n,value:i}=this.guiParams[e][t],a=t.toLowerCase().indexOf("color")>-1;if(n&&!(typeof i=="undefined"&&n)){let d=n();Array.isArray(d)||(d=[d]),d.forEach(m=>{if(m)if(a)try{m[r||t].set(s)}catch(f){t!=="color"&&!r&&console.warn(`${t} is not a color,set paramMap`)}else m[r||t]=s})}o&&o(s)}setTargetValueByParams(){Object.keys(this.guiParams).forEach(e=>{Object.keys(this.guiParams[e]).forEach(t=>{const s=this.guiParams[e][t];typeof s.value!="undefined"&&this.setTargetValue(e,t,s.value,s.paramMap)})})}}const ne={fov:45,near:1,far:1e3,up:new h.Vector3(0,1,0)};class ie{constructor(e){this.customCamera=!1,this.options=e;const{width:t,height:s,cameraParams:r}=e;if(r instanceof h.Camera)this.camera=r,this.customCamera=!0;else{const{fov:o,far:n,near:i,up:a}=r,l=new h.PerspectiveCamera(o,t/s,i,n);l.position.set(0,0,400),l.lookAt(0,0,0),l.up=a,this.camera=l}}setSize(e,t){this.camera instanceof h.PerspectiveCamera&&(this.camera.aspect=e/t),this.camera.updateProjectionMatrix(),this.camera2&&(this.camera2.aspect=e/t,this.camera2.updateProjectionMatrix())}addCamera2(){const e=new h.PerspectiveCamera(this.camera.fov,this.camera.aspect,this.camera.near,this.camera.far);return e.position.copy(this.camera.position),this.camera2=e,e}setGui(e){const t=new y({camera:R(v({},this.options.cameraControls?{}:{x:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},y:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},z:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position}}),{near:{min:0,max:1e3,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}},far:{min:0,max:2e4,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}})});this.camera instanceof h.PerspectiveCamera&&(t.guiParams.camera.fov={min:0,max:90,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}),t.showGui(e)}}const ae={background:null,om:!0};class ce{constructor(e){this.overrideMaterial=!1,this.options=e;const{camera:t,sceneParams:s}=e,{background:r,om:o}=s,n=o?new h.Scene:new Proxy(new h.Scene,{set:(i,a,l)=>Reflect.set(i,a,l),get:(i,a)=>{if(a==="overrideMaterial"){const l=Reflect.get(i,a);return this.overrideMaterial=!!l,L.meshLineMaterialArr.forEach(d=>{this.overrideMaterial?d.useDepth=1:d.useDepth=0}),null}return Reflect.get(i,a)}});r&&(n.background=r),n.add(t),this.scene=n}dispose(){var e;(e=this.scene)==null||e.traverse(t=>{Z.disposeMesh(t)}),L.meshLineMaterialArr.length=0}}class le{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{scene:s}=this.options;let r=this.helpers[t];if(r===void 0){if(e.isScene)r=new h.AxesHelper(100);else if(e.isCamera)r=new h.CameraHelper(e);else if(e.isPointLight)r=new h.PointLightHelper(e,1);else if(e.isDirectionalLight)r=new h.DirectionalLightHelper(e,1);else if(e.isSpotLight)r=new h.SpotLightHelper(e);else if(e.isHemisphereLight)r=new h.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)r=new J.RectAreaLightHelper(e);else{const o=new h.Box3;if(o.setFromObject(e,!0),o.isEmpty()===!1){r=new h.Box3Helper(o);const n=r.material;n.userData.object=e,n.depthTest=!1,n.transparent=!0}else return}s.add(r),this.helpers[t]=r}}remove(e){const t=e.uuid,{scene:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.remove(r),delete this.helpers[t],r instanceof h.Box3Helper&&r.dispose()}}removeAll(){Object.keys(this.helpers).forEach(e=>{this.remove({uuid:e})}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof h.AxesHelper||this.remove({uuid:e})})}update(){Object.values(this.helpers).forEach(e=>{if(e.update&&e.update(),e instanceof h.Box3Helper){const t=e.material,{object:s}=t.userData;s&&e.box.setFromObject(s,!0)}})}dispose(){this.helpers={}}}class he{constructor(e){this.autoRotateSpeed=0,this.options=e;const{camera:t,controlsParams:s,customControl:r}=e,{domElement:o}=s;if(r){const n=new r(t,o);n.enableDamping=!0,n.dampingFactor=.063,n.autoRotate=!1,n.autoRotateSpeed=-60,n.enableZoom=!0,n.zoomSpeed=.2,this.controls=n}else x.install({THREE:h}),this.cameraControls=new x(t,o)}addCameraControls2(e){const{controlsParams:t}=this.options,{domElement:s}=t;this.cameraControls2=new x(e,s)}enable(){this.controls?this.controls.enabled=!0:this.cameraControls&&(this.cameraControls.enabled=!0)}disable(){this.controls?this.controls.enabled=!1:this.cameraControls&&(this.cameraControls.enabled=!1)}update(e){var t,s,r;(t=this.controls)==null||t.update(),(s=this.cameraControls)==null||s.update(e),(r=this.cameraControls2)==null||r.update(e),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*h.MathUtils.DEG2RAD)}dispose(){var e,t,s;(e=this.controls)==null||e.dispose(),(t=this.cameraControls)==null||t.dispose(),(s=this.cameraControls2)==null||s.dispose()}}class de{constructor(e){this.event=new G.eventsExports.EventEmitter;const{renderer:t,scene:s,camera:r}=e,o=new K.TransformControls(r,t.domElement);s.add(o),this.controls=o,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 r=this.controls;r.addEventListener("change",()=>{const o=r.object;o!==void 0&&this.event.emit("change",o)}),r.addEventListener("mouseDown",()=>{const o=r.object;e=o.position.clone(),t=o.rotation.clone(),s=o.scale.clone(),this.event.emit("mouseDown",o)}),r.addEventListener("mouseUp",()=>{const o=r.object;if(o!==void 0)switch(r.getMode()){case"translate":e.equals(o.position)||this.event.emit("translate",o,o.position,e);break;case"rotate":t.equals(o.rotation)||this.event.emit("rotate",o,o.rotation,t);break;case"scale":s.equals(o.scale)||this.event.emit("scale",o,o.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const j={zIndex:"auto"};class me{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,r=s.offsetWidth,o=s.offsetHeight,n=e==="css2d"?new ee.CSS2DRenderer:new Q.CSS3DRenderer;n.domElement.style.position="absolute",n.domElement.style.top="0",n.domElement.style.pointerEvents="none",n.domElement.style.zIndex=t.zIndex,n.setSize(r,o),s.appendChild(n.domElement),e==="css2d"?this.css2Drenderer=n:e==="css3d"&&(this.css3Drenderer=n)}setSize(e,t){var s,r;(s=this.css2Drenderer)==null||s.setSize(e,t),(r=this.css3Drenderer)==null||r.setSize(e,t)}render(e,t){var s,r;(s=this.css2Drenderer)==null||s.render(e,t),(r=this.css3Drenderer)==null||r.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}}const V=["encodings_fragment","colorspace_fragment"];class pe extends S.ShaderMaterial{constructor(){super({uniforms:{inputBuffer:new S.Uniform(null),ratio:new S.Uniform(1)},fragmentShader:`
2
2
  uniform sampler2D inputBuffer;
3
3
  uniform float ratio;
4
4
  varying vec2 vUv;
@@ -6,7 +6,7 @@
6
6
  vec4 texel = texture2D(inputBuffer, vUv);
7
7
  gl_FragColor = texel * ratio;
8
8
  // Support automatic output encoding.
9
- #include <${+S.REVISION<154?q[0]:q[1]}>
9
+ #include <${+S.REVISION<154?V[0]:V[1]}>
10
10
 
11
11
  }
12
12
  `,vertexShader:`
@@ -15,4 +15,4 @@
15
15
  vUv = position.xy * 0.5 + 0.5;
16
16
  gl_Position = vec4(position.xy, 1.0, 1.0);
17
17
  }
18
- `,toneMapped:!1,depthWrite:!1,depthTest:!1})}}class ue extends p.Pass{constructor(){super("CrossFadePass"),this.fullscreenMaterial=new fe}render(e,t,s){const r=this.fullscreenMaterial;r.uniforms.inputBuffer.value=t.texture,e.setRenderTarget(this.renderToScreen?null:s),e.render(this.scene,this.camera)}}const I={luminancePass:!1,luminanceThreshold:.4,luminanceSmoothing:.3,mipmapBlur:!0,intensity:3,mipmapBlurPassRadius:.85,blendFunction:p.BlendFunction.ADD,ignoreBackground:!0,epsilon:.001},pe={mode:p.ToneMappingMode.REINHARD2_ADAPTIVE,resolution:256,whitePoint:16,middleGrey:.6,minLuminance:.01,averageLuminance:.01,adaptationRate:1};class ge{constructor(e){this.active=!0,this.options=e;const{renderer:t,scene:s,camera:r,composerParams:o}=e,{multisampling:n,frameBufferType:i}=o,{maxSamples:a}=t.capabilities,l=new p.EffectComposer(t,{multisampling:Math.min(n,a),frameBufferType:i});l.addPass(new p.RenderPass(s,r)),this.finalComposer=l,this.renderer=t,this.scene=s,this.camera=r}addCopyPass(){const e=new p.CopyPass;this.finalComposer.addPass(e),this.copyPass=e}addCrossFadePass(){const e=new ue;this.finalComposer.addPass(e),this.crossFadePass=e}addFXAAPass(){const{camera:e}=this,t=new p.FXAAEffect({blendFunction:p.BlendFunction.NORMAL}),s=new p.EffectPass(e,t);this.finalComposer.addPass(s),this.fxaaPass=s}addToneMappingPass(e){const{camera:t}=this,s=new p.ToneMappingEffect(v({},e));this.toneMappingEffect=s;const r=new p.EffectPass(t,s);this.finalComposer.addPass(r),this.toneMappingPass=r}addToneMappingGui(e){if(!this.toneMappingEffect)return;new x({toneMapping:{blendFunction:{value:this.toneMappingEffect.mode,items:p.ToneMappingMode,onChange:s=>{this.toneMappingEffect.mode=Number(s)}},exposure:{min:0,max:2,value:this.renderer.toneMappingExposure,step:.001,onChange:s=>{this.renderer.toneMappingExposure=s}}},"Reinhard (Modified)":{whitePoint:{min:2,max:32,step:.001,target:()=>this.toneMappingEffect},middleGrey:{min:0,max:1,step:1e-4,target:()=>this.toneMappingEffect},averageLuminance:{min:1e-4,max:1,step:1e-4,target:()=>this.toneMappingEffect}}}).showGui(e)}addBloomPass(e){const{camera:t,scene:s}=this,h=v(v({},I),e),{epsilon:r,ignoreBackground:o,mipmapBlurPassRadius:n}=h,i=z(h,["epsilon","ignoreBackground","mipmapBlurPassRadius"]),a=new p.SelectiveBloomEffect(s,t,v({},i));o&&(a.ignoreBackground=o),n&&(a.mipmapBlurPass.radius=n),a.depthMaskMaterial.epsilon=r,a.luminancePass.enabled=!1,a.luminancePass.enabled=e.luminancePass;const l=new p.EffectPass(t,a);this.finalComposer.addPass(l),this.bloomPass=l,this.bloomEffect=a}addBloomGui(e){if(!this.bloomEffect)return;new x({bloom:{intensity:{min:0,max:10,step:.01,target:()=>this.bloomEffect},radius:{min:0,max:1,step:.001,target:()=>this.bloomEffect.mipmapBlurPass},blendFunction:{value:this.bloomEffect.blendMode.blendFunction,items:p.BlendFunction,onChange:s=>{this.bloomEffect.blendMode.blendFunction=Number(s)}},ignoreBackground:{value:this.bloomEffect.ignoreBackground,onChange:s=>{this.bloomEffect.ignoreBackground=s}}},bloomLuminanceFilter:{enabled:{value:this.bloomEffect.luminancePass.enabled,onChange:s=>{this.bloomEffect.luminancePass.enabled=s}},threshold:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial},smoothing:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial}}}).showGui(e)}toggleBloomSelection(e,t){if(!this.bloomEffect||!this.bloomPass){console.warn("err:pencil.options.bloom");return}e?t===!0?this.bloomEffect.selection.add(e):t===!1?this.bloomEffect.selection.delete(e):this.bloomEffect.selection.toggle(e):this.bloomEffect.selection.clear()}getSize(){const{renderer:e}=this.options;return e.getSize(new d.Vector2)}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){this.finalComposer.setSize(e,t)}render(){this.active&&this.finalComposer.render()}dispose(){this.finalComposer.dispose()}}const Ce=()=>{try{const c=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&c.getContext("webgl2"))}catch(c){return!1}},w=!1,G=Ce()!==!1,D=class D{constructor(e,t){this.raycaster=new d.Raycaster,this.installPlugins=new Map,this.event=new H.eventsExports.EventEmitter,this.clock=new d.Clock,this.userData={},this.options=W(D.options,e,{isMergeableObject:te.isPlainObject}),this.event.setMaxListeners(1/0);const{container:s,stats:r,gui:o,resizeObserver:n}=this.options;if(o){const i=new $;i.open(!1),this.gui=i}if(r){const i=new X;i.showPanel(0),i.dom.style.position="absolute",s.appendChild(i.dom),this.stats=i}this.init(),this.initComposer(),this.initCSSRenderer(),this.initControls(),n&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime(),t&&(Array.isArray(t)||(t=[t]),t.forEach(i=>{Array.isArray(i)||(i=[i]),this.use(i[0],i[1])}))}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get cameraControls(){return this.controlsController.cameraControls}get cameraPositon(){return this.cameraControls.getPosition(new d.Vector3,!1)}get cameraTarget(){return this.cameraControls.getTarget(new d.Vector3,!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))}init(){const{container:e,isdev:t,helper:s,renderer:r,scene:o,camera:n,control:i}=this.options,{width:a,height:l}=this.getSize(),h=new ie({isdev:t,width:a,height:l,cameraParams:n,cameraControls:i===!0});this.gui&&h.setGui(this.gui);const m=h.camera,u=new le({camera:m,sceneParams:o}),g=u.scene,P=new oe({width:a,height:l,scene:g,camera:m,isdev:t,rendererParams:M(v({},r),{antialias:!1})});if(s){const f=new ce({scene:g});f.add(g),this.helperController=f}this.sceneController=u,this.rendererController=P,this.cameraController=h,e.appendChild(P.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,toneMapping:s,toneMappingParams:r,crossOpacity:o,renderer:n,multisampling:i,frameBufferType:a,passes:l}=this.options;let{antialias:h}=n;h==="msaa"&&!G&&(h=!1,console.warn("MSAA is not supported on this browser"));const m=new ge({renderer:this.renderer,scene:this.scene,camera:this.camera,composerParams:{multisampling:h==="msaa"?i:0,frameBufferType:s?d.HalfFloatType:a}});this.composerController=m,e&&(m.addBloomPass(t),this.gui&&m.addBloomGui(this.gui)),s&&(m.addToneMappingPass(r),this.gui&&m.addToneMappingGui(this.gui)),h==="fxaa"&&m.addFXAAPass(),o&&m.addCrossFadePass(),l&&l.forEach(u=>{m.finalComposer.addPass(u)}),m.finalComposer.passes.length===1&&m.addCopyPass()}get opacity(){const{crossFadePass:e}=this.composerController;return e?e.fullscreenMaterial.uniforms.ratio.value:1}set opacity(e){const{crossFadePass:t}=this.composerController;if(!t){console.warn("err:pencil.options.crossOpacity");return}t.fullscreenMaterial.uniforms.ratio.value=e}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:r,css3DRendererParams:o}=this.options;if(t||s){const n=new me(e);t&&n.addRenderer("css2d",r),s&&n.addRenderer("css3d",o),this.cssRendererController=n}}initControls(){const{control:e,controlParams:t,transformControls:s}=this.options;if(e){const r=new de({camera:this.camera,controlsParams:{domElement:(t==null?void 0:t.domElement)||this.renderer.domElement},customControl:typeof e=="boolean"?void 0:e});this.controlsController=r}if(s){const r=new he({camera:this.camera,renderer:this.renderer,scene:this.scene});r.event.on("mouseDown",()=>{var o;(o=this.controlsController)==null||o.disable()}),r.event.on("mouseUp",()=>{var o;(o=this.controlsController)==null||o.enable()}),this.transformController=r}}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 r of s){const o=r.contentRect;this.handeleResize(o.width,o.height),this.render()}});t.observe(e),this.resizeObserver=t}handeleResize(e,t,s=!0){const{rendererController:r,cameraController:o,composerController:n,cssRendererController:i}=this;o==null||o.setSize(e,t),r==null||r.setSize(e,t),n==null||n.setSize(e,t),i==null||i.setSize(e,t),this.installPlugins.forEach(a=>{var l;(l=a.setSize)==null||l.call(a,e,t)}),s&&this.event.emit("resize",{width:e,height:t})}pick(e,t,s=!1){const{raycaster:r,options:o}=this,{container:n}=o,i=new d.Vector2,a=n.getBoundingClientRect();if(i.x=(e.clientX-a.left)/(a.right-a.left)*2-1,i.y=-((e.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){r.setFromCamera(i,this.camera);const l=r.intersectObjects(t||this.scene.children,s);if(l.length)return{object:l[0].object,intersects:l}}}render(){var n,i,a,l,h,m;const{scene:e,camera:t,clock:s}=this,r=s.getDelta(),o=s.getElapsedTime();F.update(),(n=this.controlsController)==null||n.update(r),this.installPlugins.forEach(u=>{var g;(g=u.update)==null||g.call(u,r,o)}),(i=this.helperController)==null||i.update(),(a=this.composerController)!=null&&a.active?this.composerController.render():(l=this.rendererController)==null||l.render(),(h=this.cssRendererController)==null||h.render(e,t),(m=this.stats)==null||m.update(),this.event.emit("render",{delta:r,elapsed:o})}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}dispose(){var e,t,s,r,o,n,i,a,l,h,m;this.stop(),F.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.handeleResize(0,0),this.installPlugins.forEach(u=>{var g;(g=u.dispose)==null||g.call(u)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(r=this.cssRendererController)==null||r.dispose(),(o=this.sceneController)==null||o.dispose(),(n=this.helperController)==null||n.dispose(),(i=this.composerController)==null||i.dispose(),(a=this.rendererController)==null||a.dispose(),this.cssRendererController=void 0,(l=this.gui)==null||l.destroy(),this.installPlugins.clear(),(h=this.stats)==null||h.dom.remove(),(m=this.renderer)==null||m.domElement.remove()}};D.options={isdev:w,stats:w,gui:w,helper:w,control:!0,transformControls:w,resizeObserver:!0,renderer:M(v({},re),{antialias:G?"msaa":"fxaa"}),multisampling:4,frameBufferType:d.UnsignedByteType,scene:ae,camera:ne,bloom:!1,bloomParams:I,toneMapping:!1,toneMappingParams:pe,crossOpacity:!1,css2DRenderer:!1,css2DRendererParams:v({},j),css3DRenderer:!1,css3DRendererParams:v({},j)};let y=D;const ve=B.ACTION;exports.BaseObject=se.BaseObject;exports.GUIObject=x;exports.Pencil=y;exports.cameraControlsAction=ve;exports.default=y;
18
+ `,toneMapped:!1,depthWrite:!1,depthTest:!1})}}class fe extends u.Pass{constructor(){super("CrossFadePass"),this.fullscreenMaterial=new pe}render(e,t,s){const r=this.fullscreenMaterial;r.uniforms.inputBuffer.value=t.texture,e.setRenderTarget(this.renderToScreen?null:s),e.render(this.scene,this.camera)}}const k={luminancePass:!1,luminanceThreshold:.4,luminanceSmoothing:.3,mipmapBlur:!0,intensity:3,mipmapBlurPassRadius:.85,blendFunction:u.BlendFunction.ADD,ignoreBackground:!0,epsilon:.001},ue={mode:u.ToneMappingMode.REINHARD2_ADAPTIVE,resolution:256,whitePoint:16,middleGrey:.6,minLuminance:.01,averageLuminance:.01,adaptationRate:1};class ge{constructor(e){this.active=!0,this.options=e;const{renderer:t,scene:s,camera:r}=e;this.finalComposer=this.addFinalComposer(r),this.renderer=t,this.scene=s,this.camera=r}addFinalComposer(e){const{renderer:t,scene:s,composerParams:r}=this.options,{multisampling:o,frameBufferType:n}=r,{maxSamples:i}=t.capabilities,a=new u.EffectComposer(t,{multisampling:Math.min(o,i),frameBufferType:n});return a.addPass(new u.RenderPass(s,e)),a}addFinalComposer2(e){const t=this.addFinalComposer(e);this.finalComposer2=t}addCopyPass(){const e=new u.CopyPass;this.finalComposer.addPass(e),this.copyPass=e}addCrossFadePass(){const e=new fe;this.finalComposer.addPass(e),this.crossFadePass=e}addFXAAPass(){const{camera:e}=this,t=new u.FXAAEffect({blendFunction:u.BlendFunction.NORMAL}),s=new u.EffectPass(e,t);this.finalComposer.addPass(s),this.fxaaPass=s}addToneMappingPass(e){const{camera:t}=this,s=new u.ToneMappingEffect(v({},e));this.toneMappingEffect=s;const r=new u.EffectPass(t,s);this.finalComposer.addPass(r),this.toneMappingPass=r}addToneMappingGui(e){if(!this.toneMappingEffect)return;new y({toneMapping:{blendFunction:{value:this.toneMappingEffect.mode,items:u.ToneMappingMode,onChange:s=>{this.toneMappingEffect.mode=Number(s)}},exposure:{min:0,max:2,value:this.renderer.toneMappingExposure,step:.001,onChange:s=>{this.renderer.toneMappingExposure=s}}},"Reinhard (Modified)":{whitePoint:{min:2,max:32,step:.001,target:()=>this.toneMappingEffect},middleGrey:{min:0,max:1,step:1e-4,target:()=>this.toneMappingEffect},averageLuminance:{min:1e-4,max:1,step:1e-4,target:()=>this.toneMappingEffect}}}).showGui(e)}addBloomPass(e){const{camera:t,scene:s}=this,d=v(v({},k),e),{epsilon:r,ignoreBackground:o,mipmapBlurPassRadius:n}=d,i=T(d,["epsilon","ignoreBackground","mipmapBlurPassRadius"]),a=new u.SelectiveBloomEffect(s,t,v({},i));o&&(a.ignoreBackground=o),n&&(a.mipmapBlurPass.radius=n),a.depthMaskMaterial.epsilon=r,a.luminancePass.enabled=!1,a.luminancePass.enabled=e.luminancePass;const l=new u.EffectPass(t,a);this.finalComposer.addPass(l),this.bloomPass=l,this.bloomEffect=a}addBloomGui(e){if(!this.bloomEffect)return;new y({bloom:{intensity:{min:0,max:10,step:.01,target:()=>this.bloomEffect},radius:{min:0,max:1,step:.001,target:()=>this.bloomEffect.mipmapBlurPass},blendFunction:{value:this.bloomEffect.blendMode.blendFunction,items:u.BlendFunction,onChange:s=>{this.bloomEffect.blendMode.blendFunction=Number(s)}},ignoreBackground:{value:this.bloomEffect.ignoreBackground,onChange:s=>{this.bloomEffect.ignoreBackground=s}}},bloomLuminanceFilter:{enabled:{value:this.bloomEffect.luminancePass.enabled,onChange:s=>{this.bloomEffect.luminancePass.enabled=s}},threshold:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial},smoothing:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial}}}).showGui(e)}toggleBloomSelection(e,t){if(!this.bloomEffect||!this.bloomPass){console.warn("err:pencil.options.bloom");return}e?t===!0?this.bloomEffect.selection.add(e):t===!1?this.bloomEffect.selection.delete(e):this.bloomEffect.selection.toggle(e):this.bloomEffect.selection.clear()}getSize(){const{renderer:e}=this.options;return e.getSize(new h.Vector2)}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){var s;this.finalComposer.setSize(e,t),(s=this.finalComposer2)==null||s.setSize(e,t)}render(){this.active&&this.finalComposer.render()}render2(){var e;this.active&&((e=this.finalComposer2)==null||e.render())}dispose(){var e;this.finalComposer.dispose(),(e=this.finalComposer2)==null||e.dispose()}}const Ce=()=>{try{const c=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&c.getContext("webgl2"))}catch(c){return!1}},E=!1,q=Ce()!==!1,O=class O{constructor(e,t){this.raycaster=new h.Raycaster,this.installPlugins=new Map,this.event=new G.eventsExports.EventEmitter,this.clock=new h.Clock,this.userData={},this.mulitViewport=!1,this.options=W(O.options,e,{isMergeableObject:te.isPlainObject}),this.event.setMaxListeners(1/0);const{container:s,stats:r,gui:o,resizeObserver:n}=this.options;if(o){const i=new $;i.open(!1),this.gui=i}if(r){const i=new X;i.showPanel(0),i.dom.style.position="absolute",s.appendChild(i.dom),this.stats=i}this.init(),this.initComposer(),this.initCSSRenderer(),this.initControls(),n&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime(),t&&(Array.isArray(t)||(t=[t]),t.forEach(i=>{Array.isArray(i)||(i=[i]),this.use(i[0],i[1])}))}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get cameraControls(){return this.controlsController.cameraControls}get cameraPositon(){return this.cameraControls.getPosition(new h.Vector3,!1)}get cameraTarget(){return this.cameraControls.getTarget(new h.Vector3,!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))}init(){const{container:e,isdev:t,helper:s,renderer:r,scene:o,camera:n,control:i}=this.options,{width:a,height:l}=this.getSize(),d=new ie({isdev:t,width:a,height:l,cameraParams:n,cameraControls:i===!0});this.gui&&d.setGui(this.gui);const m=d.camera,f=new ce({camera:m,sceneParams:o}),g=f.scene,P=new oe({width:a,height:l,scene:g,camera:m,isdev:t,rendererParams:R(v({},r),{antialias:!1})});if(s){const p=new le({scene:g});p.add(g),this.helperController=p}this.sceneController=f,this.rendererController=P,this.cameraController=d,e.appendChild(P.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,toneMapping:s,toneMappingParams:r,crossOpacity:o,renderer:n,multisampling:i,frameBufferType:a,passes:l}=this.options;let{antialias:d}=n;d==="msaa"&&!q&&(d=!1,console.warn("MSAA is not supported on this browser"));const m=new ge({renderer:this.renderer,scene:this.scene,camera:this.camera,composerParams:{multisampling:d==="msaa"?i:0,frameBufferType:s?h.HalfFloatType:a}});this.composerController=m,e&&(m.addBloomPass(t),this.gui&&m.addBloomGui(this.gui)),s&&(m.addToneMappingPass(r),this.gui&&m.addToneMappingGui(this.gui)),d==="fxaa"&&m.addFXAAPass(),o&&m.addCrossFadePass(),l&&l.forEach(f=>{m.finalComposer.addPass(f)}),m.finalComposer.passes.length===1&&m.addCopyPass()}get opacity(){const{crossFadePass:e}=this.composerController;return e?e.fullscreenMaterial.uniforms.ratio.value:1}set opacity(e){const{crossFadePass:t}=this.composerController;if(!t){console.warn("err:pencil.options.crossOpacity");return}t.fullscreenMaterial.uniforms.ratio.value=e}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:r,css3DRendererParams:o}=this.options;if(t||s){const n=new me(e);t&&n.addRenderer("css2d",r),s&&n.addRenderer("css3d",o),this.cssRendererController=n}}initControls(){const{control:e,controlParams:t,transformControls:s}=this.options;if(e){const r=new he({camera:this.camera,controlsParams:{domElement:(t==null?void 0:t.domElement)||this.renderer.domElement},customControl:typeof e=="boolean"?void 0:e});this.controlsController=r}if(s){const r=new de({camera:this.camera,renderer:this.renderer,scene:this.scene});r.event.on("mouseDown",()=>{var o;(o=this.controlsController)==null||o.disable()}),r.event.on("mouseUp",()=>{var o;(o=this.controlsController)==null||o.enable()}),this.transformController=r}}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 r of s){const o=r.contentRect;this.handeleResize(o.width,o.height),this.render()}});t.observe(e),this.resizeObserver=t}handeleResize(e,t,s=!0){const{rendererController:r,cameraController:o,composerController:n,cssRendererController:i}=this;o==null||o.setSize(e,t),r==null||r.setSize(e,t),n==null||n.setSize(e,t),i==null||i.setSize(e,t),this.installPlugins.forEach(a=>{var l;(l=a.setSize)==null||l.call(a,e,t)}),s&&this.event.emit("resize",{width:e,height:t})}pick(e,t,s=!1){const{raycaster:r,options:o}=this,{container:n}=o,i=new h.Vector2,a=n.getBoundingClientRect();if(i.x=(e.clientX-a.left)/(a.right-a.left)*2-1,i.y=-((e.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){r.setFromCamera(i,this.camera);const l=r.intersectObjects(t||this.scene.children,s);if(l.length)return{object:l[0].object,intersects:l}}}render(){var n,i,a,l,d,m;const{scene:e,camera:t,clock:s}=this,r=s.getDelta(),o=s.getElapsedTime();F.update(),(n=this.controlsController)==null||n.update(r),this.installPlugins.forEach(f=>{var g;(g=f.update)==null||g.call(f,r,o)}),(i=this.helperController)==null||i.update(),(a=this.composerController)!=null&&a.active?this.mulitViewport?(this.setViewportLeft(),this.composerController.render(),this.setViewportRight(),this.composerController.render2()):this.composerController.render():(l=this.rendererController)==null||l.render(),(d=this.cssRendererController)==null||d.render(e,t),(m=this.stats)==null||m.update(),this.event.emit("render",{delta:r,elapsed:o})}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}setMulitViewport(e){if(this.mulitViewport=e,e){if(!this.controlsController.cameraControls2){const t=this.cameraController.addCamera2();this.composerController.addFinalComposer2(t),this.controlsController.addCameraControls2(t)}this.controlsController.cameraControls.interactiveArea=new DOMRect(0,0,.5,1),this.controlsController.cameraControls2.interactiveArea=new DOMRect(.5,0,.5,1)}else e||(this.controlsController.cameraControls2&&(this.controlsController.cameraControls2.interactiveArea=new DOMRect(0,0,1,1)),this.setViewportFull())}setViewportFull(){const e=this.getSize(),t=0,s=0,r=e.width,o=e.height,n=r/o;this.camera.aspect!==n&&(this.camera.aspect=n,this.camera.updateProjectionMatrix()),this.renderer.setViewport(t,s,r,o),this.renderer.setScissor(t,s,r,o),this.renderer.setScissorTest(!0)}setViewportLeft(){const e=this.getSize(),t=0,s=0,r=e.width/2,o=e.height,n=r/o;this.camera.aspect!==n&&(this.camera.aspect=n,this.camera.updateProjectionMatrix()),this.renderer.setViewport(t,s,r,o),this.renderer.setScissor(t,s,r,o),this.renderer.setScissorTest(!0)}setViewportRight(){const e=this.getSize(),t=e.width/2,s=0,r=e.width/2,o=e.height,n=r/o,i=this.cameraController.camera2;i&&i.aspect!==n&&(i.aspect=n,i.updateProjectionMatrix()),this.renderer.setViewport(t,s,r,o),this.renderer.setScissor(t,s,r,o),this.renderer.setScissorTest(!0)}dispose(){var e,t,s,r,o,n,i,a,l,d,m;this.stop(),F.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.handeleResize(0,0),this.installPlugins.forEach(f=>{var g;(g=f.dispose)==null||g.call(f)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(r=this.cssRendererController)==null||r.dispose(),(o=this.sceneController)==null||o.dispose(),(n=this.helperController)==null||n.dispose(),(i=this.composerController)==null||i.dispose(),(a=this.rendererController)==null||a.dispose(),this.cssRendererController=void 0,(l=this.gui)==null||l.destroy(),this.installPlugins.clear(),(d=this.stats)==null||d.dom.remove(),(m=this.renderer)==null||m.domElement.remove()}};O.options={isdev:E,stats:E,gui:E,helper:E,control:!0,transformControls:E,resizeObserver:!0,renderer:R(v({},re),{antialias:q?"msaa":"fxaa"}),multisampling:4,frameBufferType:h.UnsignedByteType,scene:ae,camera:ne,bloom:!1,bloomParams:k,toneMapping:!1,toneMappingParams:ue,crossOpacity:!1,css2DRenderer:!1,css2DRendererParams:v({},j),css3DRenderer:!1,css3DRendererParams:v({},j)};let D=O;const ve=x.ACTION;exports.BaseObject=se.BaseObject;exports.GUIObject=y;exports.Pencil=D;exports.cameraControlsAction=ve;exports.default=D;