Fix: TV screen power on and off effect for multiple videos
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user