t3d-ez.gl 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/Cameras/OrthographicProjectionAide.cjs.js +1 -0
- package/dist/core/Cameras/OrthographicProjectionAide.esm.js +1 -0
- package/dist/core/Cameras/PerspectiveProjectionAide.cjs.js +1 -0
- package/dist/core/Cameras/PerspectiveProjectionAide.esm.js +1 -0
- package/dist/core/Cameras/index.cjs.js +1 -0
- package/dist/core/Cameras/index.esm.js +1 -0
- package/dist/core/Controls/index.cjs.js +1 -1
- package/dist/core/Controls/index.esm.js +1 -1
- package/dist/core/Renderer/RendererAide.cjs.js +1 -0
- package/dist/core/Renderer/RendererAide.esm.js +1 -0
- package/dist/core/Renderer/ViewInstance.cjs.js +1 -0
- package/dist/core/Renderer/ViewInstance.esm.js +1 -0
- package/dist/core/Resource/ResourceAide.cjs.js +1 -0
- package/dist/core/Resource/ResourceAide.esm.js +1 -0
- package/dist/core/WebGLEngine/index.cjs.js +1 -1
- package/dist/core/WebGLEngine/index.esm.js +1 -1
- package/dist/helpers/AxesAddHelper.cjs.js +1 -1
- package/dist/helpers/AxesAddHelper.esm.js +1 -1
- package/dist/helpers/T3DEzViewportGizmo.cjs.js +1 -1
- package/dist/helpers/T3DEzViewportGizmo.esm.js +1 -1
- package/dist/package.json +1 -1
- package/dist/t3d-ez.gl.cjs.js +1 -1
- package/dist/t3d-ez.gl.esm.js +1 -1
- package/dist/types/core/Cameras/OrthographicProjectionAide.d.ts +19 -0
- package/dist/types/core/Cameras/PerspectiveProjectionAide.d.ts +9 -0
- package/dist/types/core/Cameras/index.d.ts +14 -0
- package/dist/types/core/Controls/index.d.ts +6 -5
- package/dist/types/core/MarkerHtmlUI/index.d.ts +3 -3
- package/dist/types/core/PostProcessor/index.d.ts +3 -3
- package/dist/types/core/Renderer/RendererAide.d.ts +35 -0
- package/dist/types/core/Renderer/ViewInstance.d.ts +49 -0
- package/dist/types/core/Resource/{ResourceManager.d.ts → ResourceAide.d.ts} +5 -5
- package/dist/types/core/Resource/index.d.ts +1 -1
- package/dist/types/core/WebGLEngine/index.d.ts +22 -18
- package/dist/types/core/WebGLEngine/types/index.d.ts +4 -3
- package/dist/types/helpers/T3DEzViewportGizmo.d.ts +9 -9
- package/dist/types/utils/FpsMeter/index.d.ts +3 -3
- package/dist/types/utils/index.d.ts +7 -7
- package/package.json +1 -1
- package/dist/core/Resource/ResourceManager.cjs.js +0 -1
- package/dist/core/Resource/ResourceManager.esm.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js");var t=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");class e extends t.OrthographicCamera{_size;_fixedWidth;_width=-1;_height=-1;get size(){return this._size}set size(t){this._size=t,this.update()}get fixedWidth(){return this._fixedWidth}set fixedWidth(t){this._fixedWidth=t,this.update()}constructor(t=2,e=!0,i,s){super(-1,1,1,-1,i,s),this._size=t,this._fixedWidth=e}update(){const t=.5*this._size;if(this._fixedWidth){const e=this._height/this._width;this.left=-t,this.right=t,this.top=t*e,this.bottom=-t*e}else{const e=this._width/this._height;this.left=-t*e,this.right=t*e,this.top=t,this.bottom=-t}this.updateProjectionMatrix()}}exports.OrthographicProjectionAide=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{OrthographicCamera as t}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class e extends t{_size;_fixedWidth;_width=-1;_height=-1;get size(){return this._size}set size(t){this._size=t,this.update()}get fixedWidth(){return this._fixedWidth}set fixedWidth(t){this._fixedWidth=t,this.update()}constructor(t=2,e=!0,i,s){super(-1,1,1,-1,i,s),this._size=t,this._fixedWidth=e}update(){const t=.5*this._size;if(this._fixedWidth){const e=this._height/this._width;this.left=-t,this.right=t,this.top=t*e,this.bottom=-t*e}else{const e=this._width/this._height;this.left=-t*e,this.right=t*e,this.top=t,this.bottom=-t}this.updateProjectionMatrix()}}export{e as OrthographicProjectionAide};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js");var e=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");class r extends e.PerspectiveCamera{constructor(e,r,s){super(e,void 0,r,s)}}exports.PerspectiveProjectionAide=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{PerspectiveCamera as e}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class o extends e{constructor(e,o,r){super(e,void 0,o,r)}}export{o as PerspectiveProjectionAide};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("./PerspectiveProjectionAide.cjs.js"),r=require("./OrthographicProjectionAide.cjs.js"),t=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");exports.CameraAide=class{camerasMap;constructor(){this.camerasMap=new Map}createCamera(i,o){let a;const{width:c,height:s}=o,n=c/s;return"Perspective"===i?(a=new e.PerspectiveProjectionAide(60,.01,2e3),a.aspect=n,a.updateProjectionMatrix()):"Orthographic"===i?(a=new r.OrthographicProjectionAide,a.left=c/-2,a.right=c/2,a.top=s/2,a.bottom=s/-2,a.near=.01,a.far=2e3,a.updateProjectionMatrix()):a=new t.Camera,a}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{PerspectiveProjectionAide as e}from"./PerspectiveProjectionAide.esm.js";import{OrthographicProjectionAide as r}from"./OrthographicProjectionAide.esm.js";import{Camera as t}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class o{camerasMap;constructor(){this.camerasMap=new Map}createCamera(o,a){let i;const{width:s,height:c}=a,p=s/c;return"Perspective"===o?(i=new e(60,.01,2e3),i.aspect=p,i.updateProjectionMatrix()):"Orthographic"===o?(i=new r,i.left=s/-2,i.right=s/2,i.top=c/2,i.bottom=c/-2,i.near=.01,i.far=2e3,i.updateProjectionMatrix()):i=new t,i}}export{o as CameraAide};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,r=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/OrbitControls.cjs.js"),o=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/TrackballControls.cjs.js"),t=require("./controlsLibs/FirstControls.cjs.js"),
|
|
1
|
+
"use strict";var e,r=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/OrbitControls.cjs.js"),o=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/TrackballControls.cjs.js"),t=require("./controlsLibs/FirstControls.cjs.js"),s=require("../../utils/Logger.cjs.js"),n=require("./TTControls/TTControls.cjs.js"),i=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");exports.CONTROL_TYPE=void 0,(e=exports.CONTROL_TYPE||(exports.CONTROL_TYPE={}))[e.ORBIT=0]="ORBIT",e[e.TRACKBALL=1]="TRACKBALL",e[e.FIRSTPERSON=2]="FIRSTPERSON";const l=new Map([[exports.CONTROL_TYPE.ORBIT,r.OrbitControls],[exports.CONTROL_TYPE.TRACKBALL,o.TrackballControls],[exports.CONTROL_TYPE.FIRSTPERSON,t.FirstControls]]);exports.TTControls=n.TTControls,exports.ControlsAide=class{engine;CONTROL_TYPE;activeControls;constructor(e){this.CONTROL_TYPE=exports.CONTROL_TYPE,this.engine=e}createControls(e=0,r,o){if(o instanceof HTMLElement){if(r instanceof i.Camera)return l.has(e)?(exports.CONTROL_TYPE.ORBIT,this.activeControls=this.initOrbitControls(r,o),this.activeControls):(s.Logger.warn("ControlManager","Control type is not defined , default to OrbitControls"),new(l.get(exports.CONTROL_TYPE.ORBIT))(r,o));s.Logger.error("ControlManager","Camera is not defined")}else s.Logger.error("ControlManager","DomElement is not defined")}initOrbitControls(e,o){const t=new r.OrbitControls(e,o);return t.enableDamping=!0,t.dampingFactor=.85,t.screenSpacePanning=!1,t}initFirstpersonControls(e,r){const o=new t.FirstControls(e,r);return o.pointerSpeed=.05,r.addEventListener("click",()=>o.lock()),o}initTrackballControls(e,r){return new o.TrackballControls(e,r)}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{OrbitControls as e}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/OrbitControls.esm.js";import{TrackballControls as o}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/TrackballControls.esm.js";import{FirstControls as n}from"./controlsLibs/FirstControls.esm.js";import{Logger as
|
|
1
|
+
import{OrbitControls as e}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/OrbitControls.esm.js";import{TrackballControls as o}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/TrackballControls.esm.js";import{FirstControls as n}from"./controlsLibs/FirstControls.esm.js";import{Logger as t}from"../../utils/Logger.esm.js";export{TTControls}from"./TTControls/TTControls.esm.js";import{Camera as r}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";var s;!function(e){e[e.ORBIT=0]="ORBIT",e[e.TRACKBALL=1]="TRACKBALL",e[e.FIRSTPERSON=2]="FIRSTPERSON"}(s||(s={}));const i=new Map([[s.ORBIT,e],[s.TRACKBALL,o],[s.FIRSTPERSON,n]]);class l{engine;CONTROL_TYPE;activeControls;constructor(e){this.CONTROL_TYPE=s,this.engine=e}createControls(e=0,o,n){if(n instanceof HTMLElement){if(o instanceof r)return i.has(e)?(s.ORBIT,this.activeControls=this.initOrbitControls(o,n),this.activeControls):(t.warn("ControlManager","Control type is not defined , default to OrbitControls"),new(i.get(s.ORBIT))(o,n));t.error("ControlManager","Camera is not defined")}else t.error("ControlManager","DomElement is not defined")}initOrbitControls(o,n){const t=new e(o,n);return t.enableDamping=!0,t.dampingFactor=.85,t.screenSpacePanning=!1,t}initFirstpersonControls(e,o){const t=new n(e,o);return t.pointerSpeed=.05,o.addEventListener("click",()=>t.lock()),t}initTrackballControls(e,n){return new o(e,n)}}export{s as CONTROL_TYPE,l as ControlsAide};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js");var e=require("./ViewInstance.cjs.js"),r=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");exports.RendererAide=class{renderer;viewMap=new Map;activeView=null;_visibleScenes=new Set;_rendererSize=new r.Vector2;_fullscreen=!1;_backgroundColor=0;_backgroundAlpha=1;_resized=!1;_resizeObserver=new ResizeObserver(()=>this._resized=!0);get activeScene(){return this.activeView?.scene}get fullscreen(){return this._fullscreen}set fullscreen(e){this._fullscreen=e,this.updateRendererSize()}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=new r.Color(e),this.renderer.setClearColor(this._backgroundColor,this._backgroundAlpha)}get backgroundAlpha(){return this._backgroundAlpha}set backgroundAlpha(e){this._backgroundAlpha=e,this.renderer.setClearColor(this._backgroundColor,this._backgroundAlpha)}constructor(e,i=!1,t=0,s=1){this.renderer=e,e.setPixelRatio(Math.min(window.devicePixelRatio,2)),this._fullscreen=i,this._backgroundColor=new r.Color(t),this._backgroundAlpha=s,window.addEventListener("resize",()=>this._resized=!0),this._resizeObserver.observe(this.renderer.domElement),this.updateRendererSize(),e.setClearColor(this._backgroundColor,this._backgroundAlpha)}create(r){if(this.viewMap.has(r.symbolTag))throw new Error(`ViewInstance with symbolTag ${r.symbolTag} already exists.`);const i=new e.ViewInstance(r,this._rendererSize);return this.viewMap.set(i.symbolTag,i),this.activeView=i,i}add(e){this.viewMap.has(e.symbolTag)&&this.viewMap.set(e.symbolTag,e)}getViewBySymbolTag(e){return this.viewMap.get(e)}remove(e){this.viewMap.has(e.symbolTag)&&(this.viewMap.delete(e.symbolTag),0===this.viewMap.size&&this.setDefaultRendererParameters())}removeBySymbolTag(e){0!==this.viewMap.size&&this.viewMap.has(e)&&(this.remove(this.viewMap.get(e)),0===this.viewMap.size&&this.setDefaultRendererParameters())}getVisibleScenes(){if(this._visibleScenes.clear(),0===this.viewMap.size)return this._visibleScenes;for(const e of this.viewMap.values())e.visible&&this._visibleScenes.add(e.scene);return this._visibleScenes}clear(){this.viewMap.clear(),this.setDefaultRendererParameters()}setActiveViewBySymbolTag(e){if(this.viewMap.has(e)){const r=this.viewMap.get(e);r.visible=!0,this.activeView=r}}render(){for(const e of this.viewMap.values())if(e.visible){const r=e.calcViewport;this.renderer.setScissorTest(void 0!==e.viewport),this.renderer.setViewport(r.left,r.bottom,r.width,r.height),this.renderer.setScissor(r.left,r.bottom,r.width,r.height),this.renderer.setClearColor(e.backgroundColor??this._backgroundColor,e.backgroundAlpha??this._backgroundAlpha),e.onBeforeRender(),this.executeRender(e.scene,e.camera,e?.composer),e.onAfterRender()}}update(){this._resized&&(this.updateRendererSize(),this.viewMap.forEach(e=>e.update()),this._resized=!1)}setDefaultRendererParameters(){this.renderer.setScissorTest(!1),this.renderer.setViewport(0,0,this._rendererSize.width,this._rendererSize.height),this.renderer.setScissor(0,0,this._rendererSize.width,this._rendererSize.height),this.renderer.setClearColor(this._backgroundColor,this._backgroundAlpha)}updateRendererSize(){if(this._fullscreen)this.renderer.setSize(window.innerWidth,window.innerHeight);else{const{width:e,height:r}=this.renderer.domElement.getBoundingClientRect();this.renderer.setSize(e,r,!1)}this.renderer.getSize(this._rendererSize)}executeRender(e,r,i){i?i.render():e&&r&&this.renderer.render(e,r)}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{ViewInstance as e}from"./ViewInstance.esm.js";import{Vector2 as r,Color as i}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class t{renderer;viewMap=new Map;activeView=null;_visibleScenes=new Set;_rendererSize=new r;_fullscreen=!1;_backgroundColor=0;_backgroundAlpha=1;_resized=!1;_resizeObserver=new ResizeObserver(()=>this._resized=!0);get activeScene(){return this.activeView?.scene}get fullscreen(){return this._fullscreen}set fullscreen(e){this._fullscreen=e,this.updateRendererSize()}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=new i(e),this.renderer.setClearColor(this._backgroundColor,this._backgroundAlpha)}get backgroundAlpha(){return this._backgroundAlpha}set backgroundAlpha(e){this._backgroundAlpha=e,this.renderer.setClearColor(this._backgroundColor,this._backgroundAlpha)}constructor(e,r=!1,t=0,s=1){this.renderer=e,e.setPixelRatio(Math.min(window.devicePixelRatio,2)),this._fullscreen=r,this._backgroundColor=new i(t),this._backgroundAlpha=s,window.addEventListener("resize",()=>this._resized=!0),this._resizeObserver.observe(this.renderer.domElement),this.updateRendererSize(),e.setClearColor(this._backgroundColor,this._backgroundAlpha)}create(r){if(this.viewMap.has(r.symbolTag))throw new Error(`ViewInstance with symbolTag ${r.symbolTag} already exists.`);const i=new e(r,this._rendererSize);return this.viewMap.set(i.symbolTag,i),this.activeView=i,i}add(e){this.viewMap.has(e.symbolTag)&&this.viewMap.set(e.symbolTag,e)}getViewBySymbolTag(e){return this.viewMap.get(e)}remove(e){this.viewMap.has(e.symbolTag)&&(this.viewMap.delete(e.symbolTag),0===this.viewMap.size&&this.setDefaultRendererParameters())}removeBySymbolTag(e){0!==this.viewMap.size&&this.viewMap.has(e)&&(this.remove(this.viewMap.get(e)),0===this.viewMap.size&&this.setDefaultRendererParameters())}getVisibleScenes(){if(this._visibleScenes.clear(),0===this.viewMap.size)return this._visibleScenes;for(const e of this.viewMap.values())e.visible&&this._visibleScenes.add(e.scene);return this._visibleScenes}clear(){this.viewMap.clear(),this.setDefaultRendererParameters()}setActiveViewBySymbolTag(e){if(this.viewMap.has(e)){const r=this.viewMap.get(e);r.visible=!0,this.activeView=r}}render(){for(const e of this.viewMap.values())if(e.visible){const r=e.calcViewport;this.renderer.setScissorTest(void 0!==e.viewport),this.renderer.setViewport(r.left,r.bottom,r.width,r.height),this.renderer.setScissor(r.left,r.bottom,r.width,r.height),this.renderer.setClearColor(e.backgroundColor??this._backgroundColor,e.backgroundAlpha??this._backgroundAlpha),e.onBeforeRender(),this.executeRender(e.scene,e.camera,e?.composer),e.onAfterRender()}}update(){this._resized&&(this.updateRendererSize(),this.viewMap.forEach(e=>e.update()),this._resized=!1)}setDefaultRendererParameters(){this.renderer.setScissorTest(!1),this.renderer.setViewport(0,0,this._rendererSize.width,this._rendererSize.height),this.renderer.setScissor(0,0,this._rendererSize.width,this._rendererSize.height),this.renderer.setClearColor(this._backgroundColor,this._backgroundAlpha)}updateRendererSize(){if(this._fullscreen)this.renderer.setSize(window.innerWidth,window.innerHeight);else{const{width:e,height:r}=this.renderer.domElement.getBoundingClientRect();this.renderer.setSize(e,r,!1)}this.renderer.getSize(this._rendererSize)}executeRender(e,r,i){i?i.render():e&&r&&this.renderer.render(e,r)}}export{t as RendererAide};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");exports.ViewInstance=class{scene;camera;viewport;calcViewport={left:0,bottom:0,width:0,height:0,top:0};symbolTag;enabled;backgroundColor;backgroundAlpha;composer;_visible;uuid=e.MathUtils.generateUUID();_rendererSize;_onBeforeRender;_onAfterRender;get visible(){return this._visible}set visible(e){this._visible!==e&&(this._visible=e)}constructor(e,t){this.scene=e.scene,this.camera=e.camera,this.viewport=e.viewport??{left:0,bottom:0,width:1,height:1},this.symbolTag=e.symbolTag??[],this.enabled=e.enabled??!0,this.backgroundColor=e.backgroundColor??0,this.backgroundAlpha=e.backgroundAlpha??1,this._visible=e.visible??!0,this._rendererSize=t,this._onBeforeRender=e.onBeforeRender??function(){},this._onAfterRender=e.onAfterRender??function(){},this.scene.add(this.camera),this.update()}update(){this.viewport?(this.calcViewport.left=Math.floor(this._rendererSize.x*this.viewport.left),this.calcViewport.bottom=Math.floor(this._rendererSize.y*this.viewport.bottom),this.calcViewport.width=Math.floor(this._rendererSize.x*this.viewport.width),this.calcViewport.height=Math.floor(this._rendererSize.y*this.viewport.height),this.calcViewport.top=Math.floor(this._rendererSize.y-this.calcViewport.bottom-this.calcViewport.height)):(this.calcViewport.width=this._rendererSize.x,this.calcViewport.height=this._rendererSize.y)}onBeforeRender(){this._onBeforeRender?.apply(this)}onAfterRender(){this._onAfterRender?.apply(this)}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{MathUtils as e}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class t{scene;camera;viewport;calcViewport={left:0,bottom:0,width:0,height:0,top:0};symbolTag;enabled;backgroundColor;backgroundAlpha;composer;_visible;uuid=e.generateUUID();_rendererSize;_onBeforeRender;_onAfterRender;get visible(){return this._visible}set visible(e){this._visible!==e&&(this._visible=e)}constructor(e,t){this.scene=e.scene,this.camera=e.camera,this.viewport=e.viewport??{left:0,bottom:0,width:1,height:1},this.symbolTag=e.symbolTag??[],this.enabled=e.enabled??!0,this.backgroundColor=e.backgroundColor??0,this.backgroundAlpha=e.backgroundAlpha??1,this._visible=e.visible??!0,this._rendererSize=t,this._onBeforeRender=e.onBeforeRender??function(){},this._onAfterRender=e.onAfterRender??function(){},this.scene.add(this.camera),this.update()}update(){this.viewport?(this.calcViewport.left=Math.floor(this._rendererSize.x*this.viewport.left),this.calcViewport.bottom=Math.floor(this._rendererSize.y*this.viewport.bottom),this.calcViewport.width=Math.floor(this._rendererSize.x*this.viewport.width),this.calcViewport.height=Math.floor(this._rendererSize.y*this.viewport.height),this.calcViewport.top=Math.floor(this._rendererSize.y-this.calcViewport.bottom-this.calcViewport.height)):(this.calcViewport.width=this._rendererSize.x,this.calcViewport.height=this._rendererSize.y)}onBeforeRender(){this._onBeforeRender?.apply(this)}onAfterRender(){this._onAfterRender?.apply(this)}}export{t as ViewInstance};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("./types.cjs.js"),r=require("./loaders.cjs.js"),o=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");exports.ResourceAide=class{type;engine;LoaderMaps=r.LoaderMaps;RESOURCE_TYPE=e.RESOURCE_TYPE;constructor(e){this.type="ResourceAide",this.engine=e}loadGLTF(a={url:"",loadingManager:new o.LoadingManager},n){const{url:s,loadingManager:t}=a;r.LoaderMaps.get(e.RESOURCE_TYPE.GLTF)?.load(s,e=>n&&n(e))}loadGLTFAsync(e={url:""}){const r=this;return new Promise(function(o,a){r.loadGLTF(e,e=>o(e))})}loadHDR(a={url:"",loadingManager:new o.LoadingManager},n){const{url:s,loadingManager:t}=a;r.LoaderMaps.get(e.RESOURCE_TYPE.HDR)?.load(s,e=>n&&n(e))}loadHDRAsync(e={url:""}){const r=this;return new Promise(function(o,a){r.loadHDR(e)})}loadTexture(o={url:""},a){const{url:n}=o;r.LoaderMaps.get(e.RESOURCE_TYPE.TEXTURE)?.load(n,e=>a&&a(e))}loadTextureAsync(e={url:""}){const r=this;return new Promise(function(o,a){r.loadTexture(e,e=>o(e))})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{RESOURCE_TYPE as e}from"./types.esm.js";import{LoaderMaps as o}from"./loaders.esm.js";import{LoadingManager as r}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class n{type;engine;LoaderMaps=o;RESOURCE_TYPE=e;constructor(e){this.type="ResourceAide",this.engine=e}loadGLTF(n={url:"",loadingManager:new r},t){const{url:s,loadingManager:l}=n;o.get(e.GLTF)?.load(s,e=>t&&t(e))}loadGLTFAsync(e={url:""}){const o=this;return new Promise(function(r,n){o.loadGLTF(e,e=>r(e))})}loadHDR(n={url:"",loadingManager:new r},t){const{url:s,loadingManager:l}=n;o.get(e.HDR)?.load(s,e=>t&&t(e))}loadHDRAsync(e={url:""}){const o=this;return new Promise(function(r,n){o.loadHDR(e)})}loadTexture(r={url:""},n){const{url:t}=r;o.get(e.TEXTURE)?.load(t,e=>n&&n(e))}loadTextureAsync(e={url:""}){const o=this;return new Promise(function(r,n){o.loadTexture(e,e=>r(e))})}}export{n as ResourceAide};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js"),r=require("../../utils/index.cjs.js"),t=require("../Controls/index.cjs.js"),
|
|
1
|
+
"use strict";var e=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js"),r=require("../../utils/index.cjs.js"),t=require("../Controls/index.cjs.js"),i=require("../Resource/ResourceAide.cjs.js"),s=require("../PostProcessor/index.cjs.js"),n=require("../MarkerHtmlUI/index.cjs.js"),a=require("../Renderer/RendererAide.cjs.js"),o=require("../Cameras/index.cjs.js"),c=require("../../utils/Logger.cjs.js"),d=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");const h={container:"body",antialias:!0,alpha:!1,backgroundColor:1514278,camera:"Perspective",isPostProcessing:!1};exports.T3dEZEngine=class{container;activeCanvas=null;parameters=h;renderScopes;VERSION="0.0.1";_rendererAide;_cameraAide;CONTROL_TYPE=t.CONTROL_TYPE;resourceAide;_controlsAide;plugins=new Map;isPostProcessing=!1;markerHtmlUI;postProcessor;animateTimer;get activeView(){return this._rendererAide.activeView}set activeView(e){this._rendererAide.activeView=e}get renderer(){return this._rendererAide?.renderer}get sceneGraph(){return this._rendererAide.activeScene}get camera(){return this._rendererAide.activeView?.camera}get controls(){return this._controlsAide.activeControls}constructor(e){c.Logger.info("Hello T3dEZEngine.js!"),this.renderScopes=new Set,this.parameters={...this.parameters,...e};const{container:d}=this.parameters;this.container=r.getContainerElement(d),this.resourceAide=new i.ResourceAide(this),this._controlsAide=new t.ControlsAide(this),this._cameraAide=new o.CameraAide;const h=this._initRenderer(this.parameters,this.container);this.activeCanvas=h.domElement,this.container.appendChild(h.domElement),this._rendererAide=new a.RendererAide(h),this.postProcessor=new s.PostProcessor(this),this.markerHtmlUI=new n.MarkerHtmlUI(this),this.initEngineInfo(this.activeCanvas)}async startApplication(e){const r=e.camera??this._cameraAide.createCamera("Perspective",this.renderer.domElement),t=e.scene??new d.Scene;return this.activeView=this._rendererAide.create(Object.assign(e,{camera:r,scene:t})),this}_initRenderer(r,t=document.body){const{antialias:i,alpha:s}=r,n=new e.WebGLRenderer({antialias:i,alpha:s,powerPreference:"high-performance"}),{clientWidth:a,clientHeight:o}=t,c=1*window.devicePixelRatio;return n.setPixelRatio(c),n.setSize(a||500,o||300),n.outputColorSpace=d.SRGBColorSpace,n.toneMapping=d.ACESFilmicToneMapping,n.toneMappingExposure=1,n}runRenderLoop(e){e&&!this.renderScopes.has(e)&&this.renderScopes.add(e),this.sceneGraph&&this.camera&&this.renderer?(this.isPostProcessing?this.postProcessor?.render():this.renderer.render(this.sceneGraph,this.camera),this.markerHtmlUI&&this.markerHtmlUI.render(),this.renderScopes.forEach(e=>e({sceneGraph:this.sceneGraph,camera:this.camera,renderer:this.renderer})),this.animateTimer=requestAnimationFrame(()=>this.runRenderLoop())):c.Logger.error("PotatoEngine","Scene, Camera, Renderer is not defined")}addRunScope(e){this.renderScopes.has(e)&&c.Logger.warn("PotatoEngine","RunScope is already added"),this.renderScopes.add(e)}attachControl(e){if(this.camera&&this.renderer)return this._controlsAide.createControls(e,this.camera,this.renderer.domElement),this.addRunScope(()=>this.controls.update()),this.controls;c.Logger.error("PotatoEngine","Camera, Renderer is not defined")}stopRenderLoop(){this.animateTimer&&(cancelAnimationFrame(this.animateTimer),this.animateTimer=0)}regieterPlugin(e,r){}initEngineInfo(e){"setAttribute"in e&&e.setAttribute("data-engine",`T3d-ez.gl V${this.VERSION}`)}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{WebGLRenderer as e}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{getContainerElement as r}from"../../utils/index.esm.js";import{CONTROL_TYPE as t,
|
|
1
|
+
import{WebGLRenderer as e}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{getContainerElement as r}from"../../utils/index.esm.js";import{CONTROL_TYPE as t,ControlsAide as i}from"../Controls/index.esm.js";import{ResourceAide as s}from"../Resource/ResourceAide.esm.js";import{PostProcessor as n}from"../PostProcessor/index.esm.js";import{MarkerHtmlUI as a}from"../MarkerHtmlUI/index.esm.js";import{RendererAide as o}from"../Renderer/RendererAide.esm.js";import{CameraAide as d}from"../Cameras/index.esm.js";import{Logger as c}from"../../utils/Logger.esm.js";import{Scene as m,SRGBColorSpace as h,ACESFilmicToneMapping as p}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";const l={container:"body",antialias:!0,alpha:!1,backgroundColor:1514278,camera:"Perspective",isPostProcessing:!1};class u{container;activeCanvas=null;parameters=l;renderScopes;VERSION="0.0.1";_rendererAide;_cameraAide;CONTROL_TYPE=t;resourceAide;_controlsAide;plugins=new Map;isPostProcessing=!1;markerHtmlUI;postProcessor;animateTimer;get activeView(){return this._rendererAide.activeView}set activeView(e){this._rendererAide.activeView=e}get renderer(){return this._rendererAide?.renderer}get sceneGraph(){return this._rendererAide.activeScene}get camera(){return this._rendererAide.activeView?.camera}get controls(){return this._controlsAide.activeControls}constructor(e){c.info("Hello T3dEZEngine.js!"),this.renderScopes=new Set,this.parameters={...this.parameters,...e};const{container:t}=this.parameters;this.container=r(t),this.resourceAide=new s(this),this._controlsAide=new i(this),this._cameraAide=new d;const m=this._initRenderer(this.parameters,this.container);this.activeCanvas=m.domElement,this.container.appendChild(m.domElement),this._rendererAide=new o(m),this.postProcessor=new n(this),this.markerHtmlUI=new a(this),this.initEngineInfo(this.activeCanvas)}async startApplication(e){const r=e.camera??this._cameraAide.createCamera("Perspective",this.renderer.domElement),t=e.scene??new m;return this.activeView=this._rendererAide.create(Object.assign(e,{camera:r,scene:t})),this}_initRenderer(r,t=document.body){const{antialias:i,alpha:s}=r,n=new e({antialias:i,alpha:s,powerPreference:"high-performance"}),{clientWidth:a,clientHeight:o}=t,d=1*window.devicePixelRatio;return n.setPixelRatio(d),n.setSize(a||500,o||300),n.outputColorSpace=h,n.toneMapping=p,n.toneMappingExposure=1,n}runRenderLoop(e){e&&!this.renderScopes.has(e)&&this.renderScopes.add(e),this.sceneGraph&&this.camera&&this.renderer?(this.isPostProcessing?this.postProcessor?.render():this.renderer.render(this.sceneGraph,this.camera),this.markerHtmlUI&&this.markerHtmlUI.render(),this.renderScopes.forEach(e=>e({sceneGraph:this.sceneGraph,camera:this.camera,renderer:this.renderer})),this.animateTimer=requestAnimationFrame(()=>this.runRenderLoop())):c.error("PotatoEngine","Scene, Camera, Renderer is not defined")}addRunScope(e){this.renderScopes.has(e)&&c.warn("PotatoEngine","RunScope is already added"),this.renderScopes.add(e)}attachControl(e){if(this.camera&&this.renderer)return this._controlsAide.createControls(e,this.camera,this.renderer.domElement),this.addRunScope(()=>this.controls.update()),this.controls;c.error("PotatoEngine","Camera, Renderer is not defined")}stopRenderLoop(){this.animateTimer&&(cancelAnimationFrame(this.animateTimer),this.animateTimer=0)}regieterPlugin(e,r){}initEngineInfo(e){"setAttribute"in e&&e.setAttribute("data-engine",`T3d-ez.gl V${this.VERSION}`)}}export{u as T3dEZEngine};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js");var e=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");class t extends e.AxesHelper{type="EditorAxesHelper";constructor(e){super(e),this.init(e)}init(t){const r=[-t,0,0,t,0,0,0,-t,0,0,t,0,0,0,-t,0,0,t];this.geometry.setAttribute("position",new e.Float32BufferAttribute(r,3)),this.geometry.setAttribute("color",new e.Float32BufferAttribute([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),this.material=new e.LineBasicMaterial({vertexColors:!0,toneMapped:!1}),this.material.depthTest=!1,this.material.transparent=!0,this.material.opacity=.
|
|
1
|
+
"use strict";require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js");var e=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");class t extends e.AxesHelper{type="EditorAxesHelper";constructor(e){super(e),this.init(e)}init(t){const r=[-t,0,0,t,0,0,0,-t,0,0,t,0,0,0,-t,0,0,t];this.geometry.setAttribute("position",new e.Float32BufferAttribute(r,3)),this.geometry.setAttribute("color",new e.Float32BufferAttribute([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),this.material=new e.LineBasicMaterial({vertexColors:!0,toneMapped:!1}),this.material.depthTest=!1,this.material.transparent=!0,this.material.opacity=.2,this.setColors(new e.Color(15418969),new e.Color(8834357),new e.Color(4098799)),this.updateMatrixWorld(!0)}}exports.AxesAddHelper=t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{AxesHelper as e,Float32BufferAttribute as t,LineBasicMaterial as r,Color as s}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class o extends e{type="EditorAxesHelper";constructor(e){super(e),this.init(e)}init(e){const o=[-e,0,0,e,0,0,0,-e,0,0,e,0,0,0,-e,0,0,e];this.geometry.setAttribute("position",new t(o,3)),this.geometry.setAttribute("color",new t([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),this.material=new r({vertexColors:!0,toneMapped:!1}),this.material.depthTest=!1,this.material.transparent=!0,this.material.opacity=.
|
|
1
|
+
import"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{AxesHelper as e,Float32BufferAttribute as t,LineBasicMaterial as r,Color as s}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class o extends e{type="EditorAxesHelper";constructor(e){super(e),this.init(e)}init(e){const o=[-e,0,0,e,0,0,0,-e,0,0,e,0,0,0,-e,0,0,e];this.geometry.setAttribute("position",new t(o,3)),this.geometry.setAttribute("color",new t([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),this.material=new r({vertexColors:!0,toneMapped:!1}),this.material.depthTest=!1,this.material.transparent=!0,this.material.opacity=.2,this.setColors(new s(15418969),new s(8834357),new s(4098799)),this.updateMatrixWorld(!0)}}export{o as AxesAddHelper};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js");var t=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/src/math/MathUtils.cjs.js"),e=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/utils/BufferGeometryUtils.cjs.js"),o=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/Line2.cjs.js"),s=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineGeometry.cjs.js"),n=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineMaterial.cjs.js"),i=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");const r=(t,e)=>{const[o,s]=e.split("-");return Object.assign(t.style,{left:"left"===s?"0":"center"===s?"50%":"",right:"right"===s?"0":"",top:"top"===o?"0":"bottom"===o?"":"50%",bottom:"bottom"===o?"0":"",transform:`${"center"===s?"translateX(-50%)":""} ${"center"===o?"translateY(-50%)":""}`}),e},a=[["x",0,3],["y",1,4],["z",2,5]],c=new i.Vector3;function l({isSphere:e},o,s){e&&(c.set(0,0,1).applyQuaternion(s.quaternion),a.forEach(([e,s,n])=>{const i=c[e];let r=o[s],a=r.userData.opacity;r.material.opacity=t.clamp(i>=0?a:a/2,0,1),r=o[n],a=r.userData.opacity,r.material.opacity=t.clamp(i>=0?a/2:a,0,1)}))}const h=new i.Raycaster,p=new i.Vector2,d=(t,e,o,s)=>{p.set((t.clientX-e.left)/e.width*2-1,-(t.clientY-e.top)/e.height*2+1),h.setFromCamera(p,o);const n=h.intersectObjects(s,!1);if(n.length>0){n.sort((t,e)=>t.distance-e.distance);const t=.2,e=n[0].distance,o=n.filter(o=>o.distance<=e+t);o.length>1&&(o.sort((t,e)=>(e.object.userData.intersectionOrder||0)-(t.object.userData.intersectionOrder||0)),n.splice(0,o.length,...o))}const i=n.length?n[0]:null;return i&&i.object.visible?i:null},u=1e-6,m=2*Math.PI,_=["x","y","z"],g=[..._,"nx","ny","nz"],y=["x","z","y","nx","nz","ny"],f=["z","x","y","nz","nx","ny"],b="Right",w="Top",v="Front",x="Left",S="Bottom",E="Back",M=[b,w,v,x,S,E].map(t=>t.toLocaleLowerCase()),z=(t,e=!0)=>{const{material:o,userData:s}=t,{color:n,opacity:i}=e?s.hover:s;o.color.set(n),o.opacity=i},L=t=>JSON.parse(JSON.stringify(t)),j={yUp:{x:b,y:w,z:v,nx:x,ny:S,nz:E},zUp:{x:b,y:E,z:w,nx:x,ny:v,nz:S},xUp:{x:w,y:v,z:b,nx:S,ny:E,nz:x}};function D(t,...e){if(t instanceof HTMLElement||"object"!=typeof t||null===t)return t;for(const o of e)for(const e in o)"container"!==e&&e in o&&(void 0===t[e]?t[e]=o[e]:"object"!=typeof o[e]||Array.isArray(o[e])||(t[e]=D(t[e]||{},o[e])));return t}const A=(t,e=2)=>{const o=new i.Color,s=2*e,{isSphere:n,resolution:r,radius:a,font:c,corners:l,edges:h}=t,p=g.map(e=>({...t[e],radius:a}));n&&l.enabled&&p.push(l),n&&h.enabled&&p.push(h);const d=document.createElement("canvas"),u=d.getContext("2d");d.width=2*r+2*s,d.height=r*p.length+s*p.length;const[m,_]=function(e,o,s){const i=[...e].sort((t,e)=>(t.label?.length||0)-(e.label?.length||0)).pop().label,{family:r,weight:a}=s,c=n?Math.sqrt(Math.pow(.7*o,2)/2):o;let l=c;t.font.size>0&&(l=t.font.size);let h=0,p=0;do{u.font=`${a} ${l}px ${r}`;const t=u.measureText(i);h=t.width,p=t.fontBoundingBoxDescent,l--}while(h>c&&l>0);const d=c/p,m=Math.min(c/h,d),_=Math.floor(l*m);return[`${a} ${_}px ${r}`,d]}(p,r,c);p.forEach(({radius:t,label:o,color:n,labelColor:i,border:a,hover:{color:c,labelColor:l,border:h}},p)=>{const d=r*p+p*s+e;x(e,d,e,r,t,o,a,n,i),x(r+3*e,d,e,r,t,o,h??a,c??n,l??i)});const y=p.length,f=e/(2*r),b=e/(6*r),w=1/y,v=new i.CanvasTexture(d);return v.repeat.set(.5-2*f,w-2*b),v.offset.set(f,1-b),Object.assign(v,{colorSpace:i.SRGBColorSpace,wrapS:i.RepeatWrapping,wrapT:i.RepeatWrapping,userData:{offsetX:f,offsetY:b,cellHeight:w}}),v;function x(t,e,s,i,r,a,c,l,h){if(r*=i/2,null!=l&&""!==l&&(p(),u.fillStyle=o.set(l).getStyle(),u.fill()),c&&c.size){const s=c.size*i/2;t+=s,e+=s,i-=c.size*i,r=Math.max(0,r-s),p(),u.strokeStyle=o.set(c.color).getStyle(),u.lineWidth=c.size*i,u.stroke()}function p(){u.beginPath(),u.moveTo(t+r,e),u.lineTo(t+i-r,e),u.arcTo(t+i,e,t+i,e+r,r),u.lineTo(t+i,e+i-r),u.arcTo(t+i,e+i,t+i-r,e+i,r),u.lineTo(t+r,e+i),u.arcTo(t,e+i,t,e+i-r,r),u.lineTo(t,e+r),u.arcTo(t,e,t+r,e,r),u.closePath()}a&&function(t,e,o,s,i){t.font=m,t.textAlign="center",t.textBaseline="middle",t.fillStyle=i,t.fillText(s,e,o+(n?_:0))}(u,t+i/2,e+(i+s)/2,a,o.set(h).getStyle())}},C=(t,e)=>{const{offset:o,userData:{offsetY:s,cellHeight:n}}=t;o.y=1-(e+1)*n+s};function O(t,e,o=2,s=2){const n=o/2-t,r=s/2-t,a=t/o,c=(o-t)/o,l=t/s,h=(s-t)/s,p=[n,r,0,-n,r,0,-n,-r,0,n,-r,0],d=[c,h,a,h,a,l,c,l],u=[3*(e+1)+3,3*(e+1)+4,e+4,e+5,2*(e+1)+4,2,1,2*(e+1)+3,3,4*(e+1)+3,4,0],m=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11].map(t=>u[t]);let _,g,y,f,b,w,v,x;for(let o=0;o<4;o++){f=o<1||o>2?n:-n,b=o<2?r:-r,w=o<1||o>2?c:a,v=o<2?h:l;for(let s=0;s<=e;s++)_=Math.PI/2*(o+s/e),g=Math.cos(_),y=Math.sin(_),p.push(f+t*g,b+t*y,0),d.push(w+a*g,v+l*y),s<e&&(x=(e+1)*o+s+4,m.push(o,x,x+1))}return(new i.BufferGeometry).setIndex(new i.BufferAttribute(new Uint32Array(m),1)).setAttribute("position",new i.BufferAttribute(new Float32Array(p),3)).setAttribute("uv",new i.BufferAttribute(new Float32Array(d),2))}const P=t=>{const{corners:r,edges:a}=t,c=[],l=A(t),h=((t,e)=>{const o=new i.Vector3,{isSphere:s,radius:n,smoothness:r,type:a}=t,c="rounded-cube"===a?2-2*t.edges.radius:2,l=O(n,r,c,c);return g.map((n,r)=>{const a=r<3,c=g[r],h=r?e.clone():e;C(h,r);const{enabled:p,scale:d,opacity:u,hover:m}=t[c],_={map:h,opacity:u,transparent:!0},y=s?new i.Sprite(new i.SpriteMaterial(_)):new i.Mesh(l,new i.MeshBasicMaterial(_)),f=a?c:c[1];if(y.position[f]=(a?1:-1)*(s?1.3:1),!s){y.lookAt(o.copy(y.position).multiplyScalar(1.7));const t=1===i.Object3D.DEFAULT_UP.z,e=1===i.Object3D.DEFAULT_UP.x;(t||e)&&("z"===c&&t||"x"===c&&e?y.rotateZ(-Math.PI/2):("nz"===c&&t||"nx"===c&&e)&&y.rotateZ(Math.PI/2))}return y.scale.setScalar(d),y.renderOrder=1,y.visible=p,y.userData={scale:d,opacity:u,hover:m},y})})(t,l);c.push(...h),r.enabled&&c.push(...((t,e)=>{const{isSphere:o,corners:s,type:n}=t,r="rounded-cube"===n;if(!s.enabled)return[];const{color:a,opacity:c,scale:l,radius:h,smoothness:p,hover:d}=s,u=o?null:r?new i.SphereGeometry(h,2*p,p):O(h,p),m={transparent:!0,opacity:c},_=r?1-h:.85,g=[1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1].map(t=>t*_),y=new i.Vector3;return Array(g.length/3).fill(0).map((t,s)=>{if(o){const t=e.clone();C(t,6),m.map=t}else m.color=a;const n=o?new i.Sprite(new i.SpriteMaterial(m)):new i.Mesh(u,new i.MeshBasicMaterial(m)),r=3*s;return n.position.set(g[r],g[r+1],g[r+2]),o&&n.position.normalize().multiplyScalar(1.7),n.scale.setScalar(l),n.lookAt(y.copy(n.position).multiplyScalar(2)),n.renderOrder=1,n.userData={color:a,opacity:c,scale:l,hover:d,intersectionOrder:1},n})})(t,l)),a.enabled&&c.push(...((t,e,o)=>{const{isSphere:s,edges:n,type:r}=t,a="rounded-cube"===r;if(!n.enabled)return[];const{color:c,opacity:l,scale:h,hover:p,radius:d,smoothness:u}=n,m=a?2-2*d:1.2,_=s?null:a?new i.CylinderGeometry(d,d,m,4*u):O(d,u,m,.25),g={transparent:!0,opacity:l},y=a?1-d:.925,f=[0,1,1,0,-1,1,1,0,1,-1,0,1,0,1,-1,0,-1,-1,1,0,-1,-1,0,-1,1,1,0,1,-1,0,-1,1,0,-1,-1,0].map(t=>t*y),b=new i.Vector3,w=new i.Vector3(0,1,0);return Array(f.length/3).fill(0).map((t,n)=>{if(s){const t=e.clone();C(t,o),g.map=t}else g.color=c;const r=s?new i.Sprite(new i.SpriteMaterial(g)):new i.Mesh(_,new i.MeshBasicMaterial(g)),d=3*n;return r.position.set(f[d],f[d+1],f[d+2]),s&&r.position.normalize().multiplyScalar(1.7),r.scale.setScalar(h),r.up.copy(w),r.lookAt(b.copy(r.position).multiplyScalar(2)),a?(s||r.position.z||(r.rotation.z=Math.PI),s||r.position.x||(r.rotation.x=0),s||r.position.x||(r.rotation.z=Math.PI/2)):s||r.position.y||(r.rotation.z=Math.PI/2),r.renderOrder=1,r.userData={color:c,opacity:l,scale:h,hover:p},r})})(t,l,r.enabled?7:6));const p=((t,o)=>{const{isSphere:s,background:{enabled:n,color:r,opacity:a,hover:c}}=o;let l;const h=new i.MeshBasicMaterial({color:r,side:i.BackSide,opacity:a,transparent:!0,depthWrite:!1});if(!n)return null;if(s)l=new i.Mesh(new i.SphereGeometry(1.8,64,64),h);else{let o;t.forEach(t=>{const s=t.scale.x;t.scale.setScalar(.9),t.updateMatrix();const n=t.geometry.clone();n.applyMatrix4(t.matrix),o=o?e.mergeGeometries([o,n]):n,t.scale.setScalar(s)}),l=new i.Mesh(o,h)}return l.userData={color:r,opacity:a,hover:c},l})(h,t),d=(t=>{const e=new i.Color,r=[],a=[],{isSphere:c}=t;if(g.forEach((o,s)=>{const{enabled:n,line:i,scale:l,color:h}=t[o];if(!n||!i)return;const p=(c?1.3-l/2:.975)*(s<3?1:-1);r.push(o.includes("x")?p:0,o.includes("y")?p:0,o.includes("z")?p:0,0,0,0);const d=e.set(h).toArray();a.push(...d,...d)}),!r.length)return null;const l=(new s.LineGeometry).setPositions(r).setColors(a),h=new n.LineMaterial({linewidth:t.lineWidth,vertexColors:!0,resolution:new i.Vector2(window.innerWidth,window.innerHeight)});return new o.Line2(l,h).computeLineDistances()})(t);return[c,p,d]},U=(t,e=!0)=>{const{material:o,userData:s}=t,{opacity:n,color:i,scale:r}=e?s.hover:s;var a,c;t.scale.setScalar(r),o.opacity=n,o.map?(a=o.map,c=e,a.offset.x=(c?.5:0)+a.userData.offsetX):o.color.set(i)},T=new i.Matrix4,q=new i.Spherical,V=new i.Vector2,k=new i.Vector3,F=new i.Vector4,B=(new i.Quaternion).setFromAxisAngle(new i.Vector3(0,0,1),Math.PI/2),R=(new i.Quaternion).setFromAxisAngle(new i.Vector3(0,0,1),-Math.PI/2);class $ extends i.Object3D{enabled=!0;camera;renderer;options;target=new i.Vector3;animated=!0;speed=1;animating=!1;_options;_intersections;_background=null;_viewport=[0,0,0,0];_originalViewport=[0,0,0,0];_originalScissor=[0,0,0,0];_scene;_camera;_container;_domElement;_domRect;_dragging=!1;calc_distance=0;_clock=new i.Clock;_targetQuaternion=new i.Quaternion;_quaternionStart=new i.Quaternion;_quaternionEnd=new i.Quaternion;_pointerStart=new i.Vector2;_focus=null;_placement;_controls;_controlsListeners;constructor(t,e,o={}){super(),this.camera=t,this.renderer=e,this._scene=(new i.Scene).add(this),this.set(o)}get placement(){return this._placement}set placement(t){this._placement=r(this._domElement,t),this.domUpdate()}set(t={}){this.dispose(),this.options=t,this._options=(t=>{const e=t.type||"sphere",o="sphere"===e,s="rounded-cube"===e,n=t.resolution||o?64:128,r=i.Object3D.DEFAULT_UP,a=1===r.z,c=1===r.x,l=j[a?"zUp":c?"xUp":"yUp"],{container:h}=t;t.container=void 0,(t=JSON.parse(JSON.stringify(t))).container=h;const p=a?y:c?f:g;M.forEach((e,o)=>{t[e]&&(t[p[o]]=t[e])});const d={enabled:!0,color:16777215,opacity:1,scale:.7,labelColor:2236962,line:!1,border:{size:0,color:14540253},hover:{color:o?16777215:9688043,labelColor:2236962,opacity:1,scale:.7,border:{size:0,color:14540253}}},u={line:!1,scale:o?.45:.7,hover:{scale:o?.5:.7}},m={type:e,container:document.body,size:128,placement:"top-right",resolution:n,lineWidth:4,radius:o?1:s?.3:.2,smoothness:18,animated:!0,speed:1,background:{enabled:!0,color:o?16777215:14739180,opacity:o?0:1,hover:{color:o?16777215:14739180,opacity:o?.2:1}},font:{family:"sans-serif",weight:900},offset:{top:10,left:10,bottom:10,right:10},corners:{enabled:!o,color:o?15915362:16777215,opacity:1,scale:o?.15:.2,radius:1,smoothness:18,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:.225}},edges:{enabled:!o,color:o?15915362:s?15658734:16777215,opacity:o?1:0,radius:o?1:.125,smoothness:18,scale:o?.15:1,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:1}},x:{...L(d),...o?{label:"X",color:16725587,line:!0}:{label:l.x}},y:{...L(d),...o?{label:"Y",color:9100032,line:!0}:{label:l.y}},z:{...L(d),...o?{label:"Z",color:2920447,line:!0}:{label:l.z}},nx:{...L(u),label:o?"":l.nx},ny:{...L(u),label:o?"":l.ny},nz:{...L(u),label:o?"":l.nz}};if(D(t,m),s){const e=t;e.edges.radius=e.radius,e.edges.scale=1,e.edges.opacity=1,e.edges.hover.scale=1,e.edges.hover.opacity=1,e.corners.radius=e.radius,e.corners.scale=1,e.corners.opacity=1,e.corners.hover.scale=1,e.corners.hover.opacity=1,e.radius=0,g.forEach(t=>{e[t].scale=1,e[t].opacity=1,e[t].hover.scale=1,e[t].hover.opacity=1})}return _.forEach(e=>D(t[`n${e}`],L(t[e]))),{...t,isSphere:o}})(t),this._camera=this._options.isSphere?new i.OrthographicCamera(-1.8,1.8,1.8,-1.8,5,10):new i.PerspectiveCamera(26,1,5,10),this._camera.position.set(0,0,7);const[e,o,s]=P(this._options);o&&this.add(o),s&&this.add(s),this.add(...e),this._background=o,this._intersections=e;const{container:n,animated:a,speed:c}=this._options;return this.animated=a,this.speed=c,this._container=n?(t=>{const e="string"==typeof t?document.querySelector(t):t;if(!e)throw Error("Invalid DOM element");return e})(n):document.body,this._domElement=(({placement:t,size:e,offset:o,id:s,className:n})=>{const i=document.createElement("div"),{top:a,left:c,right:l,bottom:h}=o;return Object.assign(i.style,{id:s,position:"absolute",zIndex:"1000",height:`${e}px`,width:`${e}px`,margin:`${a}px ${l}px ${h}px ${c}px`,borderRadius:"100%"}),r(i,t),s&&(i.id=s),n&&(i.className=n),i})(this._options),this._domElement.onpointerdown=t=>this._onPointerDown(t),this._domElement.onpointermove=t=>this._onPointerMove(t),this._domElement.onpointerleave=()=>this._onPointerLeave(),this._container.appendChild(this._domElement),this._controls&&this.attachControls(this._controls),this.update(),this}render(){this.animating&&this._animate();const{renderer:t,_viewport:e}=this,o=t.getScissorTest(),s=t.autoClear;return t.autoClear=!1,t.setViewport(...e),o&&t.setScissor(...e),t.clear(!1,!0,!1),t.render(this._scene,this._camera),t.setViewport(...this._originalViewport),o&&t.setScissor(...this._originalScissor),t.autoClear=s,this}domUpdate(){this._domRect=this._domElement.getBoundingClientRect();const t=this.renderer,e=this._domRect,o=t.domElement.getBoundingClientRect();return this._viewport.splice(0,4,e.left-o.left,t.domElement.clientHeight-(e.top-o.top+e.height),e.width,e.height),t.getViewport(F).toArray(this._originalViewport),t.getScissorTest()&&t.getScissor(F).toArray(this._originalScissor),this}cameraUpdate(){return this._updateOrientation(),this}update(t=!0){return t&&this._controls&&this._controls.update(),this.domUpdate().cameraUpdate()}attachControls(t){return this.detachControls(),this.target=t.target,this._controlsListeners={start:()=>t.enabled=!1,end:()=>t.enabled=!0,change:()=>this.update(!1)},this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),t.addEventListener("change",this._controlsListeners.change),this._controls=t,this}detachControls(){if(this._controlsListeners&&this._controls)return this.target=(new i.Vector3).copy(this._controls.target),this.removeEventListener("start",this._controlsListeners.start),this.removeEventListener("end",this._controlsListeners.end),this._controls.removeEventListener("change",this._controlsListeners.change),this._controlsListeners=void 0,this._controls=void 0,this}dispose(){this.detachControls(),this.children.forEach(t=>{this.remove(t);const e=t;e.material?.dispose(),e.material?.map?.dispose(),e.geometry?.dispose()}),this._domElement?.remove()}_updateOrientation(t=!0){t&&(this.quaternion.copy(this.camera.quaternion).invert(),this.updateMatrixWorld()),l(this._options,this._intersections,this.camera)}_animate(){const{position:t,quaternion:e}=this.camera;if(t.set(0,0,1),!this.animated)return t.applyQuaternion(this._quaternionEnd).multiplyScalar(this.calc_distance).add(this.target),e.copy(this._targetQuaternion),this._updateOrientation(),this.animating=!1,this.dispatchEvent({type:"change"}),void this.dispatchEvent({type:"end"});this._controls&&(this._controls.enabled=!1);const o=this._clock.getDelta()*m*this.speed;if(this._quaternionStart.rotateTowards(this._quaternionEnd,o),t.applyQuaternion(this._quaternionStart).multiplyScalar(this.calc_distance).add(this.target),e.rotateTowards(this._targetQuaternion,o),this._updateOrientation(),requestAnimationFrame(()=>this.dispatchEvent({type:"change"})),this._quaternionStart.angleTo(this._quaternionEnd)<u){if(this._controls){const t=this.camera.position.clone().sub(this.target).normalize();1===i.Object3D.DEFAULT_UP.z&&Math.abs(t.z)>.99?this.camera.position.set(0,-1e-6,this.camera.position.z):1===i.Object3D.DEFAULT_UP.x&&Math.abs(t.x)>.99&&this.camera.position.set(this.camera.position.x,u,0),this._controls.update(),this._controls.enabled=!0}this.animating=!1,this.dispatchEvent({type:"end"})}}setOrientation(t){const e=this.camera,o=this.target;if(k.copy(t).multiplyScalar(this.calc_distance),T.setPosition(k).lookAt(k,this.position,this.up),this._targetQuaternion.setFromRotationMatrix(T),k.add(o),T.lookAt(k,o,this.up),this._quaternionEnd.setFromRotationMatrix(T),T.setPosition(e.position).lookAt(e.position,o,this.up),this._quaternionStart.setFromRotationMatrix(T),1===i.Object3D.DEFAULT_UP.z&&Math.abs(t.z)>.99){const e=Math.sign(t.z);this._targetQuaternion.multiply(1===e?R:B),this._quaternionEnd.multiply(1===e?R:B)}else if(1===i.Object3D.DEFAULT_UP.x&&Math.abs(t.x)>.99){const e=Math.sign(t.x);this._targetQuaternion.multiply(1===e?R:B),this._quaternionEnd.multiply(1===e?R:B)}this.animating=!0,this._clock.start(),this.dispatchEvent({type:"start"})}_onPointerDown(e){if(!this.enabled)return;const o=e=>{if(!this._dragging){if(((t,e,o=10)=>Math.abs(t.clientX-e.x)<o&&Math.abs(t.clientY-e.y)<o)(e,this._pointerStart))return;this._dragging=!0}const o=V.set(e.clientX,e.clientY).sub(this._pointerStart).multiplyScalar(1/this._domRect.width*Math.PI),s=this.coordinateConversion(k.subVectors(this.camera.position,this.target)),n=q.setFromVector3(s);n.theta=r-o.x,n.phi=t.clamp(a-o.y,u,Math.PI-u),this.coordinateConversion(this.camera.position.setFromSpherical(n),!0).add(this.target),this.camera.lookAt(this.target),this.quaternion.copy(this.camera.quaternion).invert(),this._updateOrientation(!1),this.dispatchEvent({type:"change"})},s=()=>{if(document.removeEventListener("pointermove",o,!1),document.removeEventListener("pointerup",s,!1),!this._dragging)return this._handleClick(e);this._focus&&(U(this._focus,!1),this._focus=null),this._dragging=!1,this.dispatchEvent({type:"end"})};if(this.animating)return;e.preventDefault(),this._pointerStart.set(e.clientX,e.clientY);const n=this.coordinateConversion(k.subVectors(this.camera.position,this.target)),i=q.setFromVector3(n),r=i.theta,a=i.phi;this.calc_distance=i.radius,document.addEventListener("pointermove",o,!1),document.addEventListener("pointerup",s,!1),this.dispatchEvent({type:"start"})}coordinateConversion(t,e=!1){const{x:o,y:s,z:n}=t,r=i.Object3D.DEFAULT_UP;return 1===r.x?e?t.set(s,n,o):t.set(n,o,s):1===r.z?e?t.set(n,o,s):t.set(s,n,o):t}_onPointerMove(t){this.enabled&&!this._dragging&&(this._background&&z(this._background,!0),this._handleHover(t))}_onPointerLeave(){this.enabled&&!this._dragging&&(this._background&&z(this._background,!1),this._focus&&U(this._focus,!1),this._domElement.style.cursor="")}_handleClick(t){const e=d(t,this._domRect,this._camera,this._intersections);this._focus&&(U(this._focus,!1),this._focus=null),e&&(this.setOrientation(e.object.position),this.dispatchEvent({type:"change"}))}_handleHover(t){const e=d(t,this._domRect,this._camera,this._intersections),o=e?.object||null;this._focus!==o&&(this._domElement.style.cursor=o?"pointer":"",this._focus&&U(this._focus,!1),(this._focus=o)?U(o,!0):l(this._options,this._intersections,this.camera))}}exports.T3DEzViewportGizmo=$;
|
|
1
|
+
"use strict";require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js");var t=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/src/math/MathUtils.cjs.js"),e=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/utils/BufferGeometryUtils.cjs.js"),o=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/Line2.cjs.js"),n=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineGeometry.cjs.js"),s=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineMaterial.cjs.js"),i=require("../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");const r=(t,e)=>{const[o,n]=e.split("-");return Object.assign(t.style,{left:"left"===n?"0":"center"===n?"50%":"",right:"right"===n?"0":"",top:"top"===o?"0":"bottom"===o?"":"50%",bottom:"bottom"===o?"0":"",transform:`${"center"===n?"translateX(-50%)":""} ${"center"===o?"translateY(-50%)":""}`}),e},a=[["x",0,3],["y",1,4],["z",2,5]],c=new i.Vector3;function l({isSphere:e},o,n){e&&(c.set(0,0,1).applyQuaternion(n.quaternion),a.forEach(([e,n,s])=>{const i=c[e];let r=o[n],a=r.userData.opacity;r.material.opacity=t.clamp(i>=0?a:a/2,0,1),r=o[s],a=r.userData.opacity,r.material.opacity=t.clamp(i>=0?a/2:a,0,1)}))}const h=new i.Raycaster,d=new i.Vector2,p=(t,e,o,n)=>{d.set((t.clientX-e.left)/e.width*2-1,-(t.clientY-e.top)/e.height*2+1),h.setFromCamera(d,o);const s=h.intersectObjects(n,!1);if(s.length>0){s.sort((t,e)=>t.distance-e.distance);const t=.2,e=s[0].distance,o=s.filter(o=>o.distance<=e+t);o.length>1&&(o.sort((t,e)=>(e.object.userData.intersectionOrder||0)-(t.object.userData.intersectionOrder||0)),s.splice(0,o.length,...o))}const i=s.length?s[0]:null;return i&&i.object.visible?i:null},u=1e-6,m=2*Math.PI,_=["x","y","z"],g=[..._,"nx","ny","nz"],y=["x","z","y","nx","nz","ny"],f=["z","x","y","nz","nx","ny"],b="Right",w="Top",v="Front",x="Left",S="Bottom",E="Back",M=[b,w,v,x,S,E].map(t=>t.toLocaleLowerCase()),z=(t,e=!0)=>{const{material:o,userData:n}=t,{color:s,opacity:i}=e?n.hover:n;o.color.set(s),o.opacity=i},L=t=>JSON.parse(JSON.stringify(t)),j={yUp:{x:b,y:w,z:v,nx:x,ny:S,nz:E},zUp:{x:b,y:E,z:w,nx:x,ny:v,nz:S},xUp:{x:w,y:v,z:b,nx:S,ny:E,nz:x}};function D(t,...e){if(t instanceof HTMLElement||"object"!=typeof t||null===t)return t;for(const o of e)for(const e in o)"container"!==e&&e in o&&(void 0===t[e]?t[e]=o[e]:"object"!=typeof o[e]||Array.isArray(o[e])||(t[e]=D(t[e]||{},o[e])));return t}const A=(t,e=2)=>{const o=new i.Color,n=2*e,{isSphere:s,resolution:r,radius:a,font:c,corners:l,edges:h}=t,d=g.map(e=>({...t[e],radius:a}));s&&l.enabled&&d.push(l),s&&h.enabled&&d.push(h);const p=document.createElement("canvas"),u=p.getContext("2d");if(null==u)throw new Error("Failed to get 2d context");p.width=2*r+2*n,p.height=r*d.length+n*d.length;const[m,_]=function(e,o,n){const i=[...e].sort((t,e)=>(t.label?.length||0)-(e.label?.length||0)).pop().label,{family:r,weight:a}=n,c=s?Math.sqrt(Math.pow(.7*o,2)/2):o;let l=c;t.font.size>0&&(l=t.font.size);let h=0,d=0;if(null==u)throw new Error("Failed to get 2d context");do{u.font=`${a} ${l}px ${r}`;const t=u.measureText(i);h=t.width,d=t.fontBoundingBoxDescent,l--}while(h>c&&l>0);const p=c/d,m=Math.min(c/h,p),_=Math.floor(l*m);return[`${a} ${_}px ${r}`,p]}(d,r,c);d.forEach(({radius:t,label:o,color:s,labelColor:i,border:a,hover:{color:c,labelColor:l,border:h}},d)=>{const p=r*d+d*n+e;x(e,p,e,r,t,o,a,s,i),x(r+3*e,p,e,r,t,o,h??a,c??s,l??i)});const y=d.length,f=e/(2*r),b=e/(6*r),w=1/y,v=new i.CanvasTexture(p);return v.repeat.set(.5-2*f,w-2*b),v.offset.set(f,1-b),Object.assign(v,{colorSpace:i.SRGBColorSpace,wrapS:i.RepeatWrapping,wrapT:i.RepeatWrapping,userData:{offsetX:f,offsetY:b,cellHeight:w}}),v;function x(t,e,n,i,r,a,c,l,h){if(r*=i/2,null==u)throw new Error("Failed to get 2d context");if(null!=l&&""!==l&&(d(),u.fillStyle=o.set(l).getStyle(),u.fill()),c&&c.size){const n=c.size*i/2;t+=n,e+=n,i-=c.size*i,r=Math.max(0,r-n),d(),u.strokeStyle=o.set(c.color).getStyle(),u.lineWidth=c.size*i,u.stroke()}function d(){if(null==u)throw new Error("Failed to get 2d context");u.beginPath(),u.moveTo(t+r,e),u.lineTo(t+i-r,e),u.arcTo(t+i,e,t+i,e+r,r),u.lineTo(t+i,e+i-r),u.arcTo(t+i,e+i,t+i-r,e+i,r),u.lineTo(t+r,e+i),u.arcTo(t,e+i,t,e+i-r,r),u.lineTo(t,e+r),u.arcTo(t,e,t+r,e,r),u.closePath()}a&&function(t,e,o,n,i){t.font=m,t.textAlign="center",t.textBaseline="middle",t.fillStyle=i,t.fillText(n,e,o+(s?_:0))}(u,t+i/2,e+(i+n)/2,a,o.set(h).getStyle())}},C=(t,e)=>{const{offset:o,userData:{offsetY:n,cellHeight:s}}=t;o.y=1-(e+1)*s+n};function O(t,e,o=2,n=2){const s=o/2-t,r=n/2-t,a=t/o,c=(o-t)/o,l=t/n,h=(n-t)/n,d=[s,r,0,-s,r,0,-s,-r,0,s,-r,0],p=[c,h,a,h,a,l,c,l],u=[3*(e+1)+3,3*(e+1)+4,e+4,e+5,2*(e+1)+4,2,1,2*(e+1)+3,3,4*(e+1)+3,4,0],m=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11].map(t=>u[t]);let _,g,y,f,b,w,v,x;for(let o=0;o<4;o++){f=o<1||o>2?s:-s,b=o<2?r:-r,w=o<1||o>2?c:a,v=o<2?h:l;for(let n=0;n<=e;n++)_=Math.PI/2*(o+n/e),g=Math.cos(_),y=Math.sin(_),d.push(f+t*g,b+t*y,0),p.push(w+a*g,v+l*y),n<e&&(x=(e+1)*o+n+4,m.push(o,x,x+1))}return(new i.BufferGeometry).setIndex(new i.BufferAttribute(new Uint32Array(m),1)).setAttribute("position",new i.BufferAttribute(new Float32Array(d),3)).setAttribute("uv",new i.BufferAttribute(new Float32Array(p),2))}const P=t=>{const{corners:r,edges:a}=t,c=[],l=A(t),h=((t,e)=>{const o=new i.Vector3,{isSphere:n,radius:s,smoothness:r,type:a}=t,c="rounded-cube"===a?2-2*t.edges.radius:2,l=O(s,r,c,c);return g.map((s,r)=>{const a=r<3,c=g[r],h=r?e.clone():e;C(h,r);const{enabled:d,scale:p,opacity:u,hover:m}=t[c],_={map:h,opacity:u,transparent:!0},y=n?new i.Sprite(new i.SpriteMaterial(_)):new i.Mesh(l,new i.MeshBasicMaterial(_)),f=a?c:c[1];if(y.position[f]=(a?1:-1)*(n?1.3:1),!n){y.lookAt(o.copy(y.position).multiplyScalar(1.7));const t=1===i.Object3D.DEFAULT_UP.z,e=1===i.Object3D.DEFAULT_UP.x;(t||e)&&("z"===c&&t||"x"===c&&e?y.rotateZ(-Math.PI/2):("nz"===c&&t||"nx"===c&&e)&&y.rotateZ(Math.PI/2))}return y.scale.setScalar(p),y.renderOrder=1,y.visible=d,y.userData={scale:p,opacity:u,hover:m},y})})(t,l);c.push(...h),r.enabled&&c.push(...((t,e)=>{const{isSphere:o,corners:n,type:s}=t,r="rounded-cube"===s;if(!n.enabled)return[];const{color:a,opacity:c,scale:l,radius:h,smoothness:d,hover:p}=n,u=o?null:r?new i.SphereGeometry(h,2*d,d):O(h,d),m={transparent:!0,opacity:c,map:null,color:0},_=r?1-h:.85,g=[1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1].map(t=>t*_),y=new i.Vector3;return Array(g.length/3).fill(0).map((t,n)=>{if(o){const t=e.clone();C(t,6),m.map=t}else m.color=a;const s=o?new i.Sprite(new i.SpriteMaterial(m)):new i.Mesh(u,new i.MeshBasicMaterial(m)),r=3*n;return s.position.set(g[r],g[r+1],g[r+2]),o&&s.position.normalize().multiplyScalar(1.7),s.scale.setScalar(l),s.lookAt(y.copy(s.position).multiplyScalar(2)),s.renderOrder=1,s.userData={color:a,opacity:c,scale:l,hover:p,intersectionOrder:1},s})})(t,l)),a.enabled&&c.push(...((t,e,o)=>{const{isSphere:n,edges:s,type:r}=t,a="rounded-cube"===r;if(!s.enabled)return[];const{color:c,opacity:l,scale:h,hover:d,radius:p,smoothness:u}=s,m=a?2-2*p:1.2,_=n?null:a?new i.CylinderGeometry(p,p,m,4*u):O(p,u,m,.25),g={transparent:!0,opacity:l,map:null,color:0},y=a?1-p:.925,f=[0,1,1,0,-1,1,1,0,1,-1,0,1,0,1,-1,0,-1,-1,1,0,-1,-1,0,-1,1,1,0,1,-1,0,-1,1,0,-1,-1,0].map(t=>t*y),b=new i.Vector3,w=new i.Vector3(0,1,0);return Array(f.length/3).fill(0).map((t,s)=>{if(n){const t=e.clone();C(t,o),g.map=t}else g.color=c;const r=n?new i.Sprite(new i.SpriteMaterial(g)):new i.Mesh(_,new i.MeshBasicMaterial(g)),p=3*s;return r.position.set(f[p],f[p+1],f[p+2]),n&&r.position.normalize().multiplyScalar(1.7),r.scale.setScalar(h),r.up.copy(w),r.lookAt(b.copy(r.position).multiplyScalar(2)),a?(n||r.position.z||(r.rotation.z=Math.PI),n||r.position.x||(r.rotation.x=0),n||r.position.x||(r.rotation.z=Math.PI/2)):n||r.position.y||(r.rotation.z=Math.PI/2),r.renderOrder=1,r.userData={color:c,opacity:l,scale:h,hover:d},r})})(t,l,r.enabled?7:6));const d=((t,o)=>{const{isSphere:n,background:{enabled:s,color:r,opacity:a,hover:c}}=o;let l;const h=new i.MeshBasicMaterial({color:r,side:i.BackSide,opacity:a,transparent:!0,depthWrite:!1});if(!s)return null;if(n)l=new i.Mesh(new i.SphereGeometry(1.8,64,64),h);else{let o;t.forEach(t=>{const n=t.scale.x;t.scale.setScalar(.9),t.updateMatrix();const s=t.geometry.clone();s.applyMatrix4(t.matrix),o=o?e.mergeGeometries([o,s]):s,t.scale.setScalar(n)}),l=new i.Mesh(o,h)}return l.userData={color:r,opacity:a,hover:c},l})(h,t),p=(t=>{const e=new i.Color,r=[],a=[],{isSphere:c}=t;if(g.forEach((o,n)=>{const{enabled:s,line:i,scale:l,color:h}=t[o];if(!s||!i)return;const d=(c?1.3-l/2:.975)*(n<3?1:-1);r.push(o.includes("x")?d:0,o.includes("y")?d:0,o.includes("z")?d:0,0,0,0);const p=e.set(h).toArray();a.push(...p,...p)}),!r.length)return null;const l=(new n.LineGeometry).setPositions(r).setColors(a),h=new s.LineMaterial({linewidth:t.lineWidth,vertexColors:!0,resolution:new i.Vector2(window.innerWidth,window.innerHeight)});return new o.Line2(l,h).computeLineDistances()})(t);return[c,d,p]},U=(t,e=!0)=>{const{material:o,userData:n}=t,{opacity:s,color:i,scale:r}=e?n.hover:n;var a,c;t.scale.setScalar(r),o.opacity=s,o.map?(a=o.map,c=e,a.offset.x=(c?.5:0)+a.userData.offsetX):o.color.set(i)},T=new i.Matrix4,q=new i.Spherical,V=new i.Vector2,k=new i.Vector3,F=new i.Vector4,B=(new i.Quaternion).setFromAxisAngle(new i.Vector3(0,0,1),Math.PI/2),R=(new i.Quaternion).setFromAxisAngle(new i.Vector3(0,0,1),-Math.PI/2);class $ extends i.Object3D{enabled=!0;camera;renderer;options;target=new i.Vector3;animated=!0;speed=1;animating=!1;_options;_intersections;_background=null;_viewport=[0,0,0,0];_originalViewport=[0,0,0,0];_originalScissor=[0,0,0,0];_scene;_camera;_container;_domElement;_domRect;_dragging=!1;calc_distance=0;_clock=new i.Clock;_targetQuaternion=new i.Quaternion;_quaternionStart=new i.Quaternion;_quaternionEnd=new i.Quaternion;_pointerStart=new i.Vector2;_focus=null;_placement;_controls;_controlsListeners;constructor(t,e,o={}){super(),this.camera=t,this.renderer=e,this._scene=(new i.Scene).add(this),this.set(o)}get placement(){return this._placement}set placement(t){this._placement=r(this._domElement,t),this.domUpdate()}set(t={}){this.dispose(),this.options=t,this._options=(t=>{const e=t.type||"sphere",o="sphere"===e,n="rounded-cube"===e,s=t.resolution||o?64:128,r=i.Object3D.DEFAULT_UP,a=1===r.z,c=1===r.x,l=j[a?"zUp":c?"xUp":"yUp"],{container:h}=t;t.container=void 0,(t=JSON.parse(JSON.stringify(t))).container=h;const d=a?y:c?f:g;M.forEach((e,o)=>{t[e]&&(t[d[o]]=t[e])});const p={enabled:!0,color:16777215,opacity:1,scale:.7,labelColor:2236962,line:!1,border:{size:0,color:14540253},hover:{color:o?16777215:9688043,labelColor:2236962,opacity:1,scale:.7,border:{size:0,color:14540253}}},u={line:!1,scale:o?.45:.7,hover:{scale:o?.5:.7}},m={type:e,container:document.body,size:128,placement:"top-right",resolution:s,lineWidth:4,radius:o?1:n?.3:.2,smoothness:18,animated:!0,speed:1,background:{enabled:!0,color:o?16777215:14739180,opacity:o?0:1,hover:{color:o?16777215:14739180,opacity:o?.2:1}},font:{family:"sans-serif",weight:900},offset:{top:10,left:10,bottom:10,right:10},corners:{enabled:!o,color:o?15915362:16777215,opacity:1,scale:o?.15:.2,radius:1,smoothness:18,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:.225}},edges:{enabled:!o,color:o?15915362:n?15658734:16777215,opacity:o?1:0,radius:o?1:.125,smoothness:18,scale:o?.15:1,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:1}},x:{...L(p),...o?{label:"X",color:16725587,line:!0}:{label:l.x}},y:{...L(p),...o?{label:"Y",color:9100032,line:!0}:{label:l.y}},z:{...L(p),...o?{label:"Z",color:2920447,line:!0}:{label:l.z}},nx:{...L(u),label:o?"":l.nx},ny:{...L(u),label:o?"":l.ny},nz:{...L(u),label:o?"":l.nz}};if(D(t,m),n){const e=t;e.edges.radius=e.radius,e.edges.scale=1,e.edges.opacity=1,e.edges.hover.scale=1,e.edges.hover.opacity=1,e.corners.radius=e.radius,e.corners.scale=1,e.corners.opacity=1,e.corners.hover.scale=1,e.corners.hover.opacity=1,e.radius=0,g.forEach(t=>{e[t].scale=1,e[t].opacity=1,e[t].hover.scale=1,e[t].hover.opacity=1})}return _.forEach(e=>D(t[`n${e}`],L(t[e]))),{...t,isSphere:o}})(t),this._camera=this._options.isSphere?new i.OrthographicCamera(-1.8,1.8,1.8,-1.8,5,10):new i.PerspectiveCamera(26,1,5,10),this._camera.position.set(0,0,7);const[e,o,n]=P(this._options);o&&this.add(o),n&&this.add(n),this.add(...e),this._background=o,this._intersections=e;const{container:s,animated:a,speed:c}=this._options;return this.animated=a,this.speed=c,this._container=s?(t=>{const e="string"==typeof t?document.querySelector(t):t;if(!e)throw Error("Invalid DOM element");return e})(s):document.body,this._domElement=(({placement:t,size:e,offset:o,id:n,className:s})=>{const i=document.createElement("div"),{top:a,left:c,right:l,bottom:h}=o;return Object.assign(i.style,{id:n,position:"absolute",zIndex:"1000",height:`${e}px`,width:`${e}px`,margin:`${a}px ${l}px ${h}px ${c}px`,borderRadius:"100%"}),r(i,t),n&&(i.id=n),s&&(i.className=s),i})(this._options),this._domElement.onpointerdown=t=>this._onPointerDown(t),this._domElement.onpointermove=t=>this._onPointerMove(t),this._domElement.onpointerleave=()=>this._onPointerLeave(),this._container.appendChild(this._domElement),this._controls&&this.attachControls(this._controls),this.update(),this}render(){this.animating&&this._animate();const{renderer:t,_viewport:e}=this,o=t.getScissorTest(),n=t.autoClear;return t.autoClear=!1,t.setViewport(...e),o&&t.setScissor(...e),t.clear(!1,!0,!1),t.render(this._scene,this._camera),t.setViewport(...this._originalViewport),o&&t.setScissor(...this._originalScissor),t.autoClear=n,this}domUpdate(){this._domRect=this._domElement.getBoundingClientRect();const t=this.renderer,e=this._domRect,o=t.domElement.getBoundingClientRect();return this._viewport.splice(0,4,e.left-o.left,t.domElement.clientHeight-(e.top-o.top+e.height),e.width,e.height),t.getViewport(F).toArray(this._originalViewport),t.getScissorTest()&&t.getScissor(F).toArray(this._originalScissor),this}cameraUpdate(){return this._updateOrientation(),this}update(t=!0){return t&&this._controls&&this._controls.update(),this.domUpdate().cameraUpdate()}attachControls(t){return this.detachControls(),this.target=t.target,this._controlsListeners={start:()=>t.enabled=!1,end:()=>t.enabled=!0,change:()=>this.update(!1)},this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),t.addEventListener("change",this._controlsListeners.change),this._controls=t,this}detachControls(){if(this._controlsListeners&&this._controls)return this.target=(new i.Vector3).copy(this._controls.target),this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),this._controls.removeEventListener("change",this._controlsListeners.change),this._controlsListeners=void 0,this._controls=void 0,this}dispose(){this.detachControls(),this.children.forEach(t=>{this.remove(t);const e=t;e.material?.dispose(),e.material?.map?.dispose(),e.geometry?.dispose()}),this._domElement?.remove()}_updateOrientation(t=!0){t&&(this.quaternion.copy(this.camera.quaternion).invert(),this.updateMatrixWorld()),l(this._options,this._intersections,this.camera)}_animate(){const{position:t,quaternion:e}=this.camera;if(t.set(0,0,1),!this.animated)return t.applyQuaternion(this._quaternionEnd).multiplyScalar(this.calc_distance).add(this.target),e.copy(this._targetQuaternion),this._updateOrientation(),this.animating=!1,this.dispatchEvent({type:"change"}),void this.dispatchEvent({type:"end"});this._controls&&(this._controls.enabled=!1);const o=this._clock.getDelta()*m*this.speed;if(this._quaternionStart.rotateTowards(this._quaternionEnd,o),t.applyQuaternion(this._quaternionStart).multiplyScalar(this.calc_distance).add(this.target),e.rotateTowards(this._targetQuaternion,o),this._updateOrientation(),requestAnimationFrame(()=>this.dispatchEvent({type:"change"})),this._quaternionStart.angleTo(this._quaternionEnd)<u){if(this._controls){const t=this.camera.position.clone().sub(this.target).normalize();1===i.Object3D.DEFAULT_UP.z&&Math.abs(t.z)>.99?this.camera.position.set(0,-1e-6,this.camera.position.z):1===i.Object3D.DEFAULT_UP.x&&Math.abs(t.x)>.99&&this.camera.position.set(this.camera.position.x,u,0),this._controls.update(),this._controls.enabled=!0}this.animating=!1,this.dispatchEvent({type:"end"})}}setOrientation(t){const e=this.camera,o=this.target;if(k.copy(t).multiplyScalar(this.calc_distance),T.setPosition(k).lookAt(k,this.position,this.up),this._targetQuaternion.setFromRotationMatrix(T),k.add(o),T.lookAt(k,o,this.up),this._quaternionEnd.setFromRotationMatrix(T),T.setPosition(e.position).lookAt(e.position,o,this.up),this._quaternionStart.setFromRotationMatrix(T),1===i.Object3D.DEFAULT_UP.z&&Math.abs(t.z)>.99){const e=Math.sign(t.z);this._targetQuaternion.multiply(1===e?R:B),this._quaternionEnd.multiply(1===e?R:B)}else if(1===i.Object3D.DEFAULT_UP.x&&Math.abs(t.x)>.99){const e=Math.sign(t.x);this._targetQuaternion.multiply(1===e?R:B),this._quaternionEnd.multiply(1===e?R:B)}this.animating=!0,this._clock.start(),this.dispatchEvent({type:"start"})}_onPointerDown(e){if(!this.enabled)return;const o=e=>{if(!this._dragging){if(((t,e,o=10)=>Math.abs(t.clientX-e.x)<o&&Math.abs(t.clientY-e.y)<o)(e,this._pointerStart))return;this._dragging=!0}const o=V.set(e.clientX,e.clientY).sub(this._pointerStart).multiplyScalar(1/this._domRect.width*Math.PI),n=this.coordinateConversion(k.subVectors(this.camera.position,this.target)),s=q.setFromVector3(n);s.theta=r-o.x,s.phi=t.clamp(a-o.y,u,Math.PI-u),this.coordinateConversion(this.camera.position.setFromSpherical(s),!0).add(this.target),this.camera.lookAt(this.target),this.quaternion.copy(this.camera.quaternion).invert(),this._updateOrientation(!1),this.dispatchEvent({type:"change"})},n=()=>{if(document.removeEventListener("pointermove",o,!1),document.removeEventListener("pointerup",n,!1),!this._dragging)return this._handleClick(e);this._focus&&(U(this._focus,!1),this._focus=null),this._dragging=!1,this.dispatchEvent({type:"end"})};if(this.animating)return;e.preventDefault(),this._pointerStart.set(e.clientX,e.clientY);const s=this.coordinateConversion(k.subVectors(this.camera.position,this.target)),i=q.setFromVector3(s),r=i.theta,a=i.phi;this.calc_distance=i.radius,document.addEventListener("pointermove",o,!1),document.addEventListener("pointerup",n,!1),this.dispatchEvent({type:"start"})}coordinateConversion(t,e=!1){const{x:o,y:n,z:s}=t,r=i.Object3D.DEFAULT_UP;return 1===r.x?e?t.set(n,s,o):t.set(s,o,n):1===r.z?e?t.set(s,o,n):t.set(n,s,o):t}_onPointerMove(t){this.enabled&&!this._dragging&&(this._background&&z(this._background,!0),this._handleHover(t))}_onPointerLeave(){this.enabled&&!this._dragging&&(this._background&&z(this._background,!1),this._focus&&U(this._focus,!1),this._domElement.style.cursor="")}_handleClick(t){const e=p(t,this._domRect,this._camera,this._intersections);this._focus&&(U(this._focus,!1),this._focus=null),e&&(this.setOrientation(e.object.position),this.dispatchEvent({type:"change"}))}_handleHover(t){const e=p(t,this._domRect,this._camera,this._intersections),o=e?.object||null;this._focus!==o&&(this._domElement.style.cursor=o?"pointer":"",this._focus&&U(this._focus,!1),(this._focus=o)?U(o,!0):l(this._options,this._intersections,this.camera))}}exports.T3DEzViewportGizmo=$;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{clamp as t}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/src/math/MathUtils.esm.js";import{mergeGeometries as e}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/utils/BufferGeometryUtils.esm.js";import{Line2 as o}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/Line2.esm.js";import{LineGeometry as s}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineGeometry.esm.js";import{LineMaterial as n}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineMaterial.esm.js";import{Quaternion as i,Vector3 as r,Object3D as a,Clock as c,Vector2 as l,Scene as h,OrthographicCamera as d,PerspectiveCamera as p,Vector4 as u,Matrix4 as m,Spherical as _,Raycaster as g,Color as y,CanvasTexture as f,RepeatWrapping as b,SRGBColorSpace as w,Sprite as v,SpriteMaterial as x,Mesh as E,MeshBasicMaterial as S,SphereGeometry as z,CylinderGeometry as L,BackSide as M,BufferGeometry as A,BufferAttribute as P}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";const U=(t,e)=>{const[o,s]=e.split("-");return Object.assign(t.style,{left:"left"===s?"0":"center"===s?"50%":"",right:"right"===s?"0":"",top:"top"===o?"0":"bottom"===o?"":"50%",bottom:"bottom"===o?"0":"",transform:`${"center"===s?"translateX(-50%)":""} ${"center"===o?"translateY(-50%)":""}`}),e},D=[["x",0,3],["y",1,4],["z",2,5]],T=new r;function C({isSphere:e},o,s){e&&(T.set(0,0,1).applyQuaternion(s.quaternion),D.forEach(([e,s,n])=>{const i=T[e];let r=o[s],a=r.userData.opacity;r.material.opacity=t(i>=0?a:a/2,0,1),r=o[n],a=r.userData.opacity,r.material.opacity=t(i>=0?a/2:a,0,1)}))}const k=new g,j=new l,O=(t,e,o,s)=>{j.set((t.clientX-e.left)/e.width*2-1,-(t.clientY-e.top)/e.height*2+1),k.setFromCamera(j,o);const n=k.intersectObjects(s,!1);if(n.length>0){n.sort((t,e)=>t.distance-e.distance);const t=.2,e=n[0].distance,o=n.filter(o=>o.distance<=e+t);o.length>1&&(o.sort((t,e)=>(e.object.userData.intersectionOrder||0)-(t.object.userData.intersectionOrder||0)),n.splice(0,o.length,...o))}const i=n.length?n[0]:null;return i&&i.object.visible?i:null},q=1e-6,F=2*Math.PI,$=["x","y","z"],I=[...$,"nx","ny","nz"],R=["x","z","y","nx","nz","ny"],V=["z","x","y","nz","nx","ny"],Q="Right",B="Top",X="Front",Y="Left",H="Bottom",N="Back",W=[Q,B,X,Y,H,N].map(t=>t.toLocaleLowerCase()),J=(t,e=!0)=>{const{material:o,userData:s}=t,{color:n,opacity:i}=e?s.hover:s;o.color.set(n),o.opacity=i},Z=t=>JSON.parse(JSON.stringify(t)),G={yUp:{x:Q,y:B,z:X,nx:Y,ny:H,nz:N},zUp:{x:Q,y:N,z:B,nx:Y,ny:X,nz:H},xUp:{x:B,y:X,z:Q,nx:H,ny:N,nz:Y}};function K(t,...e){if(t instanceof HTMLElement||"object"!=typeof t||null===t)return t;for(const o of e)for(const e in o)"container"!==e&&e in o&&(void 0===t[e]?t[e]=o[e]:"object"!=typeof o[e]||Array.isArray(o[e])||(t[e]=K(t[e]||{},o[e])));return t}const tt=(t,e=2)=>{const o=new y,s=2*e,{isSphere:n,resolution:i,radius:r,font:a,corners:c,edges:l}=t,h=I.map(e=>({...t[e],radius:r}));n&&c.enabled&&h.push(c),n&&l.enabled&&h.push(l);const d=document.createElement("canvas"),p=d.getContext("2d");d.width=2*i+2*s,d.height=i*h.length+s*h.length;const[u,m]=function(e,o,s){const i=[...e].sort((t,e)=>(t.label?.length||0)-(e.label?.length||0)).pop().label,{family:r,weight:a}=s,c=n?Math.sqrt(Math.pow(.7*o,2)/2):o;let l=c;t.font.size>0&&(l=t.font.size);let h=0,d=0;do{p.font=`${a} ${l}px ${r}`;const t=p.measureText(i);h=t.width,d=t.fontBoundingBoxDescent,l--}while(h>c&&l>0);const u=c/d,m=Math.min(c/h,u),_=Math.floor(l*m);return[`${a} ${_}px ${r}`,u]}(h,i,a);h.forEach(({radius:t,label:o,color:n,labelColor:r,border:a,hover:{color:c,labelColor:l,border:h}},d)=>{const p=i*d+d*s+e;S(e,p,e,i,t,o,a,n,r),S(i+3*e,p,e,i,t,o,h??a,c??n,l??r)});const _=h.length,g=e/(2*i),v=e/(6*i),x=1/_,E=new f(d);return E.repeat.set(.5-2*g,x-2*v),E.offset.set(g,1-v),Object.assign(E,{colorSpace:w,wrapS:b,wrapT:b,userData:{offsetX:g,offsetY:v,cellHeight:x}}),E;function S(t,e,s,i,r,a,c,l,h){if(r*=i/2,null!=l&&""!==l&&(d(),p.fillStyle=o.set(l).getStyle(),p.fill()),c&&c.size){const s=c.size*i/2;t+=s,e+=s,i-=c.size*i,r=Math.max(0,r-s),d(),p.strokeStyle=o.set(c.color).getStyle(),p.lineWidth=c.size*i,p.stroke()}function d(){p.beginPath(),p.moveTo(t+r,e),p.lineTo(t+i-r,e),p.arcTo(t+i,e,t+i,e+r,r),p.lineTo(t+i,e+i-r),p.arcTo(t+i,e+i,t+i-r,e+i,r),p.lineTo(t+r,e+i),p.arcTo(t,e+i,t,e+i-r,r),p.lineTo(t,e+r),p.arcTo(t,e,t+r,e,r),p.closePath()}a&&function(t,e,o,s,i){t.font=u,t.textAlign="center",t.textBaseline="middle",t.fillStyle=i,t.fillText(s,e,o+(n?m:0))}(p,t+i/2,e+(i+s)/2,a,o.set(h).getStyle())}},et=(t,e)=>{const{offset:o,userData:{offsetY:s,cellHeight:n}}=t;o.y=1-(e+1)*n+s};function ot(t,e,o=2,s=2){const n=o/2-t,i=s/2-t,r=t/o,a=(o-t)/o,c=t/s,l=(s-t)/s,h=[n,i,0,-n,i,0,-n,-i,0,n,-i,0],d=[a,l,r,l,r,c,a,c],p=[3*(e+1)+3,3*(e+1)+4,e+4,e+5,2*(e+1)+4,2,1,2*(e+1)+3,3,4*(e+1)+3,4,0],u=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11].map(t=>p[t]);let m,_,g,y,f,b,w,v;for(let o=0;o<4;o++){y=o<1||o>2?n:-n,f=o<2?i:-i,b=o<1||o>2?a:r,w=o<2?l:c;for(let s=0;s<=e;s++)m=Math.PI/2*(o+s/e),_=Math.cos(m),g=Math.sin(m),h.push(y+t*_,f+t*g,0),d.push(b+r*_,w+c*g),s<e&&(v=(e+1)*o+s+4,u.push(o,v,v+1))}return(new A).setIndex(new P(new Uint32Array(u),1)).setAttribute("position",new P(new Float32Array(h),3)).setAttribute("uv",new P(new Float32Array(d),2))}const st=t=>{const{corners:i,edges:c}=t,h=[],d=tt(t),p=((t,e)=>{const o=new r,{isSphere:s,radius:n,smoothness:i,type:c}=t,l="rounded-cube"===c?2-2*t.edges.radius:2,h=ot(n,i,l,l);return I.map((n,i)=>{const r=i<3,c=I[i],l=i?e.clone():e;et(l,i);const{enabled:d,scale:p,opacity:u,hover:m}=t[c],_={map:l,opacity:u,transparent:!0},g=s?new v(new x(_)):new E(h,new S(_)),y=r?c:c[1];if(g.position[y]=(r?1:-1)*(s?1.3:1),!s){g.lookAt(o.copy(g.position).multiplyScalar(1.7));const t=1===a.DEFAULT_UP.z,e=1===a.DEFAULT_UP.x;(t||e)&&("z"===c&&t||"x"===c&&e?g.rotateZ(-Math.PI/2):("nz"===c&&t||"nx"===c&&e)&&g.rotateZ(Math.PI/2))}return g.scale.setScalar(p),g.renderOrder=1,g.visible=d,g.userData={scale:p,opacity:u,hover:m},g})})(t,d);h.push(...p),i.enabled&&h.push(...((t,e)=>{const{isSphere:o,corners:s,type:n}=t,i="rounded-cube"===n;if(!s.enabled)return[];const{color:a,opacity:c,scale:l,radius:h,smoothness:d,hover:p}=s,u=o?null:i?new z(h,2*d,d):ot(h,d),m={transparent:!0,opacity:c},_=i?1-h:.85,g=[1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1].map(t=>t*_),y=new r;return Array(g.length/3).fill(0).map((t,s)=>{if(o){const t=e.clone();et(t,6),m.map=t}else m.color=a;const n=o?new v(new x(m)):new E(u,new S(m)),i=3*s;return n.position.set(g[i],g[i+1],g[i+2]),o&&n.position.normalize().multiplyScalar(1.7),n.scale.setScalar(l),n.lookAt(y.copy(n.position).multiplyScalar(2)),n.renderOrder=1,n.userData={color:a,opacity:c,scale:l,hover:p,intersectionOrder:1},n})})(t,d)),c.enabled&&h.push(...((t,e,o)=>{const{isSphere:s,edges:n,type:i}=t,a="rounded-cube"===i;if(!n.enabled)return[];const{color:c,opacity:l,scale:h,hover:d,radius:p,smoothness:u}=n,m=a?2-2*p:1.2,_=s?null:a?new L(p,p,m,4*u):ot(p,u,m,.25),g={transparent:!0,opacity:l},y=a?1-p:.925,f=[0,1,1,0,-1,1,1,0,1,-1,0,1,0,1,-1,0,-1,-1,1,0,-1,-1,0,-1,1,1,0,1,-1,0,-1,1,0,-1,-1,0].map(t=>t*y),b=new r,w=new r(0,1,0);return Array(f.length/3).fill(0).map((t,n)=>{if(s){const t=e.clone();et(t,o),g.map=t}else g.color=c;const i=s?new v(new x(g)):new E(_,new S(g)),r=3*n;return i.position.set(f[r],f[r+1],f[r+2]),s&&i.position.normalize().multiplyScalar(1.7),i.scale.setScalar(h),i.up.copy(w),i.lookAt(b.copy(i.position).multiplyScalar(2)),a?(s||i.position.z||(i.rotation.z=Math.PI),s||i.position.x||(i.rotation.x=0),s||i.position.x||(i.rotation.z=Math.PI/2)):s||i.position.y||(i.rotation.z=Math.PI/2),i.renderOrder=1,i.userData={color:c,opacity:l,scale:h,hover:d},i})})(t,d,i.enabled?7:6));const u=((t,o)=>{const{isSphere:s,background:{enabled:n,color:i,opacity:r,hover:a}}=o;let c;const l=new S({color:i,side:M,opacity:r,transparent:!0,depthWrite:!1});if(!n)return null;if(s)c=new E(new z(1.8,64,64),l);else{let o;t.forEach(t=>{const s=t.scale.x;t.scale.setScalar(.9),t.updateMatrix();const n=t.geometry.clone();n.applyMatrix4(t.matrix),o=o?e([o,n]):n,t.scale.setScalar(s)}),c=new E(o,l)}return c.userData={color:i,opacity:r,hover:a},c})(p,t),m=(t=>{const e=new y,i=[],r=[],{isSphere:a}=t;if(I.forEach((o,s)=>{const{enabled:n,line:c,scale:l,color:h}=t[o];if(!n||!c)return;const d=(a?1.3-l/2:.975)*(s<3?1:-1);i.push(o.includes("x")?d:0,o.includes("y")?d:0,o.includes("z")?d:0,0,0,0);const p=e.set(h).toArray();r.push(...p,...p)}),!i.length)return null;const c=(new s).setPositions(i).setColors(r),h=new n({linewidth:t.lineWidth,vertexColors:!0,resolution:new l(window.innerWidth,window.innerHeight)});return new o(c,h).computeLineDistances()})(t);return[h,u,m]},nt=(t,e=!0)=>{const{material:o,userData:s}=t,{opacity:n,color:i,scale:r}=e?s.hover:s;var a,c;t.scale.setScalar(r),o.opacity=n,o.map?(a=o.map,c=e,a.offset.x=(c?.5:0)+a.userData.offsetX):o.color.set(i)},it=new m,rt=new _,at=new l,ct=new r,lt=new u,ht=(new i).setFromAxisAngle(new r(0,0,1),Math.PI/2),dt=(new i).setFromAxisAngle(new r(0,0,1),-Math.PI/2);class pt extends a{enabled=!0;camera;renderer;options;target=new r;animated=!0;speed=1;animating=!1;_options;_intersections;_background=null;_viewport=[0,0,0,0];_originalViewport=[0,0,0,0];_originalScissor=[0,0,0,0];_scene;_camera;_container;_domElement;_domRect;_dragging=!1;calc_distance=0;_clock=new c;_targetQuaternion=new i;_quaternionStart=new i;_quaternionEnd=new i;_pointerStart=new l;_focus=null;_placement;_controls;_controlsListeners;constructor(t,e,o={}){super(),this.camera=t,this.renderer=e,this._scene=(new h).add(this),this.set(o)}get placement(){return this._placement}set placement(t){this._placement=U(this._domElement,t),this.domUpdate()}set(t={}){this.dispose(),this.options=t,this._options=(t=>{const e=t.type||"sphere",o="sphere"===e,s="rounded-cube"===e,n=t.resolution||o?64:128,i=a.DEFAULT_UP,r=1===i.z,c=1===i.x,l=G[r?"zUp":c?"xUp":"yUp"],{container:h}=t;t.container=void 0,(t=JSON.parse(JSON.stringify(t))).container=h;const d=r?R:c?V:I;W.forEach((e,o)=>{t[e]&&(t[d[o]]=t[e])});const p={enabled:!0,color:16777215,opacity:1,scale:.7,labelColor:2236962,line:!1,border:{size:0,color:14540253},hover:{color:o?16777215:9688043,labelColor:2236962,opacity:1,scale:.7,border:{size:0,color:14540253}}},u={line:!1,scale:o?.45:.7,hover:{scale:o?.5:.7}},m={type:e,container:document.body,size:128,placement:"top-right",resolution:n,lineWidth:4,radius:o?1:s?.3:.2,smoothness:18,animated:!0,speed:1,background:{enabled:!0,color:o?16777215:14739180,opacity:o?0:1,hover:{color:o?16777215:14739180,opacity:o?.2:1}},font:{family:"sans-serif",weight:900},offset:{top:10,left:10,bottom:10,right:10},corners:{enabled:!o,color:o?15915362:16777215,opacity:1,scale:o?.15:.2,radius:1,smoothness:18,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:.225}},edges:{enabled:!o,color:o?15915362:s?15658734:16777215,opacity:o?1:0,radius:o?1:.125,smoothness:18,scale:o?.15:1,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:1}},x:{...Z(p),...o?{label:"X",color:16725587,line:!0}:{label:l.x}},y:{...Z(p),...o?{label:"Y",color:9100032,line:!0}:{label:l.y}},z:{...Z(p),...o?{label:"Z",color:2920447,line:!0}:{label:l.z}},nx:{...Z(u),label:o?"":l.nx},ny:{...Z(u),label:o?"":l.ny},nz:{...Z(u),label:o?"":l.nz}};if(K(t,m),s){const e=t;e.edges.radius=e.radius,e.edges.scale=1,e.edges.opacity=1,e.edges.hover.scale=1,e.edges.hover.opacity=1,e.corners.radius=e.radius,e.corners.scale=1,e.corners.opacity=1,e.corners.hover.scale=1,e.corners.hover.opacity=1,e.radius=0,I.forEach(t=>{e[t].scale=1,e[t].opacity=1,e[t].hover.scale=1,e[t].hover.opacity=1})}return $.forEach(e=>K(t[`n${e}`],Z(t[e]))),{...t,isSphere:o}})(t),this._camera=this._options.isSphere?new d(-1.8,1.8,1.8,-1.8,5,10):new p(26,1,5,10),this._camera.position.set(0,0,7);const[e,o,s]=st(this._options);o&&this.add(o),s&&this.add(s),this.add(...e),this._background=o,this._intersections=e;const{container:n,animated:i,speed:r}=this._options;return this.animated=i,this.speed=r,this._container=n?(t=>{const e="string"==typeof t?document.querySelector(t):t;if(!e)throw Error("Invalid DOM element");return e})(n):document.body,this._domElement=(({placement:t,size:e,offset:o,id:s,className:n})=>{const i=document.createElement("div"),{top:r,left:a,right:c,bottom:l}=o;return Object.assign(i.style,{id:s,position:"absolute",zIndex:"1000",height:`${e}px`,width:`${e}px`,margin:`${r}px ${c}px ${l}px ${a}px`,borderRadius:"100%"}),U(i,t),s&&(i.id=s),n&&(i.className=n),i})(this._options),this._domElement.onpointerdown=t=>this._onPointerDown(t),this._domElement.onpointermove=t=>this._onPointerMove(t),this._domElement.onpointerleave=()=>this._onPointerLeave(),this._container.appendChild(this._domElement),this._controls&&this.attachControls(this._controls),this.update(),this}render(){this.animating&&this._animate();const{renderer:t,_viewport:e}=this,o=t.getScissorTest(),s=t.autoClear;return t.autoClear=!1,t.setViewport(...e),o&&t.setScissor(...e),t.clear(!1,!0,!1),t.render(this._scene,this._camera),t.setViewport(...this._originalViewport),o&&t.setScissor(...this._originalScissor),t.autoClear=s,this}domUpdate(){this._domRect=this._domElement.getBoundingClientRect();const t=this.renderer,e=this._domRect,o=t.domElement.getBoundingClientRect();return this._viewport.splice(0,4,e.left-o.left,t.domElement.clientHeight-(e.top-o.top+e.height),e.width,e.height),t.getViewport(lt).toArray(this._originalViewport),t.getScissorTest()&&t.getScissor(lt).toArray(this._originalScissor),this}cameraUpdate(){return this._updateOrientation(),this}update(t=!0){return t&&this._controls&&this._controls.update(),this.domUpdate().cameraUpdate()}attachControls(t){return this.detachControls(),this.target=t.target,this._controlsListeners={start:()=>t.enabled=!1,end:()=>t.enabled=!0,change:()=>this.update(!1)},this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),t.addEventListener("change",this._controlsListeners.change),this._controls=t,this}detachControls(){if(this._controlsListeners&&this._controls)return this.target=(new r).copy(this._controls.target),this.removeEventListener("start",this._controlsListeners.start),this.removeEventListener("end",this._controlsListeners.end),this._controls.removeEventListener("change",this._controlsListeners.change),this._controlsListeners=void 0,this._controls=void 0,this}dispose(){this.detachControls(),this.children.forEach(t=>{this.remove(t);const e=t;e.material?.dispose(),e.material?.map?.dispose(),e.geometry?.dispose()}),this._domElement?.remove()}_updateOrientation(t=!0){t&&(this.quaternion.copy(this.camera.quaternion).invert(),this.updateMatrixWorld()),C(this._options,this._intersections,this.camera)}_animate(){const{position:t,quaternion:e}=this.camera;if(t.set(0,0,1),!this.animated)return t.applyQuaternion(this._quaternionEnd).multiplyScalar(this.calc_distance).add(this.target),e.copy(this._targetQuaternion),this._updateOrientation(),this.animating=!1,this.dispatchEvent({type:"change"}),void this.dispatchEvent({type:"end"});this._controls&&(this._controls.enabled=!1);const o=this._clock.getDelta()*F*this.speed;if(this._quaternionStart.rotateTowards(this._quaternionEnd,o),t.applyQuaternion(this._quaternionStart).multiplyScalar(this.calc_distance).add(this.target),e.rotateTowards(this._targetQuaternion,o),this._updateOrientation(),requestAnimationFrame(()=>this.dispatchEvent({type:"change"})),this._quaternionStart.angleTo(this._quaternionEnd)<q){if(this._controls){const t=this.camera.position.clone().sub(this.target).normalize();1===a.DEFAULT_UP.z&&Math.abs(t.z)>.99?this.camera.position.set(0,-1e-6,this.camera.position.z):1===a.DEFAULT_UP.x&&Math.abs(t.x)>.99&&this.camera.position.set(this.camera.position.x,q,0),this._controls.update(),this._controls.enabled=!0}this.animating=!1,this.dispatchEvent({type:"end"})}}setOrientation(t){const e=this.camera,o=this.target;if(ct.copy(t).multiplyScalar(this.calc_distance),it.setPosition(ct).lookAt(ct,this.position,this.up),this._targetQuaternion.setFromRotationMatrix(it),ct.add(o),it.lookAt(ct,o,this.up),this._quaternionEnd.setFromRotationMatrix(it),it.setPosition(e.position).lookAt(e.position,o,this.up),this._quaternionStart.setFromRotationMatrix(it),1===a.DEFAULT_UP.z&&Math.abs(t.z)>.99){const e=Math.sign(t.z);this._targetQuaternion.multiply(1===e?dt:ht),this._quaternionEnd.multiply(1===e?dt:ht)}else if(1===a.DEFAULT_UP.x&&Math.abs(t.x)>.99){const e=Math.sign(t.x);this._targetQuaternion.multiply(1===e?dt:ht),this._quaternionEnd.multiply(1===e?dt:ht)}this.animating=!0,this._clock.start(),this.dispatchEvent({type:"start"})}_onPointerDown(e){if(!this.enabled)return;const o=e=>{if(!this._dragging){if(((t,e,o=10)=>Math.abs(t.clientX-e.x)<o&&Math.abs(t.clientY-e.y)<o)(e,this._pointerStart))return;this._dragging=!0}const o=at.set(e.clientX,e.clientY).sub(this._pointerStart).multiplyScalar(1/this._domRect.width*Math.PI),s=this.coordinateConversion(ct.subVectors(this.camera.position,this.target)),n=rt.setFromVector3(s);n.theta=r-o.x,n.phi=t(a-o.y,q,Math.PI-q),this.coordinateConversion(this.camera.position.setFromSpherical(n),!0).add(this.target),this.camera.lookAt(this.target),this.quaternion.copy(this.camera.quaternion).invert(),this._updateOrientation(!1),this.dispatchEvent({type:"change"})},s=()=>{if(document.removeEventListener("pointermove",o,!1),document.removeEventListener("pointerup",s,!1),!this._dragging)return this._handleClick(e);this._focus&&(nt(this._focus,!1),this._focus=null),this._dragging=!1,this.dispatchEvent({type:"end"})};if(this.animating)return;e.preventDefault(),this._pointerStart.set(e.clientX,e.clientY);const n=this.coordinateConversion(ct.subVectors(this.camera.position,this.target)),i=rt.setFromVector3(n),r=i.theta,a=i.phi;this.calc_distance=i.radius,document.addEventListener("pointermove",o,!1),document.addEventListener("pointerup",s,!1),this.dispatchEvent({type:"start"})}coordinateConversion(t,e=!1){const{x:o,y:s,z:n}=t,i=a.DEFAULT_UP;return 1===i.x?e?t.set(s,n,o):t.set(n,o,s):1===i.z?e?t.set(n,o,s):t.set(s,n,o):t}_onPointerMove(t){this.enabled&&!this._dragging&&(this._background&&J(this._background,!0),this._handleHover(t))}_onPointerLeave(){this.enabled&&!this._dragging&&(this._background&&J(this._background,!1),this._focus&&nt(this._focus,!1),this._domElement.style.cursor="")}_handleClick(t){const e=O(t,this._domRect,this._camera,this._intersections);this._focus&&(nt(this._focus,!1),this._focus=null),e&&(this.setOrientation(e.object.position),this.dispatchEvent({type:"change"}))}_handleHover(t){const e=O(t,this._domRect,this._camera,this._intersections),o=e?.object||null;this._focus!==o&&(this._domElement.style.cursor=o?"pointer":"",this._focus&&nt(this._focus,!1),(this._focus=o)?nt(o,!0):C(this._options,this._intersections,this.camera))}}export{pt as T3DEzViewportGizmo};
|
|
1
|
+
import"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js";import{clamp as t}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/src/math/MathUtils.esm.js";import{mergeGeometries as e}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/utils/BufferGeometryUtils.esm.js";import{Line2 as o}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/Line2.esm.js";import{LineGeometry as n}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineGeometry.esm.js";import{LineMaterial as s}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/lines/LineMaterial.esm.js";import{Quaternion as i,Vector3 as r,Object3D as a,Clock as c,Vector2 as l,Scene as h,OrthographicCamera as d,PerspectiveCamera as p,Vector4 as u,Matrix4 as m,Spherical as _,Raycaster as g,Color as y,CanvasTexture as f,RepeatWrapping as w,SRGBColorSpace as b,Sprite as v,SpriteMaterial as x,Mesh as E,MeshBasicMaterial as S,SphereGeometry as z,CylinderGeometry as L,BackSide as M,BufferGeometry as A,BufferAttribute as P}from"../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";const U=(t,e)=>{const[o,n]=e.split("-");return Object.assign(t.style,{left:"left"===n?"0":"center"===n?"50%":"",right:"right"===n?"0":"",top:"top"===o?"0":"bottom"===o?"":"50%",bottom:"bottom"===o?"0":"",transform:`${"center"===n?"translateX(-50%)":""} ${"center"===o?"translateY(-50%)":""}`}),e},D=[["x",0,3],["y",1,4],["z",2,5]],T=new r;function C({isSphere:e},o,n){e&&(T.set(0,0,1).applyQuaternion(n.quaternion),D.forEach(([e,n,s])=>{const i=T[e];let r=o[n],a=r.userData.opacity;r.material.opacity=t(i>=0?a:a/2,0,1),r=o[s],a=r.userData.opacity,r.material.opacity=t(i>=0?a/2:a,0,1)}))}const F=new g,k=new l,j=(t,e,o,n)=>{k.set((t.clientX-e.left)/e.width*2-1,-(t.clientY-e.top)/e.height*2+1),F.setFromCamera(k,o);const s=F.intersectObjects(n,!1);if(s.length>0){s.sort((t,e)=>t.distance-e.distance);const t=.2,e=s[0].distance,o=s.filter(o=>o.distance<=e+t);o.length>1&&(o.sort((t,e)=>(e.object.userData.intersectionOrder||0)-(t.object.userData.intersectionOrder||0)),s.splice(0,o.length,...o))}const i=s.length?s[0]:null;return i&&i.object.visible?i:null},O=1e-6,q=2*Math.PI,$=["x","y","z"],I=[...$,"nx","ny","nz"],R=["x","z","y","nx","nz","ny"],V=["z","x","y","nz","nx","ny"],Q="Right",B="Top",X="Front",Y="Left",H="Bottom",N="Back",W=[Q,B,X,Y,H,N].map(t=>t.toLocaleLowerCase()),J=(t,e=!0)=>{const{material:o,userData:n}=t,{color:s,opacity:i}=e?n.hover:n;o.color.set(s),o.opacity=i},Z=t=>JSON.parse(JSON.stringify(t)),G={yUp:{x:Q,y:B,z:X,nx:Y,ny:H,nz:N},zUp:{x:Q,y:N,z:B,nx:Y,ny:X,nz:H},xUp:{x:B,y:X,z:Q,nx:H,ny:N,nz:Y}};function K(t,...e){if(t instanceof HTMLElement||"object"!=typeof t||null===t)return t;for(const o of e)for(const e in o)"container"!==e&&e in o&&(void 0===t[e]?t[e]=o[e]:"object"!=typeof o[e]||Array.isArray(o[e])||(t[e]=K(t[e]||{},o[e])));return t}const tt=(t,e=2)=>{const o=new y,n=2*e,{isSphere:s,resolution:i,radius:r,font:a,corners:c,edges:l}=t,h=I.map(e=>({...t[e],radius:r}));s&&c.enabled&&h.push(c),s&&l.enabled&&h.push(l);const d=document.createElement("canvas"),p=d.getContext("2d");if(null==p)throw new Error("Failed to get 2d context");d.width=2*i+2*n,d.height=i*h.length+n*h.length;const[u,m]=function(e,o,n){const i=[...e].sort((t,e)=>(t.label?.length||0)-(e.label?.length||0)).pop().label,{family:r,weight:a}=n,c=s?Math.sqrt(Math.pow(.7*o,2)/2):o;let l=c;t.font.size>0&&(l=t.font.size);let h=0,d=0;if(null==p)throw new Error("Failed to get 2d context");do{p.font=`${a} ${l}px ${r}`;const t=p.measureText(i);h=t.width,d=t.fontBoundingBoxDescent,l--}while(h>c&&l>0);const u=c/d,m=Math.min(c/h,u),_=Math.floor(l*m);return[`${a} ${_}px ${r}`,u]}(h,i,a);h.forEach(({radius:t,label:o,color:s,labelColor:r,border:a,hover:{color:c,labelColor:l,border:h}},d)=>{const p=i*d+d*n+e;S(e,p,e,i,t,o,a,s,r),S(i+3*e,p,e,i,t,o,h??a,c??s,l??r)});const _=h.length,g=e/(2*i),v=e/(6*i),x=1/_,E=new f(d);return E.repeat.set(.5-2*g,x-2*v),E.offset.set(g,1-v),Object.assign(E,{colorSpace:b,wrapS:w,wrapT:w,userData:{offsetX:g,offsetY:v,cellHeight:x}}),E;function S(t,e,n,i,r,a,c,l,h){if(r*=i/2,null==p)throw new Error("Failed to get 2d context");if(null!=l&&""!==l&&(d(),p.fillStyle=o.set(l).getStyle(),p.fill()),c&&c.size){const n=c.size*i/2;t+=n,e+=n,i-=c.size*i,r=Math.max(0,r-n),d(),p.strokeStyle=o.set(c.color).getStyle(),p.lineWidth=c.size*i,p.stroke()}function d(){if(null==p)throw new Error("Failed to get 2d context");p.beginPath(),p.moveTo(t+r,e),p.lineTo(t+i-r,e),p.arcTo(t+i,e,t+i,e+r,r),p.lineTo(t+i,e+i-r),p.arcTo(t+i,e+i,t+i-r,e+i,r),p.lineTo(t+r,e+i),p.arcTo(t,e+i,t,e+i-r,r),p.lineTo(t,e+r),p.arcTo(t,e,t+r,e,r),p.closePath()}a&&function(t,e,o,n,i){t.font=u,t.textAlign="center",t.textBaseline="middle",t.fillStyle=i,t.fillText(n,e,o+(s?m:0))}(p,t+i/2,e+(i+n)/2,a,o.set(h).getStyle())}},et=(t,e)=>{const{offset:o,userData:{offsetY:n,cellHeight:s}}=t;o.y=1-(e+1)*s+n};function ot(t,e,o=2,n=2){const s=o/2-t,i=n/2-t,r=t/o,a=(o-t)/o,c=t/n,l=(n-t)/n,h=[s,i,0,-s,i,0,-s,-i,0,s,-i,0],d=[a,l,r,l,r,c,a,c],p=[3*(e+1)+3,3*(e+1)+4,e+4,e+5,2*(e+1)+4,2,1,2*(e+1)+3,3,4*(e+1)+3,4,0],u=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11].map(t=>p[t]);let m,_,g,y,f,w,b,v;for(let o=0;o<4;o++){y=o<1||o>2?s:-s,f=o<2?i:-i,w=o<1||o>2?a:r,b=o<2?l:c;for(let n=0;n<=e;n++)m=Math.PI/2*(o+n/e),_=Math.cos(m),g=Math.sin(m),h.push(y+t*_,f+t*g,0),d.push(w+r*_,b+c*g),n<e&&(v=(e+1)*o+n+4,u.push(o,v,v+1))}return(new A).setIndex(new P(new Uint32Array(u),1)).setAttribute("position",new P(new Float32Array(h),3)).setAttribute("uv",new P(new Float32Array(d),2))}const nt=t=>{const{corners:i,edges:c}=t,h=[],d=tt(t),p=((t,e)=>{const o=new r,{isSphere:n,radius:s,smoothness:i,type:c}=t,l="rounded-cube"===c?2-2*t.edges.radius:2,h=ot(s,i,l,l);return I.map((s,i)=>{const r=i<3,c=I[i],l=i?e.clone():e;et(l,i);const{enabled:d,scale:p,opacity:u,hover:m}=t[c],_={map:l,opacity:u,transparent:!0},g=n?new v(new x(_)):new E(h,new S(_)),y=r?c:c[1];if(g.position[y]=(r?1:-1)*(n?1.3:1),!n){g.lookAt(o.copy(g.position).multiplyScalar(1.7));const t=1===a.DEFAULT_UP.z,e=1===a.DEFAULT_UP.x;(t||e)&&("z"===c&&t||"x"===c&&e?g.rotateZ(-Math.PI/2):("nz"===c&&t||"nx"===c&&e)&&g.rotateZ(Math.PI/2))}return g.scale.setScalar(p),g.renderOrder=1,g.visible=d,g.userData={scale:p,opacity:u,hover:m},g})})(t,d);h.push(...p),i.enabled&&h.push(...((t,e)=>{const{isSphere:o,corners:n,type:s}=t,i="rounded-cube"===s;if(!n.enabled)return[];const{color:a,opacity:c,scale:l,radius:h,smoothness:d,hover:p}=n,u=o?null:i?new z(h,2*d,d):ot(h,d),m={transparent:!0,opacity:c,map:null,color:0},_=i?1-h:.85,g=[1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1].map(t=>t*_),y=new r;return Array(g.length/3).fill(0).map((t,n)=>{if(o){const t=e.clone();et(t,6),m.map=t}else m.color=a;const s=o?new v(new x(m)):new E(u,new S(m)),i=3*n;return s.position.set(g[i],g[i+1],g[i+2]),o&&s.position.normalize().multiplyScalar(1.7),s.scale.setScalar(l),s.lookAt(y.copy(s.position).multiplyScalar(2)),s.renderOrder=1,s.userData={color:a,opacity:c,scale:l,hover:p,intersectionOrder:1},s})})(t,d)),c.enabled&&h.push(...((t,e,o)=>{const{isSphere:n,edges:s,type:i}=t,a="rounded-cube"===i;if(!s.enabled)return[];const{color:c,opacity:l,scale:h,hover:d,radius:p,smoothness:u}=s,m=a?2-2*p:1.2,_=n?null:a?new L(p,p,m,4*u):ot(p,u,m,.25),g={transparent:!0,opacity:l,map:null,color:0},y=a?1-p:.925,f=[0,1,1,0,-1,1,1,0,1,-1,0,1,0,1,-1,0,-1,-1,1,0,-1,-1,0,-1,1,1,0,1,-1,0,-1,1,0,-1,-1,0].map(t=>t*y),w=new r,b=new r(0,1,0);return Array(f.length/3).fill(0).map((t,s)=>{if(n){const t=e.clone();et(t,o),g.map=t}else g.color=c;const i=n?new v(new x(g)):new E(_,new S(g)),r=3*s;return i.position.set(f[r],f[r+1],f[r+2]),n&&i.position.normalize().multiplyScalar(1.7),i.scale.setScalar(h),i.up.copy(b),i.lookAt(w.copy(i.position).multiplyScalar(2)),a?(n||i.position.z||(i.rotation.z=Math.PI),n||i.position.x||(i.rotation.x=0),n||i.position.x||(i.rotation.z=Math.PI/2)):n||i.position.y||(i.rotation.z=Math.PI/2),i.renderOrder=1,i.userData={color:c,opacity:l,scale:h,hover:d},i})})(t,d,i.enabled?7:6));const u=((t,o)=>{const{isSphere:n,background:{enabled:s,color:i,opacity:r,hover:a}}=o;let c;const l=new S({color:i,side:M,opacity:r,transparent:!0,depthWrite:!1});if(!s)return null;if(n)c=new E(new z(1.8,64,64),l);else{let o;t.forEach(t=>{const n=t.scale.x;t.scale.setScalar(.9),t.updateMatrix();const s=t.geometry.clone();s.applyMatrix4(t.matrix),o=o?e([o,s]):s,t.scale.setScalar(n)}),c=new E(o,l)}return c.userData={color:i,opacity:r,hover:a},c})(p,t),m=(t=>{const e=new y,i=[],r=[],{isSphere:a}=t;if(I.forEach((o,n)=>{const{enabled:s,line:c,scale:l,color:h}=t[o];if(!s||!c)return;const d=(a?1.3-l/2:.975)*(n<3?1:-1);i.push(o.includes("x")?d:0,o.includes("y")?d:0,o.includes("z")?d:0,0,0,0);const p=e.set(h).toArray();r.push(...p,...p)}),!i.length)return null;const c=(new n).setPositions(i).setColors(r),h=new s({linewidth:t.lineWidth,vertexColors:!0,resolution:new l(window.innerWidth,window.innerHeight)});return new o(c,h).computeLineDistances()})(t);return[h,u,m]},st=(t,e=!0)=>{const{material:o,userData:n}=t,{opacity:s,color:i,scale:r}=e?n.hover:n;var a,c;t.scale.setScalar(r),o.opacity=s,o.map?(a=o.map,c=e,a.offset.x=(c?.5:0)+a.userData.offsetX):o.color.set(i)},it=new m,rt=new _,at=new l,ct=new r,lt=new u,ht=(new i).setFromAxisAngle(new r(0,0,1),Math.PI/2),dt=(new i).setFromAxisAngle(new r(0,0,1),-Math.PI/2);class pt extends a{enabled=!0;camera;renderer;options;target=new r;animated=!0;speed=1;animating=!1;_options;_intersections;_background=null;_viewport=[0,0,0,0];_originalViewport=[0,0,0,0];_originalScissor=[0,0,0,0];_scene;_camera;_container;_domElement;_domRect;_dragging=!1;calc_distance=0;_clock=new c;_targetQuaternion=new i;_quaternionStart=new i;_quaternionEnd=new i;_pointerStart=new l;_focus=null;_placement;_controls;_controlsListeners;constructor(t,e,o={}){super(),this.camera=t,this.renderer=e,this._scene=(new h).add(this),this.set(o)}get placement(){return this._placement}set placement(t){this._placement=U(this._domElement,t),this.domUpdate()}set(t={}){this.dispose(),this.options=t,this._options=(t=>{const e=t.type||"sphere",o="sphere"===e,n="rounded-cube"===e,s=t.resolution||o?64:128,i=a.DEFAULT_UP,r=1===i.z,c=1===i.x,l=G[r?"zUp":c?"xUp":"yUp"],{container:h}=t;t.container=void 0,(t=JSON.parse(JSON.stringify(t))).container=h;const d=r?R:c?V:I;W.forEach((e,o)=>{t[e]&&(t[d[o]]=t[e])});const p={enabled:!0,color:16777215,opacity:1,scale:.7,labelColor:2236962,line:!1,border:{size:0,color:14540253},hover:{color:o?16777215:9688043,labelColor:2236962,opacity:1,scale:.7,border:{size:0,color:14540253}}},u={line:!1,scale:o?.45:.7,hover:{scale:o?.5:.7}},m={type:e,container:document.body,size:128,placement:"top-right",resolution:s,lineWidth:4,radius:o?1:n?.3:.2,smoothness:18,animated:!0,speed:1,background:{enabled:!0,color:o?16777215:14739180,opacity:o?0:1,hover:{color:o?16777215:14739180,opacity:o?.2:1}},font:{family:"sans-serif",weight:900},offset:{top:10,left:10,bottom:10,right:10},corners:{enabled:!o,color:o?15915362:16777215,opacity:1,scale:o?.15:.2,radius:1,smoothness:18,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:.225}},edges:{enabled:!o,color:o?15915362:n?15658734:16777215,opacity:o?1:0,radius:o?1:.125,smoothness:18,scale:o?.15:1,hover:{color:o?16777215:9688043,opacity:1,scale:o?.2:1}},x:{...Z(p),...o?{label:"X",color:16725587,line:!0}:{label:l.x}},y:{...Z(p),...o?{label:"Y",color:9100032,line:!0}:{label:l.y}},z:{...Z(p),...o?{label:"Z",color:2920447,line:!0}:{label:l.z}},nx:{...Z(u),label:o?"":l.nx},ny:{...Z(u),label:o?"":l.ny},nz:{...Z(u),label:o?"":l.nz}};if(K(t,m),n){const e=t;e.edges.radius=e.radius,e.edges.scale=1,e.edges.opacity=1,e.edges.hover.scale=1,e.edges.hover.opacity=1,e.corners.radius=e.radius,e.corners.scale=1,e.corners.opacity=1,e.corners.hover.scale=1,e.corners.hover.opacity=1,e.radius=0,I.forEach(t=>{e[t].scale=1,e[t].opacity=1,e[t].hover.scale=1,e[t].hover.opacity=1})}return $.forEach(e=>K(t[`n${e}`],Z(t[e]))),{...t,isSphere:o}})(t),this._camera=this._options.isSphere?new d(-1.8,1.8,1.8,-1.8,5,10):new p(26,1,5,10),this._camera.position.set(0,0,7);const[e,o,n]=nt(this._options);o&&this.add(o),n&&this.add(n),this.add(...e),this._background=o,this._intersections=e;const{container:s,animated:i,speed:r}=this._options;return this.animated=i,this.speed=r,this._container=s?(t=>{const e="string"==typeof t?document.querySelector(t):t;if(!e)throw Error("Invalid DOM element");return e})(s):document.body,this._domElement=(({placement:t,size:e,offset:o,id:n,className:s})=>{const i=document.createElement("div"),{top:r,left:a,right:c,bottom:l}=o;return Object.assign(i.style,{id:n,position:"absolute",zIndex:"1000",height:`${e}px`,width:`${e}px`,margin:`${r}px ${c}px ${l}px ${a}px`,borderRadius:"100%"}),U(i,t),n&&(i.id=n),s&&(i.className=s),i})(this._options),this._domElement.onpointerdown=t=>this._onPointerDown(t),this._domElement.onpointermove=t=>this._onPointerMove(t),this._domElement.onpointerleave=()=>this._onPointerLeave(),this._container.appendChild(this._domElement),this._controls&&this.attachControls(this._controls),this.update(),this}render(){this.animating&&this._animate();const{renderer:t,_viewport:e}=this,o=t.getScissorTest(),n=t.autoClear;return t.autoClear=!1,t.setViewport(...e),o&&t.setScissor(...e),t.clear(!1,!0,!1),t.render(this._scene,this._camera),t.setViewport(...this._originalViewport),o&&t.setScissor(...this._originalScissor),t.autoClear=n,this}domUpdate(){this._domRect=this._domElement.getBoundingClientRect();const t=this.renderer,e=this._domRect,o=t.domElement.getBoundingClientRect();return this._viewport.splice(0,4,e.left-o.left,t.domElement.clientHeight-(e.top-o.top+e.height),e.width,e.height),t.getViewport(lt).toArray(this._originalViewport),t.getScissorTest()&&t.getScissor(lt).toArray(this._originalScissor),this}cameraUpdate(){return this._updateOrientation(),this}update(t=!0){return t&&this._controls&&this._controls.update(),this.domUpdate().cameraUpdate()}attachControls(t){return this.detachControls(),this.target=t.target,this._controlsListeners={start:()=>t.enabled=!1,end:()=>t.enabled=!0,change:()=>this.update(!1)},this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),t.addEventListener("change",this._controlsListeners.change),this._controls=t,this}detachControls(){if(this._controlsListeners&&this._controls)return this.target=(new r).copy(this._controls.target),this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),this._controls.removeEventListener("change",this._controlsListeners.change),this._controlsListeners=void 0,this._controls=void 0,this}dispose(){this.detachControls(),this.children.forEach(t=>{this.remove(t);const e=t;e.material?.dispose(),e.material?.map?.dispose(),e.geometry?.dispose()}),this._domElement?.remove()}_updateOrientation(t=!0){t&&(this.quaternion.copy(this.camera.quaternion).invert(),this.updateMatrixWorld()),C(this._options,this._intersections,this.camera)}_animate(){const{position:t,quaternion:e}=this.camera;if(t.set(0,0,1),!this.animated)return t.applyQuaternion(this._quaternionEnd).multiplyScalar(this.calc_distance).add(this.target),e.copy(this._targetQuaternion),this._updateOrientation(),this.animating=!1,this.dispatchEvent({type:"change"}),void this.dispatchEvent({type:"end"});this._controls&&(this._controls.enabled=!1);const o=this._clock.getDelta()*q*this.speed;if(this._quaternionStart.rotateTowards(this._quaternionEnd,o),t.applyQuaternion(this._quaternionStart).multiplyScalar(this.calc_distance).add(this.target),e.rotateTowards(this._targetQuaternion,o),this._updateOrientation(),requestAnimationFrame(()=>this.dispatchEvent({type:"change"})),this._quaternionStart.angleTo(this._quaternionEnd)<O){if(this._controls){const t=this.camera.position.clone().sub(this.target).normalize();1===a.DEFAULT_UP.z&&Math.abs(t.z)>.99?this.camera.position.set(0,-1e-6,this.camera.position.z):1===a.DEFAULT_UP.x&&Math.abs(t.x)>.99&&this.camera.position.set(this.camera.position.x,O,0),this._controls.update(),this._controls.enabled=!0}this.animating=!1,this.dispatchEvent({type:"end"})}}setOrientation(t){const e=this.camera,o=this.target;if(ct.copy(t).multiplyScalar(this.calc_distance),it.setPosition(ct).lookAt(ct,this.position,this.up),this._targetQuaternion.setFromRotationMatrix(it),ct.add(o),it.lookAt(ct,o,this.up),this._quaternionEnd.setFromRotationMatrix(it),it.setPosition(e.position).lookAt(e.position,o,this.up),this._quaternionStart.setFromRotationMatrix(it),1===a.DEFAULT_UP.z&&Math.abs(t.z)>.99){const e=Math.sign(t.z);this._targetQuaternion.multiply(1===e?dt:ht),this._quaternionEnd.multiply(1===e?dt:ht)}else if(1===a.DEFAULT_UP.x&&Math.abs(t.x)>.99){const e=Math.sign(t.x);this._targetQuaternion.multiply(1===e?dt:ht),this._quaternionEnd.multiply(1===e?dt:ht)}this.animating=!0,this._clock.start(),this.dispatchEvent({type:"start"})}_onPointerDown(e){if(!this.enabled)return;const o=e=>{if(!this._dragging){if(((t,e,o=10)=>Math.abs(t.clientX-e.x)<o&&Math.abs(t.clientY-e.y)<o)(e,this._pointerStart))return;this._dragging=!0}const o=at.set(e.clientX,e.clientY).sub(this._pointerStart).multiplyScalar(1/this._domRect.width*Math.PI),n=this.coordinateConversion(ct.subVectors(this.camera.position,this.target)),s=rt.setFromVector3(n);s.theta=r-o.x,s.phi=t(a-o.y,O,Math.PI-O),this.coordinateConversion(this.camera.position.setFromSpherical(s),!0).add(this.target),this.camera.lookAt(this.target),this.quaternion.copy(this.camera.quaternion).invert(),this._updateOrientation(!1),this.dispatchEvent({type:"change"})},n=()=>{if(document.removeEventListener("pointermove",o,!1),document.removeEventListener("pointerup",n,!1),!this._dragging)return this._handleClick(e);this._focus&&(st(this._focus,!1),this._focus=null),this._dragging=!1,this.dispatchEvent({type:"end"})};if(this.animating)return;e.preventDefault(),this._pointerStart.set(e.clientX,e.clientY);const s=this.coordinateConversion(ct.subVectors(this.camera.position,this.target)),i=rt.setFromVector3(s),r=i.theta,a=i.phi;this.calc_distance=i.radius,document.addEventListener("pointermove",o,!1),document.addEventListener("pointerup",n,!1),this.dispatchEvent({type:"start"})}coordinateConversion(t,e=!1){const{x:o,y:n,z:s}=t,i=a.DEFAULT_UP;return 1===i.x?e?t.set(n,s,o):t.set(s,o,n):1===i.z?e?t.set(s,o,n):t.set(n,s,o):t}_onPointerMove(t){this.enabled&&!this._dragging&&(this._background&&J(this._background,!0),this._handleHover(t))}_onPointerLeave(){this.enabled&&!this._dragging&&(this._background&&J(this._background,!1),this._focus&&st(this._focus,!1),this._domElement.style.cursor="")}_handleClick(t){const e=j(t,this._domRect,this._camera,this._intersections);this._focus&&(st(this._focus,!1),this._focus=null),e&&(this.setOrientation(e.object.position),this.dispatchEvent({type:"change"}))}_handleHover(t){const e=j(t,this._domRect,this._camera,this._intersections),o=e?.object||null;this._focus!==o&&(this._domElement.style.cursor=o?"pointer":"",this._focus&&st(this._focus,!1),(this._focus=o)?st(o,!0):C(this._options,this._intersections,this.camera))}}export{pt as T3DEzViewportGizmo};
|
package/dist/package.json
CHANGED
package/dist/t3d-ez.gl.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("./utils/index.cjs.js"),r=require("./core/Meshes/index.cjs.js"),s=require("./core/WebGLEngine/index.cjs.js"),o=require("./core/Controls/index.cjs.js"),t=require("./core/Lights/index.cjs.js"),i=require("./core/Resource/
|
|
1
|
+
"use strict";var e=require("./utils/index.cjs.js"),r=require("./core/Meshes/index.cjs.js"),s=require("./core/WebGLEngine/index.cjs.js"),o=require("./core/Controls/index.cjs.js"),t=require("./core/Lights/index.cjs.js"),i=require("./core/Resource/ResourceAide.cjs.js"),c=require("./core/Resource/types.cjs.js"),l=require("./core/Resource/loaders.cjs.js"),u=require("./core/Materials/index.cjs.js"),d=require("./core/DynamicSky/index.cjs.js"),a=require("./core/Map/index.cjs.js"),n=require("./core/Addons/RaycasterAide.cjs.js"),p=require("./core/PostProcessor/index.cjs.js"),j=require("./helpers/InfiniteGridHelper.cjs.js"),x=require("./helpers/AxesAddHelper.cjs.js"),f=require("./helpers/T3DEzViewportGizmo.cjs.js"),B=require("./utils/FpsMeter/index.cjs.js"),q=require("./utils/Logger.cjs.js"),E=require("./core/Meshes/Builders/BoxBuilder.cjs.js"),P=require("./core/Meshes/Builders/SphereBuilder.cjs.js"),T=require("./core/Meshes/Builders/PlaneBuilder.cjs.js"),h=require("./core/Meshes/Builders/CapsuleBuilder.cjs.js"),L=require("./core/Controls/TTControls/TTControls.cjs.js"),M=require("./core/Lights/Builders/DirectionalLightBuilder.cjs.js"),g=require("./core/Lights/Builders/PointLightBuilder.cjs.js"),m=require("./node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/GLTFLoader.cjs.js"),A=require("./core/Materials/GradationMaterial.cjs.js"),y=require("./core/Materials/FresnelMaterial.cjs.js"),C=require("./core/PostProcessor/effects/PotateEffect.cjs.js"),R=require("./core/PostProcessor/effects/SAOEffect.cjs.js"),S=require("./core/PostProcessor/effects/OutlineEffect.cjs.js"),G=require("./core/PostProcessor/effects/UnrealBloomEffect.cjs.js");exports.destroyModel=e.destroyModel,exports.disposeApp=e.disposeApp,exports.flyTo=e.flyTo,exports.focusTo=e.focusTo,exports.getContainerElement=e.getContainerElement,exports.loadHdrToScene=e.loadHdrToScene,exports.setDefaultEnvironment=e.setDefaultEnvironment,exports.throttleTimer=e.throttleTimer,exports.MeshBuilder=r.MeshBuilder,exports.T3dEZEngine=s.T3dEZEngine,Object.defineProperty(exports,"CONTROL_TYPE",{enumerable:!0,get:function(){return o.CONTROL_TYPE}}),exports.ControlsAide=o.ControlsAide,exports.LightBuilder=t.LightBuilder,exports.ResourceAide=i.ResourceAide,exports.RESOURCE_TYPE=c.RESOURCE_TYPE,exports.LoaderMaps=l.LoaderMaps,exports.MaterialsLibrary=u.MaterialsLibrary,exports.DynamicSky=d.DynamicSky,exports.PotatoMap=a.PotatoMap,exports.RaycasterAide=n.RaycasterAide,exports.PostProcessor=p.PostProcessor,exports.InfiniteGridHelper=j.InfiniteGridHelper,exports.AxesAddHelper=x.AxesAddHelper,exports.T3DEzViewportGizmo=f.T3DEzViewportGizmo,exports.PerformanceStats=B.PerformanceStats,exports.Logger=q.Logger,exports.BoxBuilder=E.BoxBuilder,exports.SphereBuilder=P.SphereBuilder,exports.PlaneBuilder=T.PlaneBuilder,exports.CapsuleBuilder=h.CapsuleBuilder,exports.TTControls=L.TTControls,exports.DirectionalLightBuilder=M.DirectionalLightBuilder,exports.PointLightBuilder=g.PointLightBuilder,exports.GLTFLoader=m.GLTFLoader,exports.GradationMaterial=A.GradationMaterial,exports.FresnelMaterial=y.FresnelMaterial,exports.PotateEffect=C.PotateEffect,exports.SAOEffect=R.SAOEffect,exports.OutlineEffect=S.OutlineEffect,exports.UnrealBloomEffect=G.UnrealBloomEffect;
|
package/dist/t3d-ez.gl.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{destroyModel,disposeApp,flyTo,focusTo,getContainerElement,loadHdrToScene,setDefaultEnvironment,throttleTimer}from"./utils/index.esm.js";export{MeshBuilder}from"./core/Meshes/index.esm.js";export{
|
|
1
|
+
export{destroyModel,disposeApp,flyTo,focusTo,getContainerElement,loadHdrToScene,setDefaultEnvironment,throttleTimer}from"./utils/index.esm.js";export{MeshBuilder}from"./core/Meshes/index.esm.js";export{T3dEZEngine}from"./core/WebGLEngine/index.esm.js";export{CONTROL_TYPE,ControlsAide}from"./core/Controls/index.esm.js";export{LightBuilder}from"./core/Lights/index.esm.js";export{ResourceAide}from"./core/Resource/ResourceAide.esm.js";export{RESOURCE_TYPE}from"./core/Resource/types.esm.js";export{LoaderMaps}from"./core/Resource/loaders.esm.js";export{MaterialsLibrary}from"./core/Materials/index.esm.js";export{DynamicSky}from"./core/DynamicSky/index.esm.js";export{PotatoMap}from"./core/Map/index.esm.js";export{RaycasterAide}from"./core/Addons/RaycasterAide.esm.js";export{PostProcessor}from"./core/PostProcessor/index.esm.js";export{InfiniteGridHelper}from"./helpers/InfiniteGridHelper.esm.js";export{AxesAddHelper}from"./helpers/AxesAddHelper.esm.js";export{T3DEzViewportGizmo}from"./helpers/T3DEzViewportGizmo.esm.js";export{PerformanceStats}from"./utils/FpsMeter/index.esm.js";export{Logger}from"./utils/Logger.esm.js";export{BoxBuilder}from"./core/Meshes/Builders/BoxBuilder.esm.js";export{SphereBuilder}from"./core/Meshes/Builders/SphereBuilder.esm.js";export{PlaneBuilder}from"./core/Meshes/Builders/PlaneBuilder.esm.js";export{CapsuleBuilder}from"./core/Meshes/Builders/CapsuleBuilder.esm.js";export{TTControls}from"./core/Controls/TTControls/TTControls.esm.js";export{DirectionalLightBuilder}from"./core/Lights/Builders/DirectionalLightBuilder.esm.js";export{PointLightBuilder}from"./core/Lights/Builders/PointLightBuilder.esm.js";export{GLTFLoader}from"./node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/GLTFLoader.esm.js";export{GradationMaterial}from"./core/Materials/GradationMaterial.esm.js";export{FresnelMaterial}from"./core/Materials/FresnelMaterial.esm.js";export{PotateEffect}from"./core/PostProcessor/effects/PotateEffect.esm.js";export{SAOEffect}from"./core/PostProcessor/effects/SAOEffect.esm.js";export{OutlineEffect}from"./core/PostProcessor/effects/OutlineEffect.esm.js";export{UnrealBloomEffect}from"./core/PostProcessor/effects/UnrealBloomEffect.esm.js";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OrthographicCamera } from 'three';
|
|
2
|
+
export declare class OrthographicProjectionAide extends OrthographicCamera {
|
|
3
|
+
private _size;
|
|
4
|
+
private _fixedWidth;
|
|
5
|
+
private _width;
|
|
6
|
+
private _height;
|
|
7
|
+
get size(): number;
|
|
8
|
+
set size(value: number);
|
|
9
|
+
get fixedWidth(): boolean;
|
|
10
|
+
set fixedWidth(value: boolean);
|
|
11
|
+
/**
|
|
12
|
+
* @param size
|
|
13
|
+
* @param fixedWidth
|
|
14
|
+
* @param near
|
|
15
|
+
* @param far
|
|
16
|
+
*/
|
|
17
|
+
constructor(size?: number, fixedWidth?: boolean, near?: number, far?: number);
|
|
18
|
+
private update;
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Camera } from "three";
|
|
2
|
+
import { PerspectiveProjectionAide } from "./PerspectiveProjectionAide";
|
|
3
|
+
import { OrthographicProjectionAide } from "./OrthographicProjectionAide";
|
|
4
|
+
type cameraType = "Perspective" | "Orthographic";
|
|
5
|
+
interface ICameraAide {
|
|
6
|
+
camerasMap: Map<cameraType, Camera>;
|
|
7
|
+
createCamera(type: cameraType, container: HTMLCanvasElement): PerspectiveProjectionAide | OrthographicProjectionAide | Camera;
|
|
8
|
+
}
|
|
9
|
+
export declare class CameraAide implements ICameraAide {
|
|
10
|
+
camerasMap: Map<cameraType, Camera>;
|
|
11
|
+
constructor();
|
|
12
|
+
createCamera(type: cameraType, container: HTMLCanvasElement): PerspectiveProjectionAide | OrthographicProjectionAide | Camera;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -2,7 +2,7 @@ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
|
|
|
2
2
|
import { TrackballControls } from "three/examples/jsm/controls/TrackballControls.js";
|
|
3
3
|
import { FirstControls } from "./controlsLibs/FirstControls";
|
|
4
4
|
import { Camera } from "three";
|
|
5
|
-
import {
|
|
5
|
+
import { T3dEZEngine } from "../WebGLEngine/index";
|
|
6
6
|
import { TTControls } from "./TTControls/TTControls";
|
|
7
7
|
export declare enum CONTROL_TYPE {
|
|
8
8
|
ORBIT = 0,
|
|
@@ -10,17 +10,18 @@ export declare enum CONTROL_TYPE {
|
|
|
10
10
|
FIRSTPERSON = 2
|
|
11
11
|
}
|
|
12
12
|
type ControlManager = {
|
|
13
|
-
engine:
|
|
13
|
+
engine: T3dEZEngine;
|
|
14
14
|
CONTROL_TYPE: typeof CONTROL_TYPE;
|
|
15
15
|
createControls: (type: CONTROL_TYPE, camera: Camera, domElement: HTMLElement) => OrbitControls;
|
|
16
16
|
initOrbitControls: (camera: Camera, domElement: HTMLElement) => OrbitControls;
|
|
17
17
|
initFirstpersonControls: (camera: Camera, domElement: HTMLElement) => FirstControls;
|
|
18
18
|
initTrackballControls: (camera: Camera, domElement: HTMLElement) => TrackballControls;
|
|
19
19
|
};
|
|
20
|
-
export declare class
|
|
21
|
-
engine:
|
|
20
|
+
export declare class ControlsAide implements ControlManager {
|
|
21
|
+
engine: T3dEZEngine;
|
|
22
22
|
CONTROL_TYPE: typeof CONTROL_TYPE;
|
|
23
|
-
|
|
23
|
+
activeControls: OrbitControls;
|
|
24
|
+
constructor(engine: T3dEZEngine);
|
|
24
25
|
/**
|
|
25
26
|
*
|
|
26
27
|
* @param type
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { CSS3DRenderer, CSS3DSprite } from "three/examples/jsm/renderers/CSS3DRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { T3dEZEngine } from "../WebGLEngine/index";
|
|
3
3
|
import { Object3D } from "three";
|
|
4
4
|
export declare class MarkerHtmlUI {
|
|
5
|
-
engine:
|
|
5
|
+
engine: T3dEZEngine;
|
|
6
6
|
css3dRenderer: CSS3DRenderer;
|
|
7
7
|
private box3;
|
|
8
8
|
isRender: boolean;
|
|
9
|
-
constructor(engine:
|
|
9
|
+
constructor(engine: T3dEZEngine);
|
|
10
10
|
initCSS3DRenderer(): void;
|
|
11
11
|
render(): void;
|
|
12
12
|
stopRender(): void;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { WebGLRenderTarget } from "three";
|
|
2
2
|
import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
|
|
3
3
|
import { SMAAPass } from "three/examples/jsm/postprocessing/SMAAPass.js";
|
|
4
|
-
import {
|
|
4
|
+
import { T3dEZEngine } from "../WebGLEngine/index";
|
|
5
5
|
import { PotateEffect } from "./effects/index";
|
|
6
6
|
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';
|
|
7
7
|
export declare class PostProcessor extends EffectComposer {
|
|
8
8
|
name: string;
|
|
9
9
|
type: string;
|
|
10
|
-
engine:
|
|
10
|
+
engine: T3dEZEngine;
|
|
11
11
|
effects: Map<string, any>;
|
|
12
12
|
SmaaPass: SMAAPass;
|
|
13
13
|
gammaCorrectionShader: ShaderPass;
|
|
14
|
-
constructor(engine:
|
|
14
|
+
constructor(engine: T3dEZEngine, renderTarget?: WebGLRenderTarget);
|
|
15
15
|
addEffect(effect: PotateEffect): void;
|
|
16
16
|
removeEffect(effect: PotateEffect): void;
|
|
17
17
|
open(): void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ColorRepresentation, Scene, WebGLRenderer } from "three";
|
|
2
|
+
import { IViewInstancePrameters, ViewInstance } from "./ViewInstance";
|
|
3
|
+
export declare class RendererAide {
|
|
4
|
+
renderer: WebGLRenderer;
|
|
5
|
+
viewMap: Map<string, ViewInstance>;
|
|
6
|
+
activeView: ViewInstance | null;
|
|
7
|
+
private _visibleScenes;
|
|
8
|
+
private _rendererSize;
|
|
9
|
+
private _fullscreen;
|
|
10
|
+
private _backgroundColor;
|
|
11
|
+
private _backgroundAlpha;
|
|
12
|
+
private _resized;
|
|
13
|
+
private readonly _resizeObserver;
|
|
14
|
+
get activeScene(): Scene;
|
|
15
|
+
get fullscreen(): boolean;
|
|
16
|
+
set fullscreen(value: boolean);
|
|
17
|
+
get backgroundColor(): ColorRepresentation;
|
|
18
|
+
set backgroundColor(value: ColorRepresentation);
|
|
19
|
+
get backgroundAlpha(): number;
|
|
20
|
+
set backgroundAlpha(value: number);
|
|
21
|
+
constructor(renderer: WebGLRenderer, fullscreen?: boolean, backgroundColor?: ColorRepresentation, backgroundAlpha?: number);
|
|
22
|
+
create(viewParams: IViewInstancePrameters): ViewInstance;
|
|
23
|
+
add(view: ViewInstance): void;
|
|
24
|
+
getViewBySymbolTag(symbolTag: string): ViewInstance | undefined;
|
|
25
|
+
remove(view: ViewInstance): void;
|
|
26
|
+
removeBySymbolTag(symbolTag: string): void;
|
|
27
|
+
getVisibleScenes(): Set<Scene>;
|
|
28
|
+
clear(): void;
|
|
29
|
+
setActiveViewBySymbolTag(symbolTag: string): void;
|
|
30
|
+
render(): void;
|
|
31
|
+
update(): void;
|
|
32
|
+
private setDefaultRendererParameters;
|
|
33
|
+
private updateRendererSize;
|
|
34
|
+
private executeRender;
|
|
35
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Camera, ColorRepresentation, Scene, Vector2 } from "three";
|
|
2
|
+
import { EffectComposer } from "three/examples/jsm/Addons.js";
|
|
3
|
+
export interface IViewPort {
|
|
4
|
+
left: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
bottom: number;
|
|
8
|
+
}
|
|
9
|
+
export interface IViewInstancePrameters {
|
|
10
|
+
symbolTag: string;
|
|
11
|
+
scene: Scene;
|
|
12
|
+
camera: Camera;
|
|
13
|
+
viewport?: IViewPort;
|
|
14
|
+
visible?: boolean;
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
composer?: EffectComposer;
|
|
17
|
+
backgroundColor?: ColorRepresentation;
|
|
18
|
+
backgroundAlpha?: number;
|
|
19
|
+
onBeforeRender?: () => void;
|
|
20
|
+
onAfterRender?: () => void;
|
|
21
|
+
}
|
|
22
|
+
export declare class ViewInstance implements IViewInstancePrameters {
|
|
23
|
+
scene: Scene;
|
|
24
|
+
camera: Camera;
|
|
25
|
+
viewport: IViewPort;
|
|
26
|
+
calcViewport: {
|
|
27
|
+
left: number;
|
|
28
|
+
bottom: number;
|
|
29
|
+
width: number;
|
|
30
|
+
height: number;
|
|
31
|
+
top: number;
|
|
32
|
+
};
|
|
33
|
+
symbolTag: string;
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
backgroundColor: ColorRepresentation;
|
|
36
|
+
backgroundAlpha: number;
|
|
37
|
+
composer?: EffectComposer;
|
|
38
|
+
private _visible;
|
|
39
|
+
readonly uuid: string;
|
|
40
|
+
private readonly _rendererSize;
|
|
41
|
+
private readonly _onBeforeRender;
|
|
42
|
+
private readonly _onAfterRender;
|
|
43
|
+
get visible(): boolean;
|
|
44
|
+
set visible(value: boolean);
|
|
45
|
+
constructor(parameters: IViewInstancePrameters, rendererSize: Vector2);
|
|
46
|
+
update(): void;
|
|
47
|
+
onBeforeRender(): void;
|
|
48
|
+
onAfterRender(): void;
|
|
49
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { LoadingManager, Texture } from "three";
|
|
2
2
|
import { GLTF } from "./types";
|
|
3
|
-
import {
|
|
3
|
+
import { T3dEZEngine } from "../WebGLEngine";
|
|
4
4
|
type rsManagerType = {
|
|
5
5
|
url: string;
|
|
6
6
|
loadingManager?: LoadingManager;
|
|
7
7
|
};
|
|
8
|
-
export declare class
|
|
8
|
+
export declare class ResourceAide {
|
|
9
9
|
type: string;
|
|
10
|
-
engine:
|
|
11
|
-
LoaderMaps: Map<string, import("three/examples/jsm/loaders/GLTFLoader").GLTFLoader | import("three/examples/jsm/
|
|
10
|
+
engine: T3dEZEngine;
|
|
11
|
+
LoaderMaps: Map<string, import("three/examples/jsm/loaders/GLTFLoader").GLTFLoader | import("three/examples/jsm/Addons").HDRLoader | import("three").TextureLoader>;
|
|
12
12
|
RESOURCE_TYPE: Readonly<{
|
|
13
13
|
GLTF: "GLTF_MODEL";
|
|
14
14
|
HDR: "HDR";
|
|
15
15
|
TEXTURE: "TEXTURE";
|
|
16
16
|
}>;
|
|
17
|
-
constructor(engine:
|
|
17
|
+
constructor(engine: T3dEZEngine);
|
|
18
18
|
loadGLTF(options?: rsManagerType, onLoad?: <T extends GLTF>(result: T) => void): void;
|
|
19
19
|
loadGLTFAsync(options?: rsManagerType): Promise<GLTF>;
|
|
20
20
|
loadHDR(options?: rsManagerType, onLoad?: <T extends Texture>(result: T) => void): void;
|
|
@@ -1,38 +1,42 @@
|
|
|
1
|
-
import { Scene,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Scene, WebGLRenderer, Camera } from "three";
|
|
2
|
+
import { IT3dEZEngineParameters, IT3dEZEngine } from "./types/index";
|
|
3
|
+
import { CONTROL_TYPE } from "../Controls/index";
|
|
4
|
+
import { ResourceAide } from "../Resource/ResourceAide";
|
|
5
5
|
import { PostProcessor } from "../PostProcessor/index";
|
|
6
6
|
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
|
|
7
7
|
import { MarkerHtmlUI } from "../MarkerHtmlUI/index";
|
|
8
|
+
import { IViewInstancePrameters, ViewInstance } from "../Renderer/ViewInstance";
|
|
9
|
+
export type IViewInstancePrametersWithDefaults = Required<Pick<IViewInstancePrameters, 'symbolTag'>> & Partial<IViewInstancePrameters>;
|
|
8
10
|
type TrunParams = (params: {
|
|
9
11
|
sceneGraph: Scene;
|
|
10
12
|
camera: Camera;
|
|
11
13
|
renderer: WebGLRenderer;
|
|
12
14
|
}) => void;
|
|
13
|
-
declare class
|
|
15
|
+
declare class T3dEZEngine implements IT3dEZEngine {
|
|
14
16
|
container: HTMLElement;
|
|
15
17
|
activeCanvas: HTMLCanvasElement | null;
|
|
16
|
-
parameters:
|
|
18
|
+
parameters: IT3dEZEngineParameters;
|
|
17
19
|
renderScopes: Set<TrunParams>;
|
|
18
|
-
sceneGraph: Scene;
|
|
19
|
-
camera: PerspectiveCamera | OrthographicCamera;
|
|
20
|
-
controls: OrbitControls;
|
|
21
|
-
renderer: WebGLRenderer;
|
|
22
20
|
VERSION: string;
|
|
21
|
+
private _rendererAide;
|
|
22
|
+
private _cameraAide;
|
|
23
23
|
CONTROL_TYPE: typeof CONTROL_TYPE;
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
resourceAide: ResourceAide;
|
|
25
|
+
private _controlsAide;
|
|
26
26
|
plugins: Map<string, any>;
|
|
27
27
|
isPostProcessing: boolean;
|
|
28
28
|
markerHtmlUI: MarkerHtmlUI;
|
|
29
29
|
postProcessor: PostProcessor;
|
|
30
30
|
private animateTimer;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
get activeView(): ViewInstance;
|
|
32
|
+
set activeView(view: ViewInstance);
|
|
33
|
+
get renderer(): WebGLRenderer;
|
|
34
|
+
get sceneGraph(): Scene;
|
|
35
|
+
get camera(): Camera;
|
|
36
|
+
get controls(): OrbitControls;
|
|
37
|
+
constructor(parameters?: IT3dEZEngineParameters);
|
|
38
|
+
startApplication(viewParams: IViewInstancePrametersWithDefaults): Promise<this>;
|
|
39
|
+
private _initRenderer;
|
|
36
40
|
runRenderLoop(handler?: TrunParams): void;
|
|
37
41
|
addRunScope(handler: TrunParams): void;
|
|
38
42
|
attachControl(type: any): OrbitControls | undefined;
|
|
@@ -40,4 +44,4 @@ declare class PotatoEngine implements IPotatoEngine {
|
|
|
40
44
|
regieterPlugin(name: string, plugin: any): void;
|
|
41
45
|
private initEngineInfo;
|
|
42
46
|
}
|
|
43
|
-
export {
|
|
47
|
+
export { T3dEZEngine };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Scene, Camera, WebGLRenderer } from "three";
|
|
2
|
-
|
|
2
|
+
import { IViewInstancePrameters } from "../../Renderer/ViewInstance";
|
|
3
|
+
export interface IT3dEZEngineParameters {
|
|
3
4
|
container: HTMLElement | string;
|
|
4
5
|
antialias?: boolean;
|
|
5
6
|
alpha?: boolean;
|
|
@@ -7,8 +8,8 @@ export interface IPotatoEngineParameters {
|
|
|
7
8
|
camera?: string;
|
|
8
9
|
isPostProcessing?: boolean;
|
|
9
10
|
}
|
|
10
|
-
export interface
|
|
11
|
-
|
|
11
|
+
export interface IT3dEZEngine {
|
|
12
|
+
startApplication(viewParams: IViewInstancePrameters): Promise<IT3dEZEngine>;
|
|
12
13
|
runRenderLoop(handler?: (parameters: {
|
|
13
14
|
sceneGraph: Scene;
|
|
14
15
|
camera: Camera;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Vector3, Vector2, Object3D, Quaternion, Clock, Scene } from 'three';
|
|
1
|
+
import { Vector3, Vector2, Object3D, Quaternion, Clock, Scene, Camera, WebGLRenderer } from 'three';
|
|
2
2
|
/**
|
|
3
3
|
* ViewportGizmo is a 3D camera orientation controller that provides a visual interface
|
|
4
4
|
* for changing the camera's viewing angle. It creates a widget that shows the current
|
|
@@ -14,9 +14,9 @@ declare class T3DEzViewportGizmo extends Object3D {
|
|
|
14
14
|
/** Whether the gizmo is currently active and responding to user input */
|
|
15
15
|
enabled: boolean;
|
|
16
16
|
/** The camera being controlled by this gizmo */
|
|
17
|
-
camera:
|
|
17
|
+
camera: Camera;
|
|
18
18
|
/** The WebGLRenderer rendering the gizmo */
|
|
19
|
-
renderer:
|
|
19
|
+
renderer: WebGLRenderer;
|
|
20
20
|
/** The configuration options */
|
|
21
21
|
options: any;
|
|
22
22
|
/** The point around which the camera rotates */
|
|
@@ -50,7 +50,7 @@ declare class T3DEzViewportGizmo extends Object3D {
|
|
|
50
50
|
_quaternionStart: Quaternion;
|
|
51
51
|
_quaternionEnd: Quaternion;
|
|
52
52
|
_pointerStart: Vector2;
|
|
53
|
-
_focus: null;
|
|
53
|
+
_focus: Object3D | null;
|
|
54
54
|
_placement: any;
|
|
55
55
|
_controls: any;
|
|
56
56
|
_controlsListeners: any;
|
|
@@ -146,7 +146,7 @@ declare class T3DEzViewportGizmo extends Object3D {
|
|
|
146
146
|
* @param options.AXIS.hover.border.size - Hover border size
|
|
147
147
|
* @param options.AXIS.hover.border.color - Hover border color
|
|
148
148
|
*/
|
|
149
|
-
constructor(camera:
|
|
149
|
+
constructor(camera: Camera, renderer: WebGLRenderer, options?: {});
|
|
150
150
|
/** Gets the current placement of the gizmo relative to its container. */
|
|
151
151
|
get placement(): any;
|
|
152
152
|
/**
|
|
@@ -230,7 +230,7 @@ declare class T3DEzViewportGizmo extends Object3D {
|
|
|
230
230
|
* @private
|
|
231
231
|
* @param e - The pointer event
|
|
232
232
|
*/
|
|
233
|
-
_onPointerDown(e:
|
|
233
|
+
_onPointerDown(e: MouseEvent): void;
|
|
234
234
|
/**
|
|
235
235
|
* Converts the input-coordinates from the standard Y-axis up to what is set in Object3D.DEFAULT_UP.
|
|
236
236
|
*
|
|
@@ -246,7 +246,7 @@ declare class T3DEzViewportGizmo extends Object3D {
|
|
|
246
246
|
* @private
|
|
247
247
|
* @param e - The pointer event
|
|
248
248
|
*/
|
|
249
|
-
_onPointerMove(e:
|
|
249
|
+
_onPointerMove(e: MouseEvent): void;
|
|
250
250
|
/**
|
|
251
251
|
* Handles pointer leave events to reset hover states.
|
|
252
252
|
*
|
|
@@ -259,13 +259,13 @@ declare class T3DEzViewportGizmo extends Object3D {
|
|
|
259
259
|
* @private
|
|
260
260
|
* @param e - The pointer event
|
|
261
261
|
*/
|
|
262
|
-
_handleClick(e:
|
|
262
|
+
_handleClick(e: MouseEvent): void;
|
|
263
263
|
/**
|
|
264
264
|
* Handles hover effects for interactive elements.
|
|
265
265
|
*
|
|
266
266
|
* @private
|
|
267
267
|
* @param e - The pointer event
|
|
268
268
|
*/
|
|
269
|
-
_handleHover(e:
|
|
269
|
+
_handleHover(e: MouseEvent): void;
|
|
270
270
|
}
|
|
271
271
|
export { T3DEzViewportGizmo };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Stats from "three/examples/jsm/libs/stats.module.js";
|
|
2
|
-
import {
|
|
2
|
+
import { IT3dEZEngine } from "../../core/WebGLEngine/types/index";
|
|
3
3
|
type PerStatsType = {
|
|
4
4
|
container?: HTMLElement;
|
|
5
|
-
engine?:
|
|
5
|
+
engine?: IT3dEZEngine;
|
|
6
6
|
};
|
|
7
7
|
export declare class PerformanceStats {
|
|
8
8
|
name: string;
|
|
@@ -11,6 +11,6 @@ export declare class PerformanceStats {
|
|
|
11
11
|
container: HTMLElement;
|
|
12
12
|
constructor(options?: PerStatsType);
|
|
13
13
|
init(container: HTMLElement): void;
|
|
14
|
-
updateEngine(engine:
|
|
14
|
+
updateEngine(engine: IT3dEZEngine): void;
|
|
15
15
|
}
|
|
16
16
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Logger } from "./Logger";
|
|
2
2
|
export * from "./FpsMeter/index";
|
|
3
3
|
import { Texture } from "three";
|
|
4
|
-
import {
|
|
4
|
+
import { T3dEZEngine } from "../core/WebGLEngine/index";
|
|
5
5
|
import * as THREE from 'three';
|
|
6
|
-
export declare function setDefaultEnvironment(engine:
|
|
6
|
+
export declare function setDefaultEnvironment(engine: T3dEZEngine): void;
|
|
7
7
|
/**
|
|
8
8
|
* 节流函数(定时器实现)
|
|
9
9
|
* @param func 需要节流的函数
|
|
@@ -17,7 +17,7 @@ export declare function throttleTimer(func: (...args: any[]) => void, delay: num
|
|
|
17
17
|
* @param engine VirtuEngine
|
|
18
18
|
* @param isBg boolean
|
|
19
19
|
*/
|
|
20
|
-
export declare function loadHdrToScene(texture: Texture, engine:
|
|
20
|
+
export declare function loadHdrToScene(texture: Texture, engine: T3dEZEngine, isBg?: boolean): Texture<unknown> | null;
|
|
21
21
|
export declare function getContainerElement(cube: HTMLElement | string): HTMLElement;
|
|
22
22
|
/**
|
|
23
23
|
* 相机移动动画
|
|
@@ -28,7 +28,7 @@ export declare function getContainerElement(cube: HTMLElement | string): HTMLEle
|
|
|
28
28
|
* @param startCallback
|
|
29
29
|
* @param comleteCallback
|
|
30
30
|
*/
|
|
31
|
-
export declare function flyTo(engine:
|
|
31
|
+
export declare function flyTo(engine: T3dEZEngine, position?: THREE.Vector3, target?: THREE.Vector3, index?: number, ease?: string, startCallback?: () => void, comleteCallback?: () => void): void;
|
|
32
32
|
/**
|
|
33
33
|
* 相机移动动画
|
|
34
34
|
* @param position
|
|
@@ -45,7 +45,7 @@ export declare function flyTo(engine: PotatoEngine, position?: THREE.Vector3, ta
|
|
|
45
45
|
* @param disScale
|
|
46
46
|
* @returns
|
|
47
47
|
*/
|
|
48
|
-
export declare function focusTo(engine:
|
|
49
|
-
export declare function disposeApp(engine:
|
|
50
|
-
export declare function destroyModel(engine:
|
|
48
|
+
export declare function focusTo(engine: T3dEZEngine, target: THREE.Object3D | undefined | null, duration?: number): void;
|
|
49
|
+
export declare function disposeApp(engine: T3dEZEngine | null): void;
|
|
50
|
+
export declare function destroyModel(engine: T3dEZEngine | null, model: THREE.Object3D): void;
|
|
51
51
|
export { Logger };
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./types.cjs.js"),r=require("./loaders.cjs.js"),a=require("../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js");exports.ResourceManager=class{type;engine;LoaderMaps=r.LoaderMaps;RESOURCE_TYPE=e.RESOURCE_TYPE;constructor(e){this.type="ResourceManager",this.engine=e}loadGLTF(o={url:"",loadingManager:new a.LoadingManager},n){const{url:s,loadingManager:t}=o;r.LoaderMaps.get(e.RESOURCE_TYPE.GLTF)?.load(s,e=>n&&n(e))}loadGLTFAsync(e={url:""}){const r=this;return new Promise(function(a,o){r.loadGLTF(e,e=>a(e))})}loadHDR(o={url:"",loadingManager:new a.LoadingManager},n){const{url:s,loadingManager:t}=o;r.LoaderMaps.get(e.RESOURCE_TYPE.HDR)?.load(s,e=>n&&n(e))}loadHDRAsync(e={url:""}){const r=this;return new Promise(function(a,o){r.loadHDR(e)})}loadTexture(a={url:""},o){const{url:n}=a;r.LoaderMaps.get(e.RESOURCE_TYPE.TEXTURE)?.load(n,e=>o&&o(e))}loadTextureAsync(e={url:""}){const r=this;return new Promise(function(a,o){r.loadTexture(e,e=>a(e))})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{RESOURCE_TYPE as e}from"./types.esm.js";import{LoaderMaps as o}from"./loaders.esm.js";import{LoadingManager as r}from"../../node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js";class n{type;engine;LoaderMaps=o;RESOURCE_TYPE=e;constructor(e){this.type="ResourceManager",this.engine=e}loadGLTF(n={url:"",loadingManager:new r},t){const{url:s,loadingManager:a}=n;o.get(e.GLTF)?.load(s,e=>t&&t(e))}loadGLTFAsync(e={url:""}){const o=this;return new Promise(function(r,n){o.loadGLTF(e,e=>r(e))})}loadHDR(n={url:"",loadingManager:new r},t){const{url:s,loadingManager:a}=n;o.get(e.HDR)?.load(s,e=>t&&t(e))}loadHDRAsync(e={url:""}){const o=this;return new Promise(function(r,n){o.loadHDR(e)})}loadTexture(r={url:""},n){const{url:t}=r;o.get(e.TEXTURE)?.load(t,e=>n&&n(e))}loadTextureAsync(e={url:""}){const o=this;return new Promise(function(r,n){o.loadTexture(e,e=>r(e))})}}export{n as ResourceManager};
|