lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
52 lines • 1.87 kB
JavaScript
import scene from "../../engine/scene";
import { getEditorHelper } from "../../states/useEditorHelper";
import HelperSprite from "./utils/HelperSprite";
import ObjectManager from "./ObjectManager";
import { ssrExcludeSet } from "../../collections/ssrExcludeSet";
import { renderCheckExcludeSet } from "../../collections/renderCheckExcludeSet";
import { updateSystem } from "../../systems/updateSystem";
export default class LightBase extends ObjectManager {
constructor(light, Helper) {
super(light);
this.createEffect(() => {
if (!getEditorHelper() || this.$disableSceneGraph)
return;
const sprite = new HelperSprite("light", this);
if (Helper) {
const helper = new Helper(light);
ssrExcludeSet.add(helper);
renderCheckExcludeSet.add(helper);
scene.add(helper);
helper.add(sprite.outerObject3d);
"update" in helper && updateSystem.add(helper);
sprite.then(() => {
helper.dispose();
ssrExcludeSet.delete(helper);
renderCheckExcludeSet.delete(helper);
scene.remove(helper);
"update" in helper && updateSystem.delete(helper);
});
}
return () => {
sprite.dispose();
};
}, [getEditorHelper]);
}
disposeNode() {
super.disposeNode();
this.object3d.dispose();
}
get color() {
return ("#" + this.object3d.color.getHexString());
}
set color(val) {
this.object3d.color.set(val);
}
get intensity() {
return this.object3d.intensity;
}
set intensity(val) {
this.object3d.intensity = val;
}
}
//# sourceMappingURL=LightBase.js.map