mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
37 lines • 1.5 kB
JavaScript
import { createEffect } from "@lincode/reactivity";
import { Color, EquirectangularReflectionMapping } from "three";
import scene from "./scene";
import loadCubeTexture from "../display/utils/loaders/loadCubeTexture";
import loadTexture from "../display/utils/loaders/loadTexture";
import { getBackgroundColor } from "../states/useBackgroundColor";
import { getBackgroundImage } from "../states/useBackgroundImage";
import { getSkyboxStack } from "../states/useSkyboxStack";
import { last } from "@lincode/utils";
createEffect(() => {
const image = getBackgroundImage();
const color = getBackgroundColor();
const skybox = last(getSkyboxStack())?.texture;
if (skybox) {
if (Array.isArray(skybox))
scene.background = loadCubeTexture(skybox);
else {
let proceed = true;
const texture = loadTexture(skybox, () => proceed && (scene.background = texture));
texture.mapping = EquirectangularReflectionMapping;
return () => {
proceed = false;
};
}
}
else if (image)
scene.background = loadTexture(image);
else if (color) {
if (color === "transparent")
scene.background = null;
else
scene.background = new Color(color);
}
else
scene.background = new Color("black");
}, [getBackgroundColor, getBackgroundImage, getSkyboxStack]);
//# sourceMappingURL=background.js.map