- Upgrade audio system from deprecated Sound API to AudioEngineV2 - Use CreateAudioEngineAsync() for audio engine initialization - Replace new Sound() with createSoundAsync() throughout codebase - Track sound playing state manually (StaticSound lacks isPlaying) - Use volume property instead of setVolume() method - Use stop() instead of pause() for proper StaticSound lifecycle - Fix controller detection for Meta Quest 2 - Check for already-connected controllers after entering XR mode - Fixes issue where Quest 2 controllers only become available after enterXRAsync() - Maintains backward compatibility with WebXR emulator - Improve initialization performance - Move RockFactory.init() to main initialization (before level select) - Pre-load asteroid meshes and explosion particle systems on startup - Level initialization now only creates asteroids, not resources - Refactor level initialization flow - Level creation now happens before entering XR mode - Add level ready observable to track initialization completion - Show loading messages during asteroid creation - Extract loading message logic to separate module - Add audio unlock on user interaction (button click) - Make play() methods async to support AudioEngineV2 - Pass AudioEngineV2 instance to Ship and Level1 constructors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2.0 MiB
2.0 MiB