diff --git a/party-stage/src/scene/config-ui.js b/party-stage/src/scene/config-ui.js index 8e8308b..cf3fdda 100644 --- a/party-stage/src/scene/config-ui.js +++ b/party-stage/src/scene/config-ui.js @@ -110,9 +110,7 @@ export class ConfigUI extends SceneFeature { }); // Blackout Toggle - createToggle('BLACKOUT', 'blackout', (enabled) => { - state.blackoutMode = enabled; - }); + createToggle('BLACKOUT', 'blackout'); // Torches Toggle createToggle('Stage Torches', 'torchesEnabled'); @@ -486,7 +484,7 @@ export class ConfigUI extends SceneFeature { lightBarsEnabled: true, laserColorMode: 'RUNNING', guestCount: 150, - blackout: false, + blackout: true, djHat: 'None', debugPanelEnabled: false }; diff --git a/party-stage/src/scene/music-player.js b/party-stage/src/scene/music-player.js index 11f6085..73e82e0 100644 --- a/party-stage/src/scene/music-player.js +++ b/party-stage/src/scene/music-player.js @@ -16,6 +16,11 @@ export class MusicPlayer extends SceneFeature { init() { state.music.player = document.getElementById('audioPlayer'); + if (!state.music.player) { + state.music.player = document.createElement('audio'); + state.music.player.id = 'audioPlayer'; + document.body.appendChild(state.music.player); + } state.music.loudness = 0; state.music.loudnessAverage = 0; const loadButton = document.getElementById('loadMusicButton'); @@ -75,6 +80,10 @@ export class MusicPlayer extends SceneFeature { } startSequence() { + if (this.audioContext && this.audioContext.state === 'suspended') { + this.audioContext.resume(); + } + const uiContainer = document.getElementById('ui-container'); const configUILeft = document.getElementById('config-ui-left'); const configUIRight = document.getElementById('config-ui-right'); diff --git a/party-stage/src/scene/projection-screen.js b/party-stage/src/scene/projection-screen.js index 85ea702..5c282fa 100644 --- a/party-stage/src/scene/projection-screen.js +++ b/party-stage/src/scene/projection-screen.js @@ -468,9 +468,15 @@ export function updateScreenEffect() { const material = s.mesh.material; if (!material || !material.uniforms) return; - material.uniforms.u_time.value = state.clock.getElapsedTime(); - material.uniforms.u_effect_type.value = state.screenEffect.type; - material.uniforms.u_effect_strength.value = strength; + if (material.uniforms.u_time) { + material.uniforms.u_time.value = state.clock.getElapsedTime(); + } + if (material.uniforms.u_effect_type) { + material.uniforms.u_effect_type.value = state.screenEffect.type; + } + if (material.uniforms.u_effect_strength) { + material.uniforms.u_effect_strength.value = strength; + } if (material.uniforms.u_opacity) { const targetOpacity = state.blackoutMode ? 0.1 : (state.screenOpacity !== undefined ? state.screenOpacity : 0.7); @@ -478,8 +484,8 @@ export function updateScreenEffect() { } if (progress >= 1.0) { - material.uniforms.u_effect_type.value = 0.0; - material.uniforms.u_effect_strength.value = 0.0; + if (material.uniforms.u_effect_type) material.uniforms.u_effect_type.value = 0.0; + if (material.uniforms.u_effect_strength) material.uniforms.u_effect_strength.value = 0.0; } }); }