Fix: TV screen power on and off effect for multiple videos

This commit is contained in:
Dejvino
2025-11-17 14:50:12 +01:00
parent 293834b704
commit 50d755793d
3 changed files with 19 additions and 9 deletions
+17 -4
View File
@@ -137,7 +137,7 @@ export function createTvSet(x, z, rotY) {
// Position the curved screen
state.tvScreen.position.set(0.0, 1.5, -2.1);
turnTvScreenOff();
setTvScreenOffMaterial();
tvGroup.add(state.tvScreen);
tvGroup.position.set(x, 0, z);
@@ -162,7 +162,7 @@ export function createTvSet(x, z, rotY) {
state.scene.add(tvGroup);
}
export function turnTvScreenOff() {
function setTvScreenOffMaterial() {
if (state.tvScreen.material) {
state.tvScreen.material.dispose();
}
@@ -174,11 +174,20 @@ export function turnTvScreenOff() {
state.tvScreen.material.needsUpdate = true;
}
export function turnTvScreenOff() {
if (state.tvScreenPowered) {
state.tvScreenPowered = false;
setScreenEffect(2, () => {
setTvScreenOffMaterial();
state.screenLight.intensity = 0.0;
}); // Trigger power down
}
}
export function turnTvScreenOn() {
if (state.tvScreen.material) {
state.tvScreen.material.dispose();
}
state.tvScreen.material = new THREE.ShaderMaterial({
uniforms: {
videoTexture: { value: state.videoTexture },
@@ -191,7 +200,11 @@ export function turnTvScreenOn() {
});
state.tvScreen.material.needsUpdate = true;
setScreenEffect(1); // Trigger warm-up
if (!state.tvScreenPowered) {
state.tvScreenPowered = true;
setScreenEffect(1); // Trigger warm-up
}
}
/**