UNPKG

@inweb/viewer-three

Version:

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

42 lines (38 loc) 1.8 kB
import { Sphere, DirectionalLightHelper, HemisphereLightHelper, PointLightHelper } from "three"; import { components } from "@inweb/viewer-three"; class LightHelperComponent { constructor(viewer) { this.syncHelper = () => { this.lightHelpers.forEach((helper => { helper.removeFromParent(); helper.dispose(); })); this.lightHelpers.length = 0; const extentsSize = this.viewer.extents.getBoundingSphere(new Sphere).radius * 2; const size = extentsSize / 20; this.viewer.scene.traverse((object => { let helper; if (object.isDirectionalLight) helper = new DirectionalLightHelper(object, size, "#aa0000"); else if (object.isHemisphereLight) helper = new HemisphereLightHelper(object, size, "#ff9800"); else if (object.isPointLight) helper = new PointLightHelper(object, size, "#ff9800"); if (helper) { this.lightHelpers.push(helper); this.viewer.helpers.add(helper); } })); }; this.lightHelpers = []; this.viewer = viewer; this.viewer.addEventListener("geometryend", this.syncHelper); this.viewer.addEventListener("clear", this.syncHelper); } dispose() { this.lightHelpers.forEach((helper => { helper.removeFromParent(); helper.dispose(); })); this.lightHelpers.length = 0; this.viewer.removeEventListener("geometryend", this.syncHelper); this.viewer.removeEventListener("clear", this.syncHelper); } } components.registerComponent("LightHelperComponent", (viewer => new LightHelperComponent(viewer))); //# sourceMappingURL=LightHelperComponent.module.js.map