UNPKG

@inweb/viewer-three

Version:

JavaScript library for rendering CAD and BIM files in a browser using Three.js

2 lines (1 loc) 1.25 kB
!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?i(require("three"),require("@inweb/viewer-three")):"function"==typeof define&&define.amd?define(["three","@inweb/viewer-three"],i):i((e="undefined"!=typeof globalThis?globalThis:e||self).THREE,e.ODA.Three)}(this,(function(e,i){"use strict";class t{constructor(i){this.syncHelper=()=>{this.lightHelpers.forEach((e=>{e.removeFromParent(),e.dispose()})),this.lightHelpers.length=0;const i=2*this.viewer.extents.getBoundingSphere(new e.Sphere).radius/20;this.viewer.scene.traverse((t=>{let r;t.isDirectionalLight?r=new e.DirectionalLightHelper(t,i,"#aa0000"):t.isHemisphereLight?r=new e.HemisphereLightHelper(t,i,"#ff9800"):t.isPointLight&&(r=new e.PointLightHelper(t,i,"#ff9800")),r&&(this.lightHelpers.push(r),this.viewer.helpers.add(r))}))},this.lightHelpers=[],this.viewer=i,this.viewer.addEventListener("geometryend",this.syncHelper),this.viewer.addEventListener("clear",this.syncHelper)}dispose(){this.lightHelpers.forEach((e=>{e.removeFromParent(),e.dispose()})),this.lightHelpers.length=0,this.viewer.removeEventListener("geometryend",this.syncHelper),this.viewer.removeEventListener("clear",this.syncHelper)}}i.components.registerComponent("LightHelperComponent",(e=>new t(e)))}));