Bug
SimulationUpdateTimeElapsed never resets, causing SimulationUpdateInterval to have no
effect after first trigger
Plugin version: 4.8.1
Description
FSteamAudioManager::Tick() accumulates SimulationUpdateTimeElapsed but never resets it after
the interval threshold is crossed. As a result, SimulationUpdateInterval only throttles the
reflection/pathing simulation for the first interval window. After that, the elapsed time remains
permanently above the threshold and the simulation runs every single frame, regardless of what
value SimulationUpdateInterval is set to.
Root Cause
SteamAudioManager.cpp — FSteamAudioManager::Tick():
SimulationUpdateTimeElapsed += DeltaTime;
if (SimulationUpdateTimeElapsed < SteamAudioSettings.SimulationUpdateInterval)
return;
// SimulationUpdateTimeElapsed is never reset here ← bug
if (ThreadPool && ThreadPoolIdle)
{
// ... run reflections / pathing
}
SimulationUpdateTimeElapsed is only zeroed in ShutDownSteamAudio(), not after each
successful simulation update.
Fix
Add a reset immediately after the interval check passes:
SimulationUpdateTimeElapsed += DeltaTime;
if (SimulationUpdateTimeElapsed < SteamAudioSettings.SimulationUpdateInterval)
return;
SimulationUpdateTimeElapsed = 0.0f; // ← reset so the interval is respected every cycle
if (ThreadPool && ThreadPoolIdle)
{
// ... run reflections / pathing
}
Impact
- SimulationUpdateInterval is completely non-functional as a CPU throttle after the first
trigger, causing unnecessary per-frame reflection/pathing simulation.
- Any runtime quality setting that exposes SimulationUpdateInterval to the player will appear
to have no effect.
Bug
SimulationUpdateTimeElapsednever resets, causingSimulationUpdateIntervalto have noeffect after first trigger
Plugin version: 4.8.1
Description
FSteamAudioManager::Tick()accumulatesSimulationUpdateTimeElapsedbut never resets it afterthe interval threshold is crossed. As a result,
SimulationUpdateIntervalonly throttles thereflection/pathing simulation for the first interval window. After that, the elapsed time remains
permanently above the threshold and the simulation runs every single frame, regardless of what
value
SimulationUpdateIntervalis set to.Root Cause
SteamAudioManager.cpp—FSteamAudioManager::Tick():SimulationUpdateTimeElapsed is only zeroed in ShutDownSteamAudio(), not after each
successful simulation update.
Fix
Add a reset immediately after the interval check passes:
Impact
trigger, causing unnecessary per-frame reflection/pathing simulation.
to have no effect.