UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

92 lines 3.16 kB
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