Highlights
- PCVR Support - LCK is a single implementation for PCVR and Meta Quest Standalone
- Microphone Mute Control - New
SetMicrophoneEnabled()API for runtime mic control - Audio Config Validation - Real-time validation with editor warnings in Project Settings
- Permission Handling - Improved Android microphone permission flow with callbacks
- Developer Settings UI - Full settings panel in Project Settings with audio plugin configuration
New Features
LCK Core SDK
| Feature | Description |
|---|---|
| Audio Config Validation | ValidateAudioConfig() method with FMOD > Wwise > UnrealAudio priority |
| Build Info API | GetLoadedAudioPlugins(), GetBuildInfoDescription() with dynamic build number |
| Microphone Mute Control | SetMicrophoneEnabled(), IsMicrophoneEnabled() for runtime mic control |
| Developer Settings UI | Full settings panel in Project Settings with audio plugin checkboxes |
| Voice Chat Audio Source | FLCKAudioSourceVoiceChat struct for Vivox integration |
| Plugin Detection | Improved detection via IPluginManager with dependency checks |
| Settings Categories | Organized settings with headers, tooltips, and category grouping |
| Audio Buffer Cleanup | Clear previously buffered audio on state change |
LCKUI
| Feature | Description |
|---|---|
| ELCKMicState Enum | Three-state: On, Off, No_Access for permission handling |
| Audio Level Indicator | Real-time microphone level display on recording button |
| Demo Dashboard | LCKDemoUIBoard with FOV, quality, orientation, mic controls |
| JSON State Persistence | Replaced USaveGame with JSON for tablet state |
LCKTablet
| Feature | Description |
|---|---|
| Android Permission Handling | RequestMicAccess() with proper callback flow |
| Mic State Management | ToggleMicState() with No_Access state support |
| Recording State Manager | Mic level reading integrated into RecorderController |
| Developer Settings Integration | Uses ULCKDeveloperSettings for camera modes and profiles |
| Data Model Delegates | Added delegates for state change notifications |
| JSON Data Persistence | Save/load tablet state as JSON with platform paths |
| Mic Audio Level API | Read mic audio level via ULCKService |
Audio Plugins
| Plugin | Changes |
|---|---|
| LCKVivox | SDK settings binding, microphone output fix |
| LCKOboe | SDK settings binding for StartCapture |
| LCKWwise | SDK settings binding, documentation |
| LCKFMOD | Capture fix, SDK settings binding, documentation |
Bug Fixes
| Fix | Platform | Description |
|---|---|---|
| Photo capture not triggering | All | Fixed TSharedPtr notification handling |
| TabletDataModel null crash | All | Use NewObject in BeginPlay instead of CreateDefaultSubobject |
| Settings not restoring | All | Removed forced defaults on initialization |
| Notification callbacks | All | Execute callback per queued notification |
| SetupBindingToDataModel null | All | Added null guard check |
Improvements
| Improvement | Description |
|---|---|
| Cleaned Constants | Consolidated constants across LCKUI and LCKTablet modules |
| Camera Modes Moved | Camera modes moved from LCKUI to LCKTablet for better modularity |
| JSON Helper Moved | JSON utilities centralized in LCKTablet |
| Plugin Icons | Added icons for LCKUI and LCKTablet plugins |
| Audio Sub-Levels | Added audio sub-levels for middleware variants |
Breaking Changes
-
FLCKMetaData.Build- Changed fromint32toFString -
Mic state type - Use
ELCKMicStateenum instead ofbool
Code Reorganization
Several components were moved between modules for better organization:| Component | From | To |
|---|---|---|
Camera modes (ELCKCameraMode) | LCKUI | LCKTablet |
| JSON helper utilities | LCKUI | LCKTablet |
| Tablet data model | LCKUI | LCKTablet |
| Tablet UI components | LCKUI | LCKTablet |
- Open Beta release