@threlte/extras
Version:
Utilities, abstractions and plugins for your Threlte apps
30 lines (29 loc) • 1.07 kB
JavaScript
import { useThrelte } from '@threlte/core';
export const useEnvironment = (scene, environment, isBackground, isEnvironment) => {
const { invalidate } = useThrelte();
$effect(() => {
const currentEnvironment = environment();
if (currentEnvironment === undefined)
return;
const currentScene = scene();
const { background: lastBackground, environment: lastEnvironment } = currentScene;
const currentIsBackground = isBackground();
const currentIsEnvironment = isEnvironment();
if (currentIsEnvironment) {
currentScene.environment = currentEnvironment;
}
if (currentIsBackground) {
currentScene.background = currentEnvironment;
}
invalidate();
return () => {
if (currentIsEnvironment) {
currentScene.environment = lastEnvironment;
}
if (currentIsBackground) {
currentScene.background = lastBackground;
}
invalidate();
};
});
};