@shopware-ag/dive 2.0.1-beta.4 → 2.0.1-beta.6
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/build/chunks/ARSystem-D27w7Pck.mjs +208 -0
- package/build/chunks/ARSystem-_0cLAxyG.cjs +1 -0
- package/build/{src/modules/animation/AnimationSystem.mjs → chunks/AnimationSystem-Bf-xhqRe.mjs} +24 -18
- package/build/chunks/AnimationSystem-DFUYMNpj.cjs +1 -0
- package/build/{src/modules/asset/exporter/AssetExporter.cjs → chunks/AssetExporter-CAqADFbL.cjs} +1 -1
- package/build/{src/modules/asset/exporter/AssetExporter.mjs → chunks/AssetExporter-ClYQ4gnb.mjs} +2 -2
- package/build/{src/modules/asset/loader/AssetLoader.mjs → chunks/AssetLoader-BewzFwHi.mjs} +6 -6
- package/build/chunks/AssetLoader-Bq-Ekxil.cjs +4 -0
- package/build/chunks/AxisCamera-CUb3g8WX.cjs +1 -0
- package/build/chunks/AxisCamera-lXJLIPLK.mjs +39 -0
- package/build/chunks/AxisHelperColors-BrGqktN5.cjs +1 -0
- package/build/chunks/AxisHelperColors-JLBHYQDi.mjs +9 -0
- package/build/chunks/MediaCreator-CEWeS42n.cjs +1 -0
- package/build/{src/modules/mediacreator/MediaCreator.mjs → chunks/MediaCreator-psLAAyJA.mjs} +1 -1
- package/build/chunks/ModuleRegistry-CBfx1EVd.mjs +13 -0
- package/build/chunks/ModuleRegistry-CDIxOzgZ.cjs +1 -0
- package/build/chunks/OrbitController-B8VkQV1e.cjs +1 -0
- package/build/chunks/OrbitController-CXu1ko6E.mjs +462 -0
- package/build/chunks/{PerspectiveCamera-sm4_81KJ.mjs → PerspectiveCamera-PMJPzAn3.mjs} +2 -2
- package/build/chunks/SelectTool-9eiKZXT4.cjs +1 -0
- package/build/chunks/{SelectTool-DmuTopJx.mjs → SelectTool-DLXheZay.mjs} +23 -18
- package/build/{src/modules/state/State.mjs → chunks/State-BNgqNPrs.mjs} +2 -2
- package/build/{src/modules/state/State.cjs → chunks/State-Mvu0hG-n.cjs} +1 -1
- package/build/{src/modules/toolbox/Toolbox.mjs → chunks/Toolbox-DKuyL8n5.mjs} +1 -1
- package/build/chunks/Toolbox-qFN47t2F.cjs +1 -0
- package/build/chunks/findInterface-C6mrvf_t.cjs +1 -0
- package/build/chunks/findInterface-DbJ5qzbc.mjs +11 -0
- package/build/chunks/index-C_uFFwT2.mjs +5 -0
- package/build/chunks/index-DAwIH9xh.cjs +1 -0
- package/build/chunks/package-CHgGmFCa.cjs +1 -0
- package/build/chunks/package-CIkS9WF6.mjs +39 -0
- package/build/dive.cjs +2 -2
- package/build/dive.mjs +597 -1074
- package/build/modules/animation/index.cjs +1 -0
- package/build/modules/animation/index.d.ts +2 -0
- package/build/modules/animation/index.mjs +5 -0
- package/build/modules/ar/index.cjs +1 -0
- package/build/modules/ar/index.d.ts +2 -0
- package/build/modules/ar/index.mjs +11 -0
- package/build/modules/assetconverter/index.cjs +1 -0
- package/build/modules/assetconverter/index.d.ts +2 -0
- package/build/modules/assetconverter/index.mjs +4 -0
- package/build/modules/assetexporter/index.cjs +1 -0
- package/build/modules/assetexporter/index.d.ts +2 -0
- package/build/modules/assetexporter/index.mjs +4 -0
- package/build/modules/assetloader/index.cjs +1 -0
- package/build/modules/assetloader/index.d.ts +2 -0
- package/build/modules/assetloader/index.mjs +4 -0
- package/build/modules/axiscamera/index.cjs +1 -0
- package/build/modules/axiscamera/index.d.ts +2 -0
- package/build/modules/axiscamera/index.mjs +4 -0
- package/build/modules/controller/index.cjs +1 -0
- package/build/modules/controller/index.d.ts +2 -0
- package/build/modules/controller/index.mjs +5 -0
- package/build/modules/mediacreator/index.cjs +1 -0
- package/build/modules/mediacreator/index.d.ts +2 -0
- package/build/modules/mediacreator/index.mjs +4 -0
- package/build/modules/state/index.cjs +1 -0
- package/build/modules/state/index.d.ts +2 -0
- package/build/modules/state/index.mjs +39 -0
- package/build/modules/systeminfo/index.cjs +1 -0
- package/build/modules/systeminfo/index.d.ts +2 -0
- package/build/{src/modules/systeminfo/SystemInfo.mjs → modules/systeminfo/index.mjs} +48 -27
- package/build/modules/toolbox/index.cjs +1 -0
- package/build/modules/toolbox/index.d.ts +2 -0
- package/build/modules/toolbox/index.mjs +10 -0
- package/build/src/components/node/Node.d.ts +3 -3
- package/build/src/core/Dive.d.ts +1 -0
- package/build/src/engine/index.d.ts +6 -0
- package/build/src/engine/renderer/Renderer.d.ts +47 -7
- package/build/src/events/index.d.ts +1 -0
- package/build/src/index.d.ts +2 -1
- package/build/src/modules/ModuleRegistry.d.ts +3 -3
- package/build/src/modules/animation/index.d.ts +2 -0
- package/build/src/modules/ar/ARSystem.d.ts +0 -20
- package/build/src/modules/ar/arquicklook/ARQuickLook.d.ts +8 -0
- package/build/src/modules/ar/error/ar-errors.d.ts +18 -0
- package/build/src/modules/ar/index.d.ts +4 -0
- package/build/src/modules/ar/sceneviewer/SceneViewer.d.ts +10 -0
- package/build/src/modules/ar/webxr/raycaster/WebXRRaycaster.d.ts +1 -1
- package/build/src/modules/ar/webxr/touchscreencontrols/WebXRTouchscreenControls.d.ts +1 -1
- package/build/src/modules/{asset/converter → assetconverter}/AssetConverter.d.ts +3 -3
- package/build/src/modules/assetconverter/index.d.ts +1 -0
- package/build/src/modules/{asset/exporter → assetexporter}/AssetExporter.d.ts +1 -1
- package/build/src/modules/assetexporter/index.d.ts +1 -0
- package/build/src/modules/assetloader/index.d.ts +1 -0
- package/build/src/modules/axiscamera/index.d.ts +1 -0
- package/build/src/modules/controller/index.d.ts +1 -0
- package/build/src/modules/mediacreator/index.d.ts +1 -0
- package/build/src/modules/state/index.d.ts +4 -0
- package/build/src/modules/state/types/ActionTypes.d.ts +1 -1
- package/build/src/modules/systeminfo/SystemInfo.d.ts +21 -0
- package/build/src/modules/systeminfo/index.d.ts +1 -0
- package/build/src/modules/toolbox/index.d.ts +4 -0
- package/build/src/modules/toolbox/select/SelectTool.d.ts +0 -3
- package/build/src/modules/toolbox/transform/TransformTool.d.ts +0 -3
- package/package.json +47 -37
- package/build/chunks/ModuleRegistry-NyNtjHb2.cjs +0 -1
- package/build/chunks/ModuleRegistry-RSub8W0G.mjs +0 -13
- package/build/chunks/SelectTool-C7nerV4P.cjs +0 -1
- package/build/chunks/findInterface-BEdL2iUQ.cjs +0 -1
- package/build/chunks/findInterface-OrXgmwxj.mjs +0 -18
- package/build/chunks/index-C7Wx_9uY.mjs +0 -33
- package/build/chunks/index-MNP0K5dt.cjs +0 -1
- package/build/chunks/package-GVEz369Q.mjs +0 -39
- package/build/chunks/package-HZE1xDCC.cjs +0 -1
- package/build/src/error/ar-compatibility/ar-compatibility-error.d.ts +0 -12
- package/build/src/modules/animation/AnimationSystem.cjs +0 -1
- package/build/src/modules/ar/ARSystem.cjs +0 -1
- package/build/src/modules/ar/ARSystem.mjs +0 -163
- package/build/src/modules/asset/loader/AssetLoader.cjs +0 -4
- package/build/src/modules/mediacreator/MediaCreator.cjs +0 -1
- package/build/src/modules/systeminfo/SystemInfo.cjs +0 -1
- package/build/src/modules/toolbox/Toolbox.cjs +0 -1
- /package/build/{src/modules/asset/converter/AssetConverter.cjs → chunks/AssetConverter-BTAb23e8.cjs} +0 -0
- /package/build/{src/modules/asset/converter/AssetConverter.mjs → chunks/AssetConverter-D-qOTLs1.mjs} +0 -0
- /package/build/src/{modules/events → events}/EventExecutor.d.ts +0 -0
- /package/build/src/modules/{asset/loader → assetloader}/AssetLoader.d.ts +0 -0
- /package/build/src/modules/{asset → assetloader}/draco/DracoLoader.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var Xe=Object.defineProperty;var We=(j,p,u)=>p in j?Xe(j,p,{enumerable:!0,configurable:!0,writable:!0,value:u}):j[p]=u;var X=(j,p,u)=>We(j,typeof p!="symbol"?p+"":p,u);const n=require("three"),Me={type:"change"},ee={type:"start"},De={type:"end"},W=new n.Ray,we=new n.Plane,Be=Math.cos(70*n.MathUtils.DEG2RAD);class qe extends n.EventDispatcher{constructor(p,u){super(),this.object=p,this.domElement=u,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new n.Vector3,this.cursor=new n.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:n.MOUSE.ROTATE,MIDDLE:n.MOUSE.DOLLY,RIGHT:n.MOUSE.PAN},this.touches={ONE:n.TOUCH.ROTATE,TWO:n.TOUCH.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return r.phi},this.getAzimuthalAngle=function(){return r.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(t){t.addEventListener("keydown",$),this._domElementKeyEvents=t},this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",$),this._domElementKeyEvents=null},this.saveState=function(){e.target0.copy(e.target),e.position0.copy(e.object.position),e.zoom0=e.object.zoom},this.reset=function(){e.target.copy(e.target0),e.object.position.copy(e.position0),e.object.zoom=e.zoom0,e.object.updateProjectionMatrix(),e.dispatchEvent(Me),e.update(),s=a.NONE},this.update=function(){const t=new n.Vector3,o=new n.Quaternion().setFromUnitVectors(p.up,new n.Vector3(0,1,0)),i=o.clone().invert(),c=new n.Vector3,m=new n.Quaternion,E=new n.Vector3,d=2*Math.PI;return function(Ze=null){const Oe=e.object.position;t.copy(Oe).sub(e.target),t.applyQuaternion(o),r.setFromVector3(t),e.autoRotate&&s===a.NONE&&I(je(Ze)),e.enableDamping?(r.theta+=h.theta*e.dampingFactor,r.phi+=h.phi*e.dampingFactor):(r.theta+=h.theta,r.phi+=h.phi);let f=e.minAzimuthAngle,b=e.maxAzimuthAngle;isFinite(f)&&isFinite(b)&&(f<-Math.PI?f+=d:f>Math.PI&&(f-=d),b<-Math.PI?b+=d:b>Math.PI&&(b-=d),f<=b?r.theta=Math.max(f,Math.min(b,r.theta)):r.theta=r.theta>(f+b)/2?Math.max(f,r.theta):Math.min(b,r.theta)),r.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,r.phi)),r.makeSafe(),e.enableDamping===!0?e.target.addScaledVector(A,e.dampingFactor):e.target.add(A),e.target.sub(e.cursor),e.target.clampLength(e.minTargetRadius,e.maxTargetRadius),e.target.add(e.cursor);let z=!1;if(e.zoomToCursor&&H||e.object.isOrthographicCamera)r.radius=v(r.radius);else{const g=r.radius;r.radius=v(r.radius*T),z=g!=r.radius}if(t.setFromSpherical(r),t.applyQuaternion(i),Oe.copy(e.target).add(t),e.object.lookAt(e.target),e.enableDamping===!0?(h.theta*=1-e.dampingFactor,h.phi*=1-e.dampingFactor,A.multiplyScalar(1-e.dampingFactor)):(h.set(0,0,0),A.set(0,0,0)),e.zoomToCursor&&H){let g=null;if(e.object.isPerspectiveCamera){const U=t.length();g=v(U*T);const Z=U-g;e.object.position.addScaledVector(oe,Z),e.object.updateMatrixWorld(),z=!!Z}else if(e.object.isOrthographicCamera){const U=new n.Vector3(y.x,y.y,0);U.unproject(e.object);const Z=e.object.zoom;e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/T)),e.object.updateProjectionMatrix(),z=Z!==e.object.zoom;const Pe=new n.Vector3(y.x,y.y,0);Pe.unproject(e.object),e.object.position.sub(Pe).add(U),e.object.updateMatrixWorld(),g=t.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),e.zoomToCursor=!1;g!==null&&(this.screenSpacePanning?e.target.set(0,0,-1).transformDirection(e.object.matrix).multiplyScalar(g).add(e.object.position):(W.origin.copy(e.object.position),W.direction.set(0,0,-1).transformDirection(e.object.matrix),Math.abs(e.object.up.dot(W.direction))<Be?p.lookAt(e.target):(we.setFromNormalAndCoplanarPoint(e.object.up,e.target),W.intersectPlane(we,e.target))))}else if(e.object.isOrthographicCamera){const g=e.object.zoom;e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/T)),g!==e.object.zoom&&(e.object.updateProjectionMatrix(),z=!0)}return T=1,H=!1,z||c.distanceToSquared(e.object.position)>_||8*(1-m.dot(e.object.quaternion))>_||E.distanceToSquared(e.target)>_?(e.dispatchEvent(Me),c.copy(e.object.position),m.copy(e.object.quaternion),E.copy(e.target),!0):!1}}(),this.dispose=function(){e.domElement.removeEventListener("contextmenu",Ee),e.domElement.removeEventListener("pointerdown",he),e.domElement.removeEventListener("pointercancel",Y),e.domElement.removeEventListener("wheel",fe),e.domElement.removeEventListener("pointermove",J),e.domElement.removeEventListener("pointerup",Y),e.domElement.getRootNode().removeEventListener("keydown",be,{capture:!0}),e._domElementKeyEvents!==null&&(e._domElementKeyEvents.removeEventListener("keydown",$),e._domElementKeyEvents=null)};const e=this,a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let s=a.NONE;const _=1e-6,r=new n.Spherical,h=new n.Spherical;let T=1;const A=new n.Vector3,O=new n.Vector2,P=new n.Vector2,x=new n.Vector2,M=new n.Vector2,D=new n.Vector2,L=new n.Vector2,S=new n.Vector2,R=new n.Vector2,w=new n.Vector2,oe=new n.Vector3,y=new n.Vector2;let H=!1;const l=[],N={};let q=!1;function je(t){return t!==null?2*Math.PI/60*e.autoRotateSpeed*t:2*Math.PI/60/60*e.autoRotateSpeed}function F(t){const o=Math.abs(t*.01);return Math.pow(.95,e.zoomSpeed*o)}function I(t){h.theta-=t}function K(t){h.phi-=t}const ne=function(){const t=new n.Vector3;return function(i,c){t.setFromMatrixColumn(c,0),t.multiplyScalar(-i),A.add(t)}}(),ae=function(){const t=new n.Vector3;return function(i,c){e.screenSpacePanning===!0?t.setFromMatrixColumn(c,1):(t.setFromMatrixColumn(c,0),t.crossVectors(e.object.up,t)),t.multiplyScalar(i),A.add(t)}}(),C=function(){const t=new n.Vector3;return function(i,c){const m=e.domElement;if(e.object.isPerspectiveCamera){const E=e.object.position;t.copy(E).sub(e.target);let d=t.length();d*=Math.tan(e.object.fov/2*Math.PI/180),ne(2*i*d/m.clientHeight,e.object.matrix),ae(2*c*d/m.clientHeight,e.object.matrix)}else e.object.isOrthographicCamera?(ne(i*(e.object.right-e.object.left)/e.object.zoom/m.clientWidth,e.object.matrix),ae(c*(e.object.top-e.object.bottom)/e.object.zoom/m.clientHeight,e.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1)}}();function G(t){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?T/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function ie(t){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?T*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function Q(t,o){if(!e.zoomToCursor)return;H=!0;const i=e.domElement.getBoundingClientRect(),c=t-i.left,m=o-i.top,E=i.width,d=i.height;y.x=c/E*2-1,y.y=-(m/d)*2+1,oe.set(y.x,y.y,1).unproject(e.object).sub(e.object.position).normalize()}function v(t){return Math.max(e.minDistance,Math.min(e.maxDistance,t))}function se(t){O.set(t.clientX,t.clientY)}function Ae(t){Q(t.clientX,t.clientX),S.set(t.clientX,t.clientY)}function ce(t){M.set(t.clientX,t.clientY)}function xe(t){P.set(t.clientX,t.clientY),x.subVectors(P,O).multiplyScalar(e.rotateSpeed);const o=e.domElement;I(2*Math.PI*x.x/o.clientHeight),K(2*Math.PI*x.y/o.clientHeight),O.copy(P),e.update()}function Le(t){R.set(t.clientX,t.clientY),w.subVectors(R,S),w.y>0?G(F(w.y)):w.y<0&&ie(F(w.y)),S.copy(R),e.update()}function Se(t){D.set(t.clientX,t.clientY),L.subVectors(D,M).multiplyScalar(e.panSpeed),C(L.x,L.y),M.copy(D),e.update()}function Re(t){Q(t.clientX,t.clientY),t.deltaY<0?ie(F(t.deltaY)):t.deltaY>0&&G(F(t.deltaY)),e.update()}function Ce(t){let o=!1;switch(t.code){case e.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?K(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):C(0,e.keyPanSpeed),o=!0;break;case e.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?K(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):C(0,-e.keyPanSpeed),o=!0;break;case e.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?I(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):C(e.keyPanSpeed,0),o=!0;break;case e.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?I(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):C(-e.keyPanSpeed,0),o=!0;break}o&&(t.preventDefault(),e.update())}function re(t){if(l.length===1)O.set(t.pageX,t.pageY);else{const o=k(t),i=.5*(t.pageX+o.x),c=.5*(t.pageY+o.y);O.set(i,c)}}function le(t){if(l.length===1)M.set(t.pageX,t.pageY);else{const o=k(t),i=.5*(t.pageX+o.x),c=.5*(t.pageY+o.y);M.set(i,c)}}function ue(t){const o=k(t),i=t.pageX-o.x,c=t.pageY-o.y,m=Math.sqrt(i*i+c*c);S.set(0,m)}function ke(t){e.enableZoom&&ue(t),e.enablePan&&le(t)}function Ne(t){e.enableZoom&&ue(t),e.enableRotate&&re(t)}function me(t){if(l.length==1)P.set(t.pageX,t.pageY);else{const i=k(t),c=.5*(t.pageX+i.x),m=.5*(t.pageY+i.y);P.set(c,m)}x.subVectors(P,O).multiplyScalar(e.rotateSpeed);const o=e.domElement;I(2*Math.PI*x.x/o.clientHeight),K(2*Math.PI*x.y/o.clientHeight),O.copy(P)}function pe(t){if(l.length===1)D.set(t.pageX,t.pageY);else{const o=k(t),i=.5*(t.pageX+o.x),c=.5*(t.pageY+o.y);D.set(i,c)}L.subVectors(D,M).multiplyScalar(e.panSpeed),C(L.x,L.y),M.copy(D)}function de(t){const o=k(t),i=t.pageX-o.x,c=t.pageY-o.y,m=Math.sqrt(i*i+c*c);R.set(0,m),w.set(0,Math.pow(R.y/S.y,e.zoomSpeed)),G(w.y),S.copy(R);const E=(t.pageX+o.x)*.5,d=(t.pageY+o.y)*.5;Q(E,d)}function Ie(t){e.enableZoom&&de(t),e.enablePan&&pe(t)}function Ye(t){e.enableZoom&&de(t),e.enableRotate&&me(t)}function he(t){e.enabled!==!1&&(l.length===0&&(e.domElement.setPointerCapture(t.pointerId),e.domElement.addEventListener("pointermove",J),e.domElement.addEventListener("pointerup",Y)),!Ke(t)&&(He(t),t.pointerType==="touch"?ye(t):ze(t)))}function J(t){e.enabled!==!1&&(t.pointerType==="touch"?_e(t):Ue(t))}function Y(t){switch(Fe(t),l.length){case 0:e.domElement.releasePointerCapture(t.pointerId),e.domElement.removeEventListener("pointermove",J),e.domElement.removeEventListener("pointerup",Y),e.dispatchEvent(De),s=a.NONE;break;case 1:const o=l[0],i=N[o];ye({pointerId:o,pageX:i.x,pageY:i.y});break}}function ze(t){let o;switch(t.button){case 0:o=e.mouseButtons.LEFT;break;case 1:o=e.mouseButtons.MIDDLE;break;case 2:o=e.mouseButtons.RIGHT;break;default:o=-1}switch(o){case n.MOUSE.DOLLY:if(e.enableZoom===!1)return;Ae(t),s=a.DOLLY;break;case n.MOUSE.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enablePan===!1)return;ce(t),s=a.PAN}else{if(e.enableRotate===!1)return;se(t),s=a.ROTATE}break;case n.MOUSE.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enableRotate===!1)return;se(t),s=a.ROTATE}else{if(e.enablePan===!1)return;ce(t),s=a.PAN}break;default:s=a.NONE}s!==a.NONE&&e.dispatchEvent(ee)}function Ue(t){switch(s){case a.ROTATE:if(e.enableRotate===!1)return;xe(t);break;case a.DOLLY:if(e.enableZoom===!1)return;Le(t);break;case a.PAN:if(e.enablePan===!1)return;Se(t);break}}function fe(t){e.enabled===!1||e.enableZoom===!1||s!==a.NONE||(t.preventDefault(),e.dispatchEvent(ee),Re(Ve(t)),e.dispatchEvent(De))}function Ve(t){const o=t.deltaMode,i={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(o){case 1:i.deltaY*=16;break;case 2:i.deltaY*=100;break}return t.ctrlKey&&!q&&(i.deltaY*=10),i}function be(t){t.key==="Control"&&(q=!0,e.domElement.getRootNode().addEventListener("keyup",ge,{passive:!0,capture:!0}))}function ge(t){t.key==="Control"&&(q=!1,e.domElement.getRootNode().removeEventListener("keyup",ge,{passive:!0,capture:!0}))}function $(t){e.enabled===!1||e.enablePan===!1||Ce(t)}function ye(t){switch(Te(t),l.length){case 1:switch(e.touches.ONE){case n.TOUCH.ROTATE:if(e.enableRotate===!1)return;re(t),s=a.TOUCH_ROTATE;break;case n.TOUCH.PAN:if(e.enablePan===!1)return;le(t),s=a.TOUCH_PAN;break;default:s=a.NONE}break;case 2:switch(e.touches.TWO){case n.TOUCH.DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;ke(t),s=a.TOUCH_DOLLY_PAN;break;case n.TOUCH.DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;Ne(t),s=a.TOUCH_DOLLY_ROTATE;break;default:s=a.NONE}break;default:s=a.NONE}s!==a.NONE&&e.dispatchEvent(ee)}function _e(t){switch(Te(t),s){case a.TOUCH_ROTATE:if(e.enableRotate===!1)return;me(t),e.update();break;case a.TOUCH_PAN:if(e.enablePan===!1)return;pe(t),e.update();break;case a.TOUCH_DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;Ie(t),e.update();break;case a.TOUCH_DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;Ye(t),e.update();break;default:s=a.NONE}}function Ee(t){e.enabled!==!1&&t.preventDefault()}function He(t){l.push(t.pointerId)}function Fe(t){delete N[t.pointerId];for(let o=0;o<l.length;o++)if(l[o]==t.pointerId){l.splice(o,1);return}}function Ke(t){for(let o=0;o<l.length;o++)if(l[o]==t.pointerId)return!0;return!1}function Te(t){let o=N[t.pointerId];o===void 0&&(o=new n.Vector2,N[t.pointerId]=o),o.set(t.pageX,t.pageY)}function k(t){const o=t.pointerId===l[0]?l[1]:l[0];return N[o]}e.domElement.addEventListener("contextmenu",Ee),e.domElement.addEventListener("pointerdown",he),e.domElement.addEventListener("pointercancel",Y),e.domElement.addEventListener("wheel",fe,{passive:!1}),e.domElement.getRootNode().addEventListener("keydown",be,{passive:!0,capture:!0}),this.update()}}const B={enableDamping:!0,dampingFactor:.05},V=class V extends qe{constructor(u,e,a=B){super(u,e);X(this,"uuid",n.MathUtils.generateUUID());X(this,"object");this.domElement=e,this.domElement=e,this.object=u,this.enableDamping=a.enableDamping??B.enableDamping,this.dampingFactor=a.dampingFactor??B.dampingFactor,this.object.position.set(0,2,2),this.target.copy({x:0,y:.5,z:0}),this.update()}tick(){this.enabled&&this.update()}computeEncompassingView(u){const e=u.getCenter(new n.Vector3),a=u.getSize(new n.Vector3),s=Math.max(a.x,a.y,a.z)*1.25;return{position:this.object.position.clone().normalize().clone().multiplyScalar(s),target:e.clone()}}zoomIn(u){const e=u||V.DEFAULT_ZOOM_FACTOR,{minDistance:a,maxDistance:s}=this;this.minDistance=this.maxDistance=n.MathUtils.clamp(this.getDistance()-e,a+e,s-e),this.update(),this.minDistance=a,this.maxDistance=s}zoomOut(u){const e=u||V.DEFAULT_ZOOM_FACTOR,{minDistance:a,maxDistance:s}=this;this.minDistance=this.maxDistance=n.MathUtils.clamp(this.getDistance()+e,a+e,s-e),this.update(),this.minDistance=a,this.maxDistance=s}};X(V,"DEFAULT_ZOOM_FACTOR",1);let te=V;exports.OrbitController=te;exports.OrbitControllerDefaultSettings=B;
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
var ve = Object.defineProperty;
|
|
2
|
+
var Je = (A, p, l) => p in A ? ve(A, p, { enumerable: !0, configurable: !0, writable: !0, value: l }) : A[p] = l;
|
|
3
|
+
var G = (A, p, l) => Je(A, typeof p != "symbol" ? p + "" : p, l);
|
|
4
|
+
import { Ray as $e, Plane as et, MathUtils as Q, EventDispatcher as tt, Vector3 as m, MOUSE as C, TOUCH as Y, Spherical as je, Quaternion as Ae, Vector2 as h } from "three";
|
|
5
|
+
const xe = { type: "change" }, ne = { type: "start" }, Le = { type: "end" }, q = new $e(), Re = new et(), ot = Math.cos(70 * Q.DEG2RAD);
|
|
6
|
+
class nt extends tt {
|
|
7
|
+
constructor(p, l) {
|
|
8
|
+
super(), this.object = p, this.domElement = l, this.domElement.style.touchAction = "none", this.enabled = !0, this.target = new m(), this.cursor = new m(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: C.ROTATE, MIDDLE: C.DOLLY, RIGHT: C.PAN }, this.touches = { ONE: Y.ROTATE, TWO: Y.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this.getPolarAngle = function() {
|
|
9
|
+
return c.phi;
|
|
10
|
+
}, this.getAzimuthalAngle = function() {
|
|
11
|
+
return c.theta;
|
|
12
|
+
}, this.getDistance = function() {
|
|
13
|
+
return this.object.position.distanceTo(this.target);
|
|
14
|
+
}, this.listenToKeyEvents = function(t) {
|
|
15
|
+
t.addEventListener("keydown", oe), this._domElementKeyEvents = t;
|
|
16
|
+
}, this.stopListenToKeyEvents = function() {
|
|
17
|
+
this._domElementKeyEvents.removeEventListener("keydown", oe), this._domElementKeyEvents = null;
|
|
18
|
+
}, this.saveState = function() {
|
|
19
|
+
e.target0.copy(e.target), e.position0.copy(e.object.position), e.zoom0 = e.object.zoom;
|
|
20
|
+
}, this.reset = function() {
|
|
21
|
+
e.target.copy(e.target0), e.object.position.copy(e.position0), e.object.zoom = e.zoom0, e.object.updateProjectionMatrix(), e.dispatchEvent(xe), e.update(), i = n.NONE;
|
|
22
|
+
}, this.update = function() {
|
|
23
|
+
const t = new m(), o = new Ae().setFromUnitVectors(p.up, new m(0, 1, 0)), a = o.clone().invert(), s = new m(), u = new Ae(), T = new m(), d = 2 * Math.PI;
|
|
24
|
+
return function(Qe = null) {
|
|
25
|
+
const we = e.object.position;
|
|
26
|
+
t.copy(we).sub(e.target), t.applyQuaternion(o), c.setFromVector3(t), e.autoRotate && i === n.NONE && _(ke(Qe)), e.enableDamping ? (c.theta += f.theta * e.dampingFactor, c.phi += f.phi * e.dampingFactor) : (c.theta += f.theta, c.phi += f.phi);
|
|
27
|
+
let b = e.minAzimuthAngle, g = e.maxAzimuthAngle;
|
|
28
|
+
isFinite(b) && isFinite(g) && (b < -Math.PI ? b += d : b > Math.PI && (b -= d), g < -Math.PI ? g += d : g > Math.PI && (g -= d), b <= g ? c.theta = Math.max(b, Math.min(g, c.theta)) : c.theta = c.theta > (b + g) / 2 ? Math.max(b, c.theta) : Math.min(g, c.theta)), c.phi = Math.max(e.minPolarAngle, Math.min(e.maxPolarAngle, c.phi)), c.makeSafe(), e.enableDamping === !0 ? e.target.addScaledVector(x, e.dampingFactor) : e.target.add(x), e.target.sub(e.cursor), e.target.clampLength(e.minTargetRadius, e.maxTargetRadius), e.target.add(e.cursor);
|
|
29
|
+
let K = !1;
|
|
30
|
+
if (e.zoomToCursor && X || e.object.isOrthographicCamera)
|
|
31
|
+
c.radius = ee(c.radius);
|
|
32
|
+
else {
|
|
33
|
+
const y = c.radius;
|
|
34
|
+
c.radius = ee(c.radius * P), K = y != c.radius;
|
|
35
|
+
}
|
|
36
|
+
if (t.setFromSpherical(c), t.applyQuaternion(a), we.copy(e.target).add(t), e.object.lookAt(e.target), e.enableDamping === !0 ? (f.theta *= 1 - e.dampingFactor, f.phi *= 1 - e.dampingFactor, x.multiplyScalar(1 - e.dampingFactor)) : (f.set(0, 0, 0), x.set(0, 0, 0)), e.zoomToCursor && X) {
|
|
37
|
+
let y = null;
|
|
38
|
+
if (e.object.isPerspectiveCamera) {
|
|
39
|
+
const U = t.length();
|
|
40
|
+
y = ee(U * P);
|
|
41
|
+
const B = U - y;
|
|
42
|
+
e.object.position.addScaledVector(ie, B), e.object.updateMatrixWorld(), K = !!B;
|
|
43
|
+
} else if (e.object.isOrthographicCamera) {
|
|
44
|
+
const U = new m(E.x, E.y, 0);
|
|
45
|
+
U.unproject(e.object);
|
|
46
|
+
const B = e.object.zoom;
|
|
47
|
+
e.object.zoom = Math.max(e.minZoom, Math.min(e.maxZoom, e.object.zoom / P)), e.object.updateProjectionMatrix(), K = B !== e.object.zoom;
|
|
48
|
+
const Me = new m(E.x, E.y, 0);
|
|
49
|
+
Me.unproject(e.object), e.object.position.sub(Me).add(U), e.object.updateMatrixWorld(), y = t.length();
|
|
50
|
+
} else
|
|
51
|
+
console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), e.zoomToCursor = !1;
|
|
52
|
+
y !== null && (this.screenSpacePanning ? e.target.set(0, 0, -1).transformDirection(e.object.matrix).multiplyScalar(y).add(e.object.position) : (q.origin.copy(e.object.position), q.direction.set(0, 0, -1).transformDirection(e.object.matrix), Math.abs(e.object.up.dot(q.direction)) < ot ? p.lookAt(e.target) : (Re.setFromNormalAndCoplanarPoint(e.object.up, e.target), q.intersectPlane(Re, e.target))));
|
|
53
|
+
} else if (e.object.isOrthographicCamera) {
|
|
54
|
+
const y = e.object.zoom;
|
|
55
|
+
e.object.zoom = Math.max(e.minZoom, Math.min(e.maxZoom, e.object.zoom / P)), y !== e.object.zoom && (e.object.updateProjectionMatrix(), K = !0);
|
|
56
|
+
}
|
|
57
|
+
return P = 1, X = !1, K || s.distanceToSquared(e.object.position) > Z || 8 * (1 - u.dot(e.object.quaternion)) > Z || T.distanceToSquared(e.target) > Z ? (e.dispatchEvent(xe), s.copy(e.object.position), u.copy(e.object.quaternion), T.copy(e.target), !0) : !1;
|
|
58
|
+
};
|
|
59
|
+
}(), this.dispose = function() {
|
|
60
|
+
e.domElement.removeEventListener("contextmenu", Oe), e.domElement.removeEventListener("pointerdown", ge), e.domElement.removeEventListener("pointercancel", F), e.domElement.removeEventListener("wheel", ye), e.domElement.removeEventListener("pointermove", te), e.domElement.removeEventListener("pointerup", F), e.domElement.getRootNode().removeEventListener("keydown", Ee, { capture: !0 }), e._domElementKeyEvents !== null && (e._domElementKeyEvents.removeEventListener("keydown", oe), e._domElementKeyEvents = null);
|
|
61
|
+
};
|
|
62
|
+
const e = this, n = {
|
|
63
|
+
NONE: -1,
|
|
64
|
+
ROTATE: 0,
|
|
65
|
+
DOLLY: 1,
|
|
66
|
+
PAN: 2,
|
|
67
|
+
TOUCH_ROTATE: 3,
|
|
68
|
+
TOUCH_PAN: 4,
|
|
69
|
+
TOUCH_DOLLY_PAN: 5,
|
|
70
|
+
TOUCH_DOLLY_ROTATE: 6
|
|
71
|
+
};
|
|
72
|
+
let i = n.NONE;
|
|
73
|
+
const Z = 1e-6, c = new je(), f = new je();
|
|
74
|
+
let P = 1;
|
|
75
|
+
const x = new m(), O = new h(), D = new h(), L = new h(), w = new h(), M = new h(), R = new h(), S = new h(), k = new h(), j = new h(), ie = new m(), E = new h();
|
|
76
|
+
let X = !1;
|
|
77
|
+
const r = [], z = {};
|
|
78
|
+
let v = !1;
|
|
79
|
+
function ke(t) {
|
|
80
|
+
return t !== null ? 2 * Math.PI / 60 * e.autoRotateSpeed * t : 2 * Math.PI / 60 / 60 * e.autoRotateSpeed;
|
|
81
|
+
}
|
|
82
|
+
function V(t) {
|
|
83
|
+
const o = Math.abs(t * 0.01);
|
|
84
|
+
return Math.pow(0.95, e.zoomSpeed * o);
|
|
85
|
+
}
|
|
86
|
+
function _(t) {
|
|
87
|
+
f.theta -= t;
|
|
88
|
+
}
|
|
89
|
+
function W(t) {
|
|
90
|
+
f.phi -= t;
|
|
91
|
+
}
|
|
92
|
+
const se = function() {
|
|
93
|
+
const t = new m();
|
|
94
|
+
return function(a, s) {
|
|
95
|
+
t.setFromMatrixColumn(s, 0), t.multiplyScalar(-a), x.add(t);
|
|
96
|
+
};
|
|
97
|
+
}(), ce = function() {
|
|
98
|
+
const t = new m();
|
|
99
|
+
return function(a, s) {
|
|
100
|
+
e.screenSpacePanning === !0 ? t.setFromMatrixColumn(s, 1) : (t.setFromMatrixColumn(s, 0), t.crossVectors(e.object.up, t)), t.multiplyScalar(a), x.add(t);
|
|
101
|
+
};
|
|
102
|
+
}(), N = function() {
|
|
103
|
+
const t = new m();
|
|
104
|
+
return function(a, s) {
|
|
105
|
+
const u = e.domElement;
|
|
106
|
+
if (e.object.isPerspectiveCamera) {
|
|
107
|
+
const T = e.object.position;
|
|
108
|
+
t.copy(T).sub(e.target);
|
|
109
|
+
let d = t.length();
|
|
110
|
+
d *= Math.tan(e.object.fov / 2 * Math.PI / 180), se(2 * a * d / u.clientHeight, e.object.matrix), ce(2 * s * d / u.clientHeight, e.object.matrix);
|
|
111
|
+
} else e.object.isOrthographicCamera ? (se(a * (e.object.right - e.object.left) / e.object.zoom / u.clientWidth, e.object.matrix), ce(s * (e.object.top - e.object.bottom) / e.object.zoom / u.clientHeight, e.object.matrix)) : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."), e.enablePan = !1);
|
|
112
|
+
};
|
|
113
|
+
}();
|
|
114
|
+
function J(t) {
|
|
115
|
+
e.object.isPerspectiveCamera || e.object.isOrthographicCamera ? P /= t : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), e.enableZoom = !1);
|
|
116
|
+
}
|
|
117
|
+
function re(t) {
|
|
118
|
+
e.object.isPerspectiveCamera || e.object.isOrthographicCamera ? P *= t : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), e.enableZoom = !1);
|
|
119
|
+
}
|
|
120
|
+
function $(t, o) {
|
|
121
|
+
if (!e.zoomToCursor)
|
|
122
|
+
return;
|
|
123
|
+
X = !0;
|
|
124
|
+
const a = e.domElement.getBoundingClientRect(), s = t - a.left, u = o - a.top, T = a.width, d = a.height;
|
|
125
|
+
E.x = s / T * 2 - 1, E.y = -(u / d) * 2 + 1, ie.set(E.x, E.y, 1).unproject(e.object).sub(e.object.position).normalize();
|
|
126
|
+
}
|
|
127
|
+
function ee(t) {
|
|
128
|
+
return Math.max(e.minDistance, Math.min(e.maxDistance, t));
|
|
129
|
+
}
|
|
130
|
+
function le(t) {
|
|
131
|
+
O.set(t.clientX, t.clientY);
|
|
132
|
+
}
|
|
133
|
+
function Ne(t) {
|
|
134
|
+
$(t.clientX, t.clientX), S.set(t.clientX, t.clientY);
|
|
135
|
+
}
|
|
136
|
+
function ue(t) {
|
|
137
|
+
w.set(t.clientX, t.clientY);
|
|
138
|
+
}
|
|
139
|
+
function Ie(t) {
|
|
140
|
+
D.set(t.clientX, t.clientY), L.subVectors(D, O).multiplyScalar(e.rotateSpeed);
|
|
141
|
+
const o = e.domElement;
|
|
142
|
+
_(2 * Math.PI * L.x / o.clientHeight), W(2 * Math.PI * L.y / o.clientHeight), O.copy(D), e.update();
|
|
143
|
+
}
|
|
144
|
+
function Ce(t) {
|
|
145
|
+
k.set(t.clientX, t.clientY), j.subVectors(k, S), j.y > 0 ? J(V(j.y)) : j.y < 0 && re(V(j.y)), S.copy(k), e.update();
|
|
146
|
+
}
|
|
147
|
+
function Ye(t) {
|
|
148
|
+
M.set(t.clientX, t.clientY), R.subVectors(M, w).multiplyScalar(e.panSpeed), N(R.x, R.y), w.copy(M), e.update();
|
|
149
|
+
}
|
|
150
|
+
function ze(t) {
|
|
151
|
+
$(t.clientX, t.clientY), t.deltaY < 0 ? re(V(t.deltaY)) : t.deltaY > 0 && J(V(t.deltaY)), e.update();
|
|
152
|
+
}
|
|
153
|
+
function _e(t) {
|
|
154
|
+
let o = !1;
|
|
155
|
+
switch (t.code) {
|
|
156
|
+
case e.keys.UP:
|
|
157
|
+
t.ctrlKey || t.metaKey || t.shiftKey ? W(2 * Math.PI * e.rotateSpeed / e.domElement.clientHeight) : N(0, e.keyPanSpeed), o = !0;
|
|
158
|
+
break;
|
|
159
|
+
case e.keys.BOTTOM:
|
|
160
|
+
t.ctrlKey || t.metaKey || t.shiftKey ? W(-2 * Math.PI * e.rotateSpeed / e.domElement.clientHeight) : N(0, -e.keyPanSpeed), o = !0;
|
|
161
|
+
break;
|
|
162
|
+
case e.keys.LEFT:
|
|
163
|
+
t.ctrlKey || t.metaKey || t.shiftKey ? _(2 * Math.PI * e.rotateSpeed / e.domElement.clientHeight) : N(e.keyPanSpeed, 0), o = !0;
|
|
164
|
+
break;
|
|
165
|
+
case e.keys.RIGHT:
|
|
166
|
+
t.ctrlKey || t.metaKey || t.shiftKey ? _(-2 * Math.PI * e.rotateSpeed / e.domElement.clientHeight) : N(-e.keyPanSpeed, 0), o = !0;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
o && (t.preventDefault(), e.update());
|
|
170
|
+
}
|
|
171
|
+
function me(t) {
|
|
172
|
+
if (r.length === 1)
|
|
173
|
+
O.set(t.pageX, t.pageY);
|
|
174
|
+
else {
|
|
175
|
+
const o = I(t), a = 0.5 * (t.pageX + o.x), s = 0.5 * (t.pageY + o.y);
|
|
176
|
+
O.set(a, s);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function pe(t) {
|
|
180
|
+
if (r.length === 1)
|
|
181
|
+
w.set(t.pageX, t.pageY);
|
|
182
|
+
else {
|
|
183
|
+
const o = I(t), a = 0.5 * (t.pageX + o.x), s = 0.5 * (t.pageY + o.y);
|
|
184
|
+
w.set(a, s);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function de(t) {
|
|
188
|
+
const o = I(t), a = t.pageX - o.x, s = t.pageY - o.y, u = Math.sqrt(a * a + s * s);
|
|
189
|
+
S.set(0, u);
|
|
190
|
+
}
|
|
191
|
+
function Fe(t) {
|
|
192
|
+
e.enableZoom && de(t), e.enablePan && pe(t);
|
|
193
|
+
}
|
|
194
|
+
function Ke(t) {
|
|
195
|
+
e.enableZoom && de(t), e.enableRotate && me(t);
|
|
196
|
+
}
|
|
197
|
+
function he(t) {
|
|
198
|
+
if (r.length == 1)
|
|
199
|
+
D.set(t.pageX, t.pageY);
|
|
200
|
+
else {
|
|
201
|
+
const a = I(t), s = 0.5 * (t.pageX + a.x), u = 0.5 * (t.pageY + a.y);
|
|
202
|
+
D.set(s, u);
|
|
203
|
+
}
|
|
204
|
+
L.subVectors(D, O).multiplyScalar(e.rotateSpeed);
|
|
205
|
+
const o = e.domElement;
|
|
206
|
+
_(2 * Math.PI * L.x / o.clientHeight), W(2 * Math.PI * L.y / o.clientHeight), O.copy(D);
|
|
207
|
+
}
|
|
208
|
+
function fe(t) {
|
|
209
|
+
if (r.length === 1)
|
|
210
|
+
M.set(t.pageX, t.pageY);
|
|
211
|
+
else {
|
|
212
|
+
const o = I(t), a = 0.5 * (t.pageX + o.x), s = 0.5 * (t.pageY + o.y);
|
|
213
|
+
M.set(a, s);
|
|
214
|
+
}
|
|
215
|
+
R.subVectors(M, w).multiplyScalar(e.panSpeed), N(R.x, R.y), w.copy(M);
|
|
216
|
+
}
|
|
217
|
+
function be(t) {
|
|
218
|
+
const o = I(t), a = t.pageX - o.x, s = t.pageY - o.y, u = Math.sqrt(a * a + s * s);
|
|
219
|
+
k.set(0, u), j.set(0, Math.pow(k.y / S.y, e.zoomSpeed)), J(j.y), S.copy(k);
|
|
220
|
+
const T = (t.pageX + o.x) * 0.5, d = (t.pageY + o.y) * 0.5;
|
|
221
|
+
$(T, d);
|
|
222
|
+
}
|
|
223
|
+
function Ue(t) {
|
|
224
|
+
e.enableZoom && be(t), e.enablePan && fe(t);
|
|
225
|
+
}
|
|
226
|
+
function He(t) {
|
|
227
|
+
e.enableZoom && be(t), e.enableRotate && he(t);
|
|
228
|
+
}
|
|
229
|
+
function ge(t) {
|
|
230
|
+
e.enabled !== !1 && (r.length === 0 && (e.domElement.setPointerCapture(t.pointerId), e.domElement.addEventListener("pointermove", te), e.domElement.addEventListener("pointerup", F)), !qe(t) && (Be(t), t.pointerType === "touch" ? Pe(t) : Ze(t)));
|
|
231
|
+
}
|
|
232
|
+
function te(t) {
|
|
233
|
+
e.enabled !== !1 && (t.pointerType === "touch" ? We(t) : Xe(t));
|
|
234
|
+
}
|
|
235
|
+
function F(t) {
|
|
236
|
+
switch (Ge(t), r.length) {
|
|
237
|
+
case 0:
|
|
238
|
+
e.domElement.releasePointerCapture(t.pointerId), e.domElement.removeEventListener("pointermove", te), e.domElement.removeEventListener("pointerup", F), e.dispatchEvent(Le), i = n.NONE;
|
|
239
|
+
break;
|
|
240
|
+
case 1:
|
|
241
|
+
const o = r[0], a = z[o];
|
|
242
|
+
Pe({ pointerId: o, pageX: a.x, pageY: a.y });
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function Ze(t) {
|
|
247
|
+
let o;
|
|
248
|
+
switch (t.button) {
|
|
249
|
+
case 0:
|
|
250
|
+
o = e.mouseButtons.LEFT;
|
|
251
|
+
break;
|
|
252
|
+
case 1:
|
|
253
|
+
o = e.mouseButtons.MIDDLE;
|
|
254
|
+
break;
|
|
255
|
+
case 2:
|
|
256
|
+
o = e.mouseButtons.RIGHT;
|
|
257
|
+
break;
|
|
258
|
+
default:
|
|
259
|
+
o = -1;
|
|
260
|
+
}
|
|
261
|
+
switch (o) {
|
|
262
|
+
case C.DOLLY:
|
|
263
|
+
if (e.enableZoom === !1) return;
|
|
264
|
+
Ne(t), i = n.DOLLY;
|
|
265
|
+
break;
|
|
266
|
+
case C.ROTATE:
|
|
267
|
+
if (t.ctrlKey || t.metaKey || t.shiftKey) {
|
|
268
|
+
if (e.enablePan === !1) return;
|
|
269
|
+
ue(t), i = n.PAN;
|
|
270
|
+
} else {
|
|
271
|
+
if (e.enableRotate === !1) return;
|
|
272
|
+
le(t), i = n.ROTATE;
|
|
273
|
+
}
|
|
274
|
+
break;
|
|
275
|
+
case C.PAN:
|
|
276
|
+
if (t.ctrlKey || t.metaKey || t.shiftKey) {
|
|
277
|
+
if (e.enableRotate === !1) return;
|
|
278
|
+
le(t), i = n.ROTATE;
|
|
279
|
+
} else {
|
|
280
|
+
if (e.enablePan === !1) return;
|
|
281
|
+
ue(t), i = n.PAN;
|
|
282
|
+
}
|
|
283
|
+
break;
|
|
284
|
+
default:
|
|
285
|
+
i = n.NONE;
|
|
286
|
+
}
|
|
287
|
+
i !== n.NONE && e.dispatchEvent(ne);
|
|
288
|
+
}
|
|
289
|
+
function Xe(t) {
|
|
290
|
+
switch (i) {
|
|
291
|
+
case n.ROTATE:
|
|
292
|
+
if (e.enableRotate === !1) return;
|
|
293
|
+
Ie(t);
|
|
294
|
+
break;
|
|
295
|
+
case n.DOLLY:
|
|
296
|
+
if (e.enableZoom === !1) return;
|
|
297
|
+
Ce(t);
|
|
298
|
+
break;
|
|
299
|
+
case n.PAN:
|
|
300
|
+
if (e.enablePan === !1) return;
|
|
301
|
+
Ye(t);
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function ye(t) {
|
|
306
|
+
e.enabled === !1 || e.enableZoom === !1 || i !== n.NONE || (t.preventDefault(), e.dispatchEvent(ne), ze(Ve(t)), e.dispatchEvent(Le));
|
|
307
|
+
}
|
|
308
|
+
function Ve(t) {
|
|
309
|
+
const o = t.deltaMode, a = {
|
|
310
|
+
clientX: t.clientX,
|
|
311
|
+
clientY: t.clientY,
|
|
312
|
+
deltaY: t.deltaY
|
|
313
|
+
};
|
|
314
|
+
switch (o) {
|
|
315
|
+
case 1:
|
|
316
|
+
a.deltaY *= 16;
|
|
317
|
+
break;
|
|
318
|
+
case 2:
|
|
319
|
+
a.deltaY *= 100;
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
return t.ctrlKey && !v && (a.deltaY *= 10), a;
|
|
323
|
+
}
|
|
324
|
+
function Ee(t) {
|
|
325
|
+
t.key === "Control" && (v = !0, e.domElement.getRootNode().addEventListener("keyup", Te, { passive: !0, capture: !0 }));
|
|
326
|
+
}
|
|
327
|
+
function Te(t) {
|
|
328
|
+
t.key === "Control" && (v = !1, e.domElement.getRootNode().removeEventListener("keyup", Te, { passive: !0, capture: !0 }));
|
|
329
|
+
}
|
|
330
|
+
function oe(t) {
|
|
331
|
+
e.enabled === !1 || e.enablePan === !1 || _e(t);
|
|
332
|
+
}
|
|
333
|
+
function Pe(t) {
|
|
334
|
+
switch (De(t), r.length) {
|
|
335
|
+
case 1:
|
|
336
|
+
switch (e.touches.ONE) {
|
|
337
|
+
case Y.ROTATE:
|
|
338
|
+
if (e.enableRotate === !1) return;
|
|
339
|
+
me(t), i = n.TOUCH_ROTATE;
|
|
340
|
+
break;
|
|
341
|
+
case Y.PAN:
|
|
342
|
+
if (e.enablePan === !1) return;
|
|
343
|
+
pe(t), i = n.TOUCH_PAN;
|
|
344
|
+
break;
|
|
345
|
+
default:
|
|
346
|
+
i = n.NONE;
|
|
347
|
+
}
|
|
348
|
+
break;
|
|
349
|
+
case 2:
|
|
350
|
+
switch (e.touches.TWO) {
|
|
351
|
+
case Y.DOLLY_PAN:
|
|
352
|
+
if (e.enableZoom === !1 && e.enablePan === !1) return;
|
|
353
|
+
Fe(t), i = n.TOUCH_DOLLY_PAN;
|
|
354
|
+
break;
|
|
355
|
+
case Y.DOLLY_ROTATE:
|
|
356
|
+
if (e.enableZoom === !1 && e.enableRotate === !1) return;
|
|
357
|
+
Ke(t), i = n.TOUCH_DOLLY_ROTATE;
|
|
358
|
+
break;
|
|
359
|
+
default:
|
|
360
|
+
i = n.NONE;
|
|
361
|
+
}
|
|
362
|
+
break;
|
|
363
|
+
default:
|
|
364
|
+
i = n.NONE;
|
|
365
|
+
}
|
|
366
|
+
i !== n.NONE && e.dispatchEvent(ne);
|
|
367
|
+
}
|
|
368
|
+
function We(t) {
|
|
369
|
+
switch (De(t), i) {
|
|
370
|
+
case n.TOUCH_ROTATE:
|
|
371
|
+
if (e.enableRotate === !1) return;
|
|
372
|
+
he(t), e.update();
|
|
373
|
+
break;
|
|
374
|
+
case n.TOUCH_PAN:
|
|
375
|
+
if (e.enablePan === !1) return;
|
|
376
|
+
fe(t), e.update();
|
|
377
|
+
break;
|
|
378
|
+
case n.TOUCH_DOLLY_PAN:
|
|
379
|
+
if (e.enableZoom === !1 && e.enablePan === !1) return;
|
|
380
|
+
Ue(t), e.update();
|
|
381
|
+
break;
|
|
382
|
+
case n.TOUCH_DOLLY_ROTATE:
|
|
383
|
+
if (e.enableZoom === !1 && e.enableRotate === !1) return;
|
|
384
|
+
He(t), e.update();
|
|
385
|
+
break;
|
|
386
|
+
default:
|
|
387
|
+
i = n.NONE;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
function Oe(t) {
|
|
391
|
+
e.enabled !== !1 && t.preventDefault();
|
|
392
|
+
}
|
|
393
|
+
function Be(t) {
|
|
394
|
+
r.push(t.pointerId);
|
|
395
|
+
}
|
|
396
|
+
function Ge(t) {
|
|
397
|
+
delete z[t.pointerId];
|
|
398
|
+
for (let o = 0; o < r.length; o++)
|
|
399
|
+
if (r[o] == t.pointerId) {
|
|
400
|
+
r.splice(o, 1);
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
function qe(t) {
|
|
405
|
+
for (let o = 0; o < r.length; o++)
|
|
406
|
+
if (r[o] == t.pointerId) return !0;
|
|
407
|
+
return !1;
|
|
408
|
+
}
|
|
409
|
+
function De(t) {
|
|
410
|
+
let o = z[t.pointerId];
|
|
411
|
+
o === void 0 && (o = new h(), z[t.pointerId] = o), o.set(t.pageX, t.pageY);
|
|
412
|
+
}
|
|
413
|
+
function I(t) {
|
|
414
|
+
const o = t.pointerId === r[0] ? r[1] : r[0];
|
|
415
|
+
return z[o];
|
|
416
|
+
}
|
|
417
|
+
e.domElement.addEventListener("contextmenu", Oe), e.domElement.addEventListener("pointerdown", ge), e.domElement.addEventListener("pointercancel", F), e.domElement.addEventListener("wheel", ye, { passive: !1 }), e.domElement.getRootNode().addEventListener("keydown", Ee, { passive: !0, capture: !0 }), this.update();
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
const ae = {
|
|
421
|
+
enableDamping: !0,
|
|
422
|
+
dampingFactor: 0.05
|
|
423
|
+
}, H = class H extends nt {
|
|
424
|
+
constructor(l, e, n = ae) {
|
|
425
|
+
super(l, e);
|
|
426
|
+
G(this, "uuid", Q.generateUUID());
|
|
427
|
+
G(this, "object");
|
|
428
|
+
this.domElement = e, this.domElement = e, this.object = l, this.enableDamping = n.enableDamping ?? ae.enableDamping, this.dampingFactor = n.dampingFactor ?? ae.dampingFactor, this.object.position.set(0, 2, 2), this.target.copy({ x: 0, y: 0.5, z: 0 }), this.update();
|
|
429
|
+
}
|
|
430
|
+
tick() {
|
|
431
|
+
this.enabled && this.update();
|
|
432
|
+
}
|
|
433
|
+
computeEncompassingView(l) {
|
|
434
|
+
const e = l.getCenter(new m()), n = l.getSize(new m()), i = Math.max(n.x, n.y, n.z) * 1.25;
|
|
435
|
+
return {
|
|
436
|
+
position: this.object.position.clone().normalize().clone().multiplyScalar(i),
|
|
437
|
+
target: e.clone()
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
zoomIn(l) {
|
|
441
|
+
const e = l || H.DEFAULT_ZOOM_FACTOR, { minDistance: n, maxDistance: i } = this;
|
|
442
|
+
this.minDistance = this.maxDistance = Q.clamp(
|
|
443
|
+
this.getDistance() - e,
|
|
444
|
+
n + e,
|
|
445
|
+
i - e
|
|
446
|
+
), this.update(), this.minDistance = n, this.maxDistance = i;
|
|
447
|
+
}
|
|
448
|
+
zoomOut(l) {
|
|
449
|
+
const e = l || H.DEFAULT_ZOOM_FACTOR, { minDistance: n, maxDistance: i } = this;
|
|
450
|
+
this.minDistance = this.maxDistance = Q.clamp(
|
|
451
|
+
this.getDistance() + e,
|
|
452
|
+
n + e,
|
|
453
|
+
i - e
|
|
454
|
+
), this.update(), this.minDistance = n, this.maxDistance = i;
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
G(H, "DEFAULT_ZOOM_FACTOR", 1);
|
|
458
|
+
let Se = H;
|
|
459
|
+
export {
|
|
460
|
+
ae as O,
|
|
461
|
+
Se as a
|
|
462
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var wt=Object.defineProperty;var gt=(r,n,e)=>n in r?wt(r,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[n]=e;var h=(r,n,e)=>gt(r,typeof n!="symbol"?n+"":n,e);const t=require("three"),$=require("./VisibilityLayerMask-BI7jPKdx.cjs"),j=require("./findInterface-C6mrvf_t.cjs"),Q=require("./AxisHelperColors-BrGqktN5.cjs"),D=new t.Raycaster,p=new t.Vector3,P=new t.Vector3,c=new t.Quaternion,tt={X:new t.Vector3(1,0,0),Y:new t.Vector3(0,1,0),Z:new t.Vector3(0,0,1)},U={type:"change"},et={type:"mouseDown"},it={type:"mouseUp",mode:null},nt={type:"objectChange"};class bt extends t.Object3D{constructor(n,e){super(),e===void 0&&(console.warn('THREE.TransformControls: The second parameter "domElement" is now mandatory.'),e=document),this.isTransformControls=!0,this.visible=!1,this.domElement=e,this.domElement.style.touchAction="none";const o=new xt;this._gizmo=o,this.add(o);const s=new Dt;this._plane=s,this.add(s);const a=this;function i(m,y){let A=y;Object.defineProperty(a,m,{get:function(){return A!==void 0?A:y},set:function(x){A!==x&&(A=x,s[m]=x,o[m]=x,a.dispatchEvent({type:m+"-changed",value:x}),a.dispatchEvent(U))}}),a[m]=y,s[m]=y,o[m]=y}i("camera",n),i("object",void 0),i("enabled",!0),i("axis",null),i("mode","translate"),i("translationSnap",null),i("rotationSnap",null),i("scaleSnap",null),i("space","world"),i("size",1),i("dragging",!1),i("showX",!0),i("showY",!0),i("showZ",!0);const d=new t.Vector3,f=new t.Vector3,E=new t.Quaternion,T=new t.Quaternion,z=new t.Vector3,C=new t.Quaternion,K=new t.Vector3,H=new t.Vector3,M=new t.Vector3,S=0,g=new t.Vector3;i("worldPosition",d),i("worldPositionStart",f),i("worldQuaternion",E),i("worldQuaternionStart",T),i("cameraPosition",z),i("cameraQuaternion",C),i("pointStart",K),i("pointEnd",H),i("rotationAxis",M),i("rotationAngle",S),i("eye",g),this._offset=new t.Vector3,this._startNorm=new t.Vector3,this._endNorm=new t.Vector3,this._cameraScale=new t.Vector3,this._parentPosition=new t.Vector3,this._parentQuaternion=new t.Quaternion,this._parentQuaternionInv=new t.Quaternion,this._parentScale=new t.Vector3,this._worldScaleStart=new t.Vector3,this._worldQuaternionInv=new t.Quaternion,this._worldScale=new t.Vector3,this._positionStart=new t.Vector3,this._quaternionStart=new t.Quaternion,this._scaleStart=new t.Vector3,this._getPointer=Mt.bind(this),this._onPointerDown=vt.bind(this),this._onPointerHover=St.bind(this),this._onPointerMove=Pt.bind(this),this._onPointerUp=Et.bind(this),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointermove",this._onPointerHover),this.domElement.addEventListener("pointerup",this._onPointerUp)}updateMatrixWorld(n){this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this._parentPosition,this._parentQuaternion,this._parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this._worldScale),this._parentQuaternionInv.copy(this._parentQuaternion).invert(),this._worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this._cameraScale),this.camera.isOrthographicCamera?this.camera.getWorldDirection(this.eye).negate():this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld(n)}pointerHover(n){if(this.object===void 0||this.dragging===!0)return;n!==null&&D.setFromCamera(n,this.camera);const e=N(this._gizmo.picker[this.mode],D);e?this.axis=e.object.name:this.axis=null}pointerDown(n){if(!(this.object===void 0||this.dragging===!0||n!=null&&n.button!==0)&&this.axis!==null){n!==null&&D.setFromCamera(n,this.camera);const e=N(this._plane,D,!0);e&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(e.point).sub(this.worldPositionStart)),this.dragging=!0,et.mode=this.mode,this.dispatchEvent(et)}}pointerMove(n){const e=this.axis,o=this.mode,s=this.object;let a=this.space;if(o==="scale"?a="local":(e==="E"||e==="XYZE"||e==="XYZ")&&(a="world"),s===void 0||e===null||this.dragging===!1||n!==null&&n.button!==-1)return;n!==null&&D.setFromCamera(n,this.camera);const i=N(this._plane,D,!0);if(i){if(this.pointEnd.copy(i.point).sub(this.worldPositionStart),o==="translate")this._offset.copy(this.pointEnd).sub(this.pointStart),a==="local"&&e!=="XYZ"&&this._offset.applyQuaternion(this._worldQuaternionInv),e.indexOf("X")===-1&&(this._offset.x=0),e.indexOf("Y")===-1&&(this._offset.y=0),e.indexOf("Z")===-1&&(this._offset.z=0),a==="local"&&e!=="XYZ"?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),s.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(a==="local"&&(s.position.applyQuaternion(c.copy(this._quaternionStart).invert()),e.search("X")!==-1&&(s.position.x=Math.round(s.position.x/this.translationSnap)*this.translationSnap),e.search("Y")!==-1&&(s.position.y=Math.round(s.position.y/this.translationSnap)*this.translationSnap),e.search("Z")!==-1&&(s.position.z=Math.round(s.position.z/this.translationSnap)*this.translationSnap),s.position.applyQuaternion(this._quaternionStart)),a==="world"&&(s.parent&&s.position.add(p.setFromMatrixPosition(s.parent.matrixWorld)),e.search("X")!==-1&&(s.position.x=Math.round(s.position.x/this.translationSnap)*this.translationSnap),e.search("Y")!==-1&&(s.position.y=Math.round(s.position.y/this.translationSnap)*this.translationSnap),e.search("Z")!==-1&&(s.position.z=Math.round(s.position.z/this.translationSnap)*this.translationSnap),s.parent&&s.position.sub(p.setFromMatrixPosition(s.parent.matrixWorld))));else if(o==="scale"){if(e.search("XYZ")!==-1){let d=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(d*=-1),P.set(d,d,d)}else p.copy(this.pointStart),P.copy(this.pointEnd),p.applyQuaternion(this._worldQuaternionInv),P.applyQuaternion(this._worldQuaternionInv),P.divide(p),e.search("X")===-1&&(P.x=1),e.search("Y")===-1&&(P.y=1),e.search("Z")===-1&&(P.z=1);s.scale.copy(this._scaleStart).multiply(P),this.scaleSnap&&(e.search("X")!==-1&&(s.scale.x=Math.round(s.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),e.search("Y")!==-1&&(s.scale.y=Math.round(s.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),e.search("Z")!==-1&&(s.scale.z=Math.round(s.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(o==="rotate"){this._offset.copy(this.pointEnd).sub(this.pointStart);const d=20/this.worldPosition.distanceTo(p.setFromMatrixPosition(this.camera.matrixWorld));let f=!1;e==="XYZE"?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(p.copy(this.rotationAxis).cross(this.eye))*d):(e==="X"||e==="Y"||e==="Z")&&(this.rotationAxis.copy(tt[e]),p.copy(tt[e]),a==="local"&&p.applyQuaternion(this.worldQuaternion),p.cross(this.eye),p.length()===0?f=!0:this.rotationAngle=this._offset.dot(p.normalize())*d),(e==="E"||f)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),a==="local"&&e!=="E"&&e!=="XYZE"?(s.quaternion.copy(this._quaternionStart),s.quaternion.multiply(c.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),s.quaternion.copy(c.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),s.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(U),this.dispatchEvent(nt)}}pointerUp(n){n!==null&&n.button!==0||(this.dragging&&this.axis!==null&&(it.mode=this.mode,this.dispatchEvent(it)),this.dragging=!1,this.axis=null)}dispose(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerHover),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.traverse(function(n){n.geometry&&n.geometry.dispose(),n.material&&n.material.dispose()})}attach(n){return this.object=n,this.visible=!0,this}detach(){return this.object=void 0,this.visible=!1,this.axis=null,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(U),this.dispatchEvent(nt),this.pointStart.copy(this.pointEnd))}getRaycaster(){return D}getMode(){return this.mode}setMode(n){this.mode=n}setTranslationSnap(n){this.translationSnap=n}setRotationSnap(n){this.rotationSnap=n}setScaleSnap(n){this.scaleSnap=n}setSize(n){this.size=n}setSpace(n){this.space=n}}function Mt(r){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:r.button};{const n=this.domElement.getBoundingClientRect();return{x:(r.clientX-n.left)/n.width*2-1,y:-(r.clientY-n.top)/n.height*2+1,button:r.button}}}function St(r){if(this.enabled)switch(r.pointerType){case"mouse":case"pen":this.pointerHover(this._getPointer(r));break}}function vt(r){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(r.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.pointerHover(this._getPointer(r)),this.pointerDown(this._getPointer(r)))}function Pt(r){this.enabled&&this.pointerMove(this._getPointer(r))}function Et(r){this.enabled&&(this.domElement.releasePointerCapture(r.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.pointerUp(this._getPointer(r)))}function N(r,n,e){const o=n.intersectObject(r,!0);for(let s=0;s<o.length;s++)if(o[s].object.visible||e)return o[s];return!1}const q=new t.Euler,l=new t.Vector3(0,1,0),ot=new t.Vector3(0,0,0),st=new t.Matrix4,B=new t.Quaternion,F=new t.Quaternion,b=new t.Vector3,rt=new t.Matrix4,O=new t.Vector3(1,0,0),I=new t.Vector3(0,1,0),Z=new t.Vector3(0,0,1),W=new t.Vector3,X=new t.Vector3,Y=new t.Vector3;class xt extends t.Object3D{constructor(){super(),this.isTransformControlsGizmo=!0,this.type="TransformControlsGizmo";const n=new t.MeshBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),e=new t.LineBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),o=n.clone();o.opacity=.15;const s=e.clone();s.opacity=.5;const a=n.clone();a.color.setHex(16711680);const i=n.clone();i.color.setHex(65280);const d=n.clone();d.color.setHex(255);const f=n.clone();f.color.setHex(16711680),f.opacity=.5;const E=n.clone();E.color.setHex(65280),E.opacity=.5;const T=n.clone();T.color.setHex(255),T.opacity=.5;const z=n.clone();z.opacity=.25;const C=n.clone();C.color.setHex(16776960),C.opacity=.25,n.clone().color.setHex(16776960);const H=n.clone();H.color.setHex(7895160);const M=new t.CylinderGeometry(0,.04,.1,12);M.translate(0,.05,0);const S=new t.BoxGeometry(.08,.08,.08);S.translate(0,.04,0);const g=new t.BufferGeometry;g.setAttribute("position",new t.Float32BufferAttribute([0,0,0,1,0,0],3));const m=new t.CylinderGeometry(.0075,.0075,.5,3);m.translate(0,.25,0);function y(_,V){const w=new t.TorusGeometry(_,.0075,3,64,V*Math.PI*2);return w.rotateY(Math.PI/2),w.rotateX(Math.PI/2),w}function A(){const _=new t.BufferGeometry;return _.setAttribute("position",new t.Float32BufferAttribute([0,0,0,1,1,1],3)),_}const x={X:[[new t.Mesh(M,a),[.5,0,0],[0,0,-Math.PI/2]],[new t.Mesh(M,a),[-.5,0,0],[0,0,Math.PI/2]],[new t.Mesh(m,a),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new t.Mesh(M,i),[0,.5,0]],[new t.Mesh(M,i),[0,-.5,0],[Math.PI,0,0]],[new t.Mesh(m,i)]],Z:[[new t.Mesh(M,d),[0,0,.5],[Math.PI/2,0,0]],[new t.Mesh(M,d),[0,0,-.5],[-Math.PI/2,0,0]],[new t.Mesh(m,d),null,[Math.PI/2,0,0]]],XYZ:[[new t.Mesh(new t.OctahedronGeometry(.1,0),z.clone()),[0,0,0]]],XY:[[new t.Mesh(new t.BoxGeometry(.15,.15,.01),T.clone()),[.15,.15,0]]],YZ:[[new t.Mesh(new t.BoxGeometry(.15,.15,.01),f.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new t.Mesh(new t.BoxGeometry(.15,.15,.01),E.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},ht={X:[[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[.3,0,0],[0,0,-Math.PI/2]],[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,.3,0]],[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,-.3,0],[0,0,Math.PI]]],Z:[[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,0,.3],[Math.PI/2,0,0]],[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new t.Mesh(new t.OctahedronGeometry(.2,0),o)]],XY:[[new t.Mesh(new t.BoxGeometry(.2,.2,.01),o),[.15,.15,0]]],YZ:[[new t.Mesh(new t.BoxGeometry(.2,.2,.01),o),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new t.Mesh(new t.BoxGeometry(.2,.2,.01),o),[.15,0,.15],[-Math.PI/2,0,0]]]},ct={START:[[new t.Mesh(new t.OctahedronGeometry(.01,2),s),null,null,null,"helper"]],END:[[new t.Mesh(new t.OctahedronGeometry(.01,2),s),null,null,null,"helper"]],DELTA:[[new t.Line(A(),s),null,null,null,"helper"]],X:[[new t.Line(g,s.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new t.Line(g,s.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new t.Line(g,s.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},dt={XYZE:[[new t.Mesh(y(.5,1),H),null,[0,Math.PI/2,0]]],X:[[new t.Mesh(y(.5,.5),a)]],Y:[[new t.Mesh(y(.5,.5),i),null,[0,0,-Math.PI/2]]],Z:[[new t.Mesh(y(.5,.5),d),null,[0,Math.PI/2,0]]],E:[[new t.Mesh(y(.75,1),C),null,[0,Math.PI/2,0]]]},pt={AXIS:[[new t.Line(g,s.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},mt={XYZE:[[new t.Mesh(new t.SphereGeometry(.25,10,8),o)]],X:[[new t.Mesh(new t.TorusGeometry(.5,.1,4,24),o),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new t.Mesh(new t.TorusGeometry(.5,.1,4,24),o),[0,0,0],[Math.PI/2,0,0]]],Z:[[new t.Mesh(new t.TorusGeometry(.5,.1,4,24),o),[0,0,0],[0,0,-Math.PI/2]]],E:[[new t.Mesh(new t.TorusGeometry(.75,.1,2,24),o)]]},ut={X:[[new t.Mesh(S,a),[.5,0,0],[0,0,-Math.PI/2]],[new t.Mesh(m,a),[0,0,0],[0,0,-Math.PI/2]],[new t.Mesh(S,a),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new t.Mesh(S,i),[0,.5,0]],[new t.Mesh(m,i)],[new t.Mesh(S,i),[0,-.5,0],[0,0,Math.PI]]],Z:[[new t.Mesh(S,d),[0,0,.5],[Math.PI/2,0,0]],[new t.Mesh(m,d),[0,0,0],[Math.PI/2,0,0]],[new t.Mesh(S,d),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new t.Mesh(new t.BoxGeometry(.15,.15,.01),T),[.15,.15,0]]],YZ:[[new t.Mesh(new t.BoxGeometry(.15,.15,.01),f),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new t.Mesh(new t.BoxGeometry(.15,.15,.01),E),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new t.Mesh(new t.BoxGeometry(.1,.1,.1),z.clone())]]},ft={X:[[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[.3,0,0],[0,0,-Math.PI/2]],[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,.3,0]],[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,-.3,0],[0,0,Math.PI]]],Z:[[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,0,.3],[Math.PI/2,0,0]],[new t.Mesh(new t.CylinderGeometry(.2,0,.6,4),o),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new t.Mesh(new t.BoxGeometry(.2,.2,.01),o),[.15,.15,0]]],YZ:[[new t.Mesh(new t.BoxGeometry(.2,.2,.01),o),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new t.Mesh(new t.BoxGeometry(.2,.2,.01),o),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new t.Mesh(new t.BoxGeometry(.2,.2,.2),o),[0,0,0]]]},_t={X:[[new t.Line(g,s.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new t.Line(g,s.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new t.Line(g,s.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function v(_){const V=new t.Object3D;for(const w in _)for(let G=_[w].length;G--;){const u=_[w][G][0].clone(),L=_[w][G][1],R=_[w][G][2],k=_[w][G][3],yt=_[w][G][4];u.name=w,u.tag=yt,L&&u.position.set(L[0],L[1],L[2]),R&&u.rotation.set(R[0],R[1],R[2]),k&&u.scale.set(k[0],k[1],k[2]),u.updateMatrix();const J=u.geometry.clone();J.applyMatrix4(u.matrix),u.geometry=J,u.renderOrder=1/0,u.position.set(0,0,0),u.rotation.set(0,0,0),u.scale.set(1,1,1),V.add(u)}return V}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=v(x)),this.add(this.gizmo.rotate=v(dt)),this.add(this.gizmo.scale=v(ut)),this.add(this.picker.translate=v(ht)),this.add(this.picker.rotate=v(mt)),this.add(this.picker.scale=v(ft)),this.add(this.helper.translate=v(ct)),this.add(this.helper.rotate=v(pt)),this.add(this.helper.scale=v(_t)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(n){const o=(this.mode==="scale"?"local":this.space)==="local"?this.worldQuaternion:F;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let s=[];s=s.concat(this.picker[this.mode].children),s=s.concat(this.gizmo[this.mode].children),s=s.concat(this.helper[this.mode].children);for(let a=0;a<s.length;a++){const i=s[a];i.visible=!0,i.rotation.set(0,0,0),i.position.copy(this.worldPosition);let d;if(this.camera.isOrthographicCamera?d=(this.camera.top-this.camera.bottom)/this.camera.zoom:d=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),i.scale.set(1,1,1).multiplyScalar(d*this.size/4),i.tag==="helper"){i.visible=!1,i.name==="AXIS"?(i.visible=!!this.axis,this.axis==="X"&&(c.setFromEuler(q.set(0,0,0)),i.quaternion.copy(o).multiply(c),Math.abs(l.copy(O).applyQuaternion(o).dot(this.eye))>.9&&(i.visible=!1)),this.axis==="Y"&&(c.setFromEuler(q.set(0,0,Math.PI/2)),i.quaternion.copy(o).multiply(c),Math.abs(l.copy(I).applyQuaternion(o).dot(this.eye))>.9&&(i.visible=!1)),this.axis==="Z"&&(c.setFromEuler(q.set(0,Math.PI/2,0)),i.quaternion.copy(o).multiply(c),Math.abs(l.copy(Z).applyQuaternion(o).dot(this.eye))>.9&&(i.visible=!1)),this.axis==="XYZE"&&(c.setFromEuler(q.set(0,Math.PI/2,0)),l.copy(this.rotationAxis),i.quaternion.setFromRotationMatrix(st.lookAt(ot,l,I)),i.quaternion.multiply(c),i.visible=this.dragging),this.axis==="E"&&(i.visible=!1)):i.name==="START"?(i.position.copy(this.worldPositionStart),i.visible=this.dragging):i.name==="END"?(i.position.copy(this.worldPosition),i.visible=this.dragging):i.name==="DELTA"?(i.position.copy(this.worldPositionStart),i.quaternion.copy(this.worldQuaternionStart),p.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),p.applyQuaternion(this.worldQuaternionStart.clone().invert()),i.scale.copy(p),i.visible=this.dragging):(i.quaternion.copy(o),this.dragging?i.position.copy(this.worldPositionStart):i.position.copy(this.worldPosition),this.axis&&(i.visible=this.axis.search(i.name)!==-1));continue}i.quaternion.copy(o),this.mode==="translate"||this.mode==="scale"?(i.name==="X"&&Math.abs(l.copy(O).applyQuaternion(o).dot(this.eye))>.99&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),i.name==="Y"&&Math.abs(l.copy(I).applyQuaternion(o).dot(this.eye))>.99&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),i.name==="Z"&&Math.abs(l.copy(Z).applyQuaternion(o).dot(this.eye))>.99&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),i.name==="XY"&&Math.abs(l.copy(Z).applyQuaternion(o).dot(this.eye))<.2&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),i.name==="YZ"&&Math.abs(l.copy(O).applyQuaternion(o).dot(this.eye))<.2&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),i.name==="XZ"&&Math.abs(l.copy(I).applyQuaternion(o).dot(this.eye))<.2&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1)):this.mode==="rotate"&&(B.copy(o),l.copy(this.eye).applyQuaternion(c.copy(o).invert()),i.name.search("E")!==-1&&i.quaternion.setFromRotationMatrix(st.lookAt(this.eye,ot,I)),i.name==="X"&&(c.setFromAxisAngle(O,Math.atan2(-l.y,l.z)),c.multiplyQuaternions(B,c),i.quaternion.copy(c)),i.name==="Y"&&(c.setFromAxisAngle(I,Math.atan2(l.x,l.z)),c.multiplyQuaternions(B,c),i.quaternion.copy(c)),i.name==="Z"&&(c.setFromAxisAngle(Z,Math.atan2(l.y,l.x)),c.multiplyQuaternions(B,c),i.quaternion.copy(c))),i.visible=i.visible&&(i.name.indexOf("X")===-1||this.showX),i.visible=i.visible&&(i.name.indexOf("Y")===-1||this.showY),i.visible=i.visible&&(i.name.indexOf("Z")===-1||this.showZ),i.visible=i.visible&&(i.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),i.material._color=i.material._color||i.material.color.clone(),i.material._opacity=i.material._opacity||i.material.opacity,i.material.color.copy(i.material._color),i.material.opacity=i.material._opacity,this.enabled&&this.axis&&(i.name===this.axis||this.axis.split("").some(function(f){return i.name===f}))&&(i.material.color.setHex(16776960),i.material.opacity=1)}super.updateMatrixWorld(n)}}class Dt extends t.Mesh{constructor(){super(new t.PlaneGeometry(1e5,1e5,2,2),new t.MeshBasicMaterial({visible:!1,wireframe:!0,side:t.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type="TransformControlsPlane"}updateMatrixWorld(n){let e=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(e="local"),W.copy(O).applyQuaternion(e==="local"?this.worldQuaternion:F),X.copy(I).applyQuaternion(e==="local"?this.worldQuaternion:F),Y.copy(Z).applyQuaternion(e==="local"?this.worldQuaternion:F),l.copy(X),this.mode){case"translate":case"scale":switch(this.axis){case"X":l.copy(this.eye).cross(W),b.copy(W).cross(l);break;case"Y":l.copy(this.eye).cross(X),b.copy(X).cross(l);break;case"Z":l.copy(this.eye).cross(Y),b.copy(Y).cross(l);break;case"XY":b.copy(Y);break;case"YZ":b.copy(W);break;case"XZ":l.copy(Y),b.copy(X);break;case"XYZ":case"E":b.set(0,0,0);break}break;case"rotate":default:b.set(0,0,0)}b.length()===0?this.quaternion.copy(this.cameraQuaternion):(rt.lookAt(p.set(0,0,0),b,l),this.quaternion.setFromRotationMatrix(rt)),super.updateMatrixWorld(n)}}class at{constructor(n,e){h(this,"POINTER_DRAG_THRESHOLD",.001);h(this,"name");h(this,"_canvas");h(this,"_scene");h(this,"_controller");h(this,"_pointer");h(this,"_pointerPrimaryDown");h(this,"_pointerMiddleDown");h(this,"_pointerSecondaryDown");h(this,"_lastPointerDown");h(this,"_lastPointerUp");h(this,"_raycaster");h(this,"_intersects");h(this,"_hovered");h(this,"_dragging");h(this,"_dragStart");h(this,"_dragCurrent");h(this,"_dragEnd");h(this,"_dragDelta");h(this,"_draggable");h(this,"_dragRaycastOnObjects");this.name="BaseTool",this._canvas=e.domElement,this._scene=n,this._controller=e,this._pointer=new t.Vector2,this._pointerPrimaryDown=!1,this._pointerMiddleDown=!1,this._pointerSecondaryDown=!1,this._lastPointerDown=new t.Vector2,this._lastPointerUp=new t.Vector2,this._raycaster=new t.Raycaster,this._raycaster.layers.mask=$.PRODUCT_LAYER_MASK|$.UI_LAYER_MASK,this._intersects=[],this._hovered=null,this._dragging=!1,this._dragStart=new t.Vector3,this._dragCurrent=new t.Vector3,this._dragEnd=new t.Vector3,this._dragDelta=new t.Vector3,this._draggable=null,this._dragRaycastOnObjects=null}get _pointerAnyDown(){return this._pointerPrimaryDown||this._pointerMiddleDown||this._pointerSecondaryDown}activate(){}deactivate(){}onPointerDown(n){var e;switch(n.button){case 0:{this._pointerPrimaryDown=!0;break}case 1:{this._pointerMiddleDown=!0;break}case 2:{this._pointerSecondaryDown=!0;break}default:console.warn("DIVEBaseTool.onPointerDown: Unknown button: "+n.button)}this._lastPointerDown.copy(this._pointer),this._draggable=j.findInterface((e=this._intersects[0])==null?void 0:e.object,"isDraggable")||null}onDragStart(n){this._draggable&&(this._dragRaycastOnObjects!==null&&(this._intersects=this._raycaster.intersectObjects(this._dragRaycastOnObjects,!0)),this._intersects.length!==0&&(this._dragStart.copy(this._intersects[0].point.clone()),this._dragCurrent.copy(this._intersects[0].point.clone()),this._dragEnd.copy(this._dragStart.clone()),this._dragDelta.set(0,0,0),this._draggable&&this._draggable.onDragStart&&(this._draggable.onDragStart({dragStart:this._dragStart,dragCurrent:this._dragCurrent,dragEnd:this._dragEnd,dragDelta:this._dragDelta}),this._dragging=!0,this._controller.enabled=!1)))}onPointerMove(n){var o;this._pointer.x=n.offsetX/this._canvas.clientWidth*2-1,this._pointer.y=-(n.offsetY/this._canvas.clientHeight)*2+1,this._raycaster.setFromCamera(this._pointer,this._controller.object),this._intersects=this.raycast(this._scene.children);const e=j.findInterface((o=this._intersects[0])==null?void 0:o.object,"isHoverable");if(this._intersects[0]&&e){if(!this._hovered){e.onPointerEnter&&e.onPointerEnter(this._intersects[0]),this._hovered=e;return}if(this._hovered.uuid!==e.uuid){this._hovered.onPointerLeave&&this._hovered.onPointerLeave(),e.onPointerEnter&&e.onPointerEnter(this._intersects[0]),this._hovered=e;return}e.onPointerOver&&e.onPointerOver(this._intersects[0]),this._hovered=e}else this._hovered&&this._hovered.onPointerLeave&&this._hovered.onPointerLeave(),this._hovered=null;this._pointerAnyDown&&(this._dragging||this.onDragStart(n),this.onDrag(n))}onDrag(n){this._dragRaycastOnObjects!==null&&(this._intersects=this._raycaster.intersectObjects(this._dragRaycastOnObjects,!0));const e=this._intersects[0];e&&(this._dragCurrent.copy(e.point.clone()),this._dragEnd.copy(e.point.clone()),this._dragDelta.subVectors(this._dragCurrent.clone(),this._dragStart.clone()),this._draggable&&this._draggable.onDrag&&this._draggable.onDrag({dragStart:this._dragStart,dragCurrent:this._dragCurrent,dragEnd:this._dragEnd,dragDelta:this._dragDelta}))}onPointerUp(n){switch(this.pointerWasDragged()||this._dragging?this._draggable&&this.onDragEnd(n):this.onClick(n),n.button){case 0:this._pointerPrimaryDown=!1;break;case 1:this._pointerMiddleDown=!1;break;case 2:this._pointerSecondaryDown=!1;break}this._lastPointerUp.copy(this._pointer)}onClick(n){}onDragEnd(n){const e=this._intersects[0];e&&(this._dragEnd.copy(e.point.clone()),this._dragCurrent.copy(e.point.clone()),this._dragDelta.subVectors(this._dragCurrent.clone(),this._dragStart.clone())),this._draggable&&this._draggable.onDragEnd&&this._draggable.onDragEnd({dragStart:this._dragStart,dragCurrent:this._dragCurrent,dragEnd:this._dragEnd,dragDelta:this._dragDelta}),this._draggable=null,this._dragging=!1,this._dragStart.set(0,0,0),this._dragCurrent.set(0,0,0),this._dragEnd.set(0,0,0),this._dragDelta.set(0,0,0),this._controller.enabled=!0}onWheel(n){}raycast(n){return n!==void 0?this._raycaster.intersectObjects(n,!0).filter(e=>e.object.visible):this._raycaster.intersectObjects(this._scene.children,!0).filter(e=>e.object.visible)}pointerWasDragged(){return this._lastPointerDown.distanceTo(this._pointer)>this.POINTER_DRAG_THRESHOLD}}const It=r=>r.isTransformTool!==void 0;class lt extends at{constructor(e,o){super(e,o);h(this,"isTransformTool",!0);h(this,"_scaleLinked");h(this,"_gizmo");this.name="DIVETransformTool",this._scaleLinked=!1,this._gizmo=this.initGizmo(),this._scene.add(this._gizmo)}activate(){}setGizmoMode(e){this._gizmo.mode=e}setGizmoVisibility(e){const o=this._scene.children.includes(this._gizmo);e&&!o?(this._scene.add(this._gizmo),"isTransformControls"in this._gizmo&&this._gizmo.getRaycaster().layers.enableAll()):!e&&o&&(this._scene.remove(this._gizmo),"isTransformControls"in this._gizmo&&this._gizmo.getRaycaster().layers.disableAll())}setGizmoScaleLinked(e){this._scaleLinked=e}initGizmo(){const e=new bt(this._controller.object,this._controller.domElement);return e.mode="translate",e.traverse(o=>{if(!("isMesh"in o))return;const s=o.material;o.name==="X"&&s.color.set(Q.AxesColorRed),o.name==="Y"&&s.color.set(Q.AxesColorGreen),o.name==="Z"&&s.color.set(Q.AxesColorBlue),o.name==="XY"&&s.color.set(Q.AxesColorBlue),o.name==="YZ"&&s.color.set(Q.AxesColorRed),o.name==="XZ"&&s.color.set(Q.AxesColorGreen)}),e.addEventListener("mouseDown",()=>{this._controller.enabled=!1,j.implementsInterface(e.object,"isMovable")&&e.object.onMoveStart&&e.object.onMoveStart()}),e.addEventListener("objectChange",()=>{if(j.implementsInterface(e.object,"isMovable")&&e.object.onMove&&(e.object.onMove(),this._scaleLinked)){const o=e.object.scale,s=(o.x+o.y+o.z)/3;e.object.scale.set(s,s,s)}}),e.addEventListener("mouseUp",()=>{this._controller.enabled=!0,j.implementsInterface(e.object,"isMovable")&&e.object.onMoveEnd&&e.object.onMoveEnd()}),e}}const Tt=r=>r.isSelectTool!==void 0;class At extends lt{constructor(e,o){super(e,o);h(this,"isSelectTool",!0);this.name="SelectTool"}activate(){}select(e){this.attachGizmo(e),e.onSelect&&e.onSelect()}deselect(e){this.detachGizmo(),e.onDeselect&&e.onDeselect()}attachGizmo(e){if("isMovable"in e){const o=e;this._gizmo.attach(o),this.setGizmoVisibility(o.visible)}}detachGizmo(){this._gizmo.detach()}onClick(e){super.onClick(e);const o=this._raycaster.intersectObjects(this._scene.root.children,!0).filter(a=>a.object.visible)[0],s=j.findInterface(o==null?void 0:o.object,"isSelectable");if(!o||!s){this._gizmo.object&&this.deselect(this._gizmo.object);return}if(this._gizmo.object){if(this._gizmo.object.uuid===s.uuid)return;this.deselect(this._gizmo.object)}this.select(s)}}exports.DIVEBaseTool=at;exports.DIVESelectTool=At;exports.DIVETransformTool=lt;exports.isSelectTool=Tt;exports.isTransformTool=It;
|