lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
92 lines • 3.16 kB
JavaScript
import { Reactive } from "@lincode/reactivity";
import { Mesh } from "three";
import scene from "../../engine/scene";
import { reflectorDefaults, reflectorSchema } from "../../interface/IReflector";
import { getCameraRendered } from "../../states/useCameraRendered";
import { getRenderer } from "../../states/useRenderer";
import PhysicsObjectManager from "../core/PhysicsObjectManager";
import { planeGeometry } from "../primitives/Plane";
import { cameraRenderedPtr } from "../../pointers/cameraRenderedPtr";
import { rendererPtr } from "../../pointers/rendererPtr";
import { ssrExcludeSet } from "../../collections/ssrExcludeSet";
import { reflectorSystem } from "../../systems/reflectorSystem";
class Reflector extends PhysicsObjectManager {
static componentName = "reflector";
static defaults = reflectorDefaults;
static schema = reflectorSchema;
constructor() {
const mesh = new Mesh(planeGeometry);
super(mesh);
ssrExcludeSet.add(this.outerObject3d);
this.rotationX = 270;
mesh.scale.z = Number.EPSILON;
import("./MeshReflectorMaterial").then(({ default: MeshReflectorMaterial }) => {
this.createEffect(() => {
if (this.done)
return;
const material = (mesh.material = new MeshReflectorMaterial(rendererPtr[0], cameraRenderedPtr[0], scene, mesh, {
resolution: this.resolutionState.get(),
blur: [this.blurState.get(), this.blurState.get()],
mixBlur: 2.5,
mixContrast: this.contrastState.get(),
mirror: this.mirrorState.get(),
distortionMap: undefined
}));
reflectorSystem.add(this, { material });
return () => {
material.dispose();
reflectorSystem.delete(this);
};
}, [
getRenderer,
getCameraRendered,
this.resolutionState.get,
this.blurState.get,
this.contrastState.get,
this.mirrorState.get
]);
});
}
disposeNode() {
super.disposeNode();
ssrExcludeSet.delete(this.outerObject3d);
}
get depth() {
return 0;
}
set depth(_) { }
get scaleZ() {
return 0;
}
set scaleZ(_) { }
resolutionState = new Reactive(256);
get resolution() {
return this.resolutionState.get();
}
set resolution(val) {
this.resolutionState.set(val);
}
blurState = new Reactive(512);
get blur() {
return this.blurState.get();
}
set blur(val) {
this.blurState.set(val);
}
contrastState = new Reactive(1.5);
get contrast() {
return this.contrastState.get();
}
set contrast(val) {
this.contrastState.set(val);
}
mirrorState = new Reactive(1);
get mirror() {
return this.mirrorState.get();
}
set mirror(val) {
this.mirrorState.set(val);
}
}
export default Reflector;
//# sourceMappingURL=index.js.map