Description

Context:
The Niagara System is the primary tool to do visual effects inside Unreal. Niagara systems can be culled due to distance.

Problem:
Once a deactivated Niagara System is culled due to distance and then comes back in range of the camera, it is re-added, but does not remain deactivated. It is reset / resumes running, becoming stuck when it should remain deactivated.

This is the callstack (non-fatal, just for reference) in which FNiagaraScalabilityManager incorrectly reactivates the culled, deactivated system:

     UnrealEditor-Niagara.dll!UNiagaraComponent::ActivateInternal(bool bReset, bool bIsScalabilityCull) Line 1218    C++
>    UnrealEditor-Niagara.dll!FNiagaraScalabilityManager::ApplyScalabilityState(int ComponentIndex, ENiagaraCullReaction CullReaction, bool bNewOnly) Line 430    C++
     [Inline Frame] UnrealEditor-Niagara.dll!FNiagaraScalabilityManager::UpdateInternal(FNiagaraWorldManager *) Line 505    C++
     UnrealEditor-Niagara.dll!FNiagaraScalabilityManager::Update(FNiagaraWorldManager * WorldMan, float DeltaSeconds, bool bNewOnly) Line 626    C++
     [Inline Frame] UnrealEditor-Niagara.dll!TConstSetBitIterator<FDefaultBitArrayAllocator>::operator++() Line 1867    C++
     [Inline Frame] UnrealEditor-Niagara.dll!TSparseArray<TSetElement<TTuple<TObjectPtr<UNiagaraEffectType>,FNiagaraScalabilityManager>>,TSparseArrayAllocator<TSizedDefaultAllocator<32>,FDefaultBitArrayAllocator>>::TBaseIterator<0>::operator++() Line 947    C++
     [Inline Frame] UnrealEditor-Niagara.dll!TSet<TTuple<TObjectPtr<UNiagaraEffectType>,FNiagaraScalabilityManager>,TDefaultMapHashableKeyFuncs<TObjectPtr<UNiagaraEffectType>,FNiagaraScalabilityManager,0>,FDefaultSetAllocator>::TBaseIterator<0,1>::operator++() Line 1598    C++
     [Inline Frame] UnrealEditor-Niagara.dll!TMapBase<TObjectPtr<UNiagaraEffectType>,FNiagaraScalabilityManager,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<TObjectPtr<UNiagaraEffectType>,FNiagaraScalabilityManager,0>>::TBaseIterator<0,1>::operator++() Line 845    C++
     UnrealEditor-Niagara.dll!FNiagaraWorldManager::UpdateScalabilityManagers(float DeltaSeconds, bool bNewSpawnsOnly) Line 1616    C++
     UnrealEditor-Niagara.dll!FNiagaraWorldManager::Tick(ETickingGroup TickGroup, float DeltaSeconds, ELevelTick TickType, ENamedThreads::Type CurrentThread, const TRefCountPtr<FBaseGraphTask> & MyCompletionGraphEvent) Line 1438    C++
     UnrealEditor-Niagara.dll!FNiagaraWorldManagerTickFunction::ExecuteTick(float DeltaTime, ELevelTick TickType, ENamedThreads::Type CurrentThread, const TRefCountPtr<FBaseGraphTask> & MyCompletionGraphEvent) Line 327    C++
     [Inline Frame] UnrealEditor-Engine.dll!FTickFunctionTask::DoTask(ENamedThreads::Type CurrentThread, const TRefCountPtr<FBaseGraphTask> &) Line 306    C++
     UnrealEditor-Engine.dll!TGraphTask<FTickFunctionTask>::ExecuteTask() Line 634    C++
     UnrealEditor-Core.dll!UE::Tasks::Private::FTaskBase::TryExecuteTask() Line 504    C++
 
Steps to Reproduce

1.) Download and open repro project provided by licensee at case link
2.) Ensure level "ThirdPersonMap" is opened (should be opened by default when opening project), if not go to Content Drawer > Content > ThirdPerson > Maps > ThirdPersonMap
3.) Start Play in Editor
Observe: Niagara Effect running
4.) Press the "E" key and wait for the view to change from Person to Sky and then back to person, total time should be about 2 seconds
Observe: The Niagara Effect restarts
Expected: The Niagara Effect should be deactivated as pressing "E" deactivates the effect and then sets the player camera to a view target to a target that is far away and back
(For the logic please see the Level Blueprint)

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-346925 in the post.

0
Login to Vote

Backlogged
ComponentUE - Niagara - Scalability
Affects Versions5.55.6
Target Fix5.8
CreatedOct 1, 2025
UpdatedOct 17, 2025
View Jira Issue