lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
39 lines • 1.59 kB
JavaScript
import { createEffect } from "@lincode/reactivity";
import { EquirectangularReflectionMapping } from "three";
import Environment from "../display/Environment";
import loadTexture from "../display/utils/loaders/loadTexture";
import { environmentPreset } from "../interface/IEnvironment";
import { getEnvironment } from "../states/useEnvironment";
import { getEnvironmentStack } from "../states/useEnvironmentStack";
import scene from "./scene";
import unsafeGetValue from "../utils/unsafeGetValue";
import { texturesUrlPtr } from "../pointers/assetsPathPointers";
const defaultEnvironment = new Environment();
defaultEnvironment.$ghost();
defaultEnvironment.$disableUnload = true;
defaultEnvironment.texture = undefined;
export const environmentToUrl = (value) => value in environmentPreset
? texturesUrlPtr[0] + unsafeGetValue(environmentPreset, value)
: value;
createEffect(() => {
const environment = getEnvironmentStack().at(-1);
if (!environment?.texture)
return;
let proceed = true;
const texture = loadTexture(environmentToUrl(environment.texture), () => proceed && (scene.environment = texture));
texture.mapping = EquirectangularReflectionMapping;
return () => {
proceed = false;
scene.environment = null;
};
}, [getEnvironmentStack]);
createEffect(() => {
const environment = getEnvironment();
if (!environment)
return;
defaultEnvironment.texture = environment;
return () => {
defaultEnvironment.texture = undefined;
};
}, [getEnvironment]);
//# sourceMappingURL=defaultLight.js.map