@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
JavaScript
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