From 02ca4c55cd596fe3ff06f25e36d577a046d87cd6 Mon Sep 17 00:00:00 2001 From: stu mckenna Date: Fri, 8 Sep 2023 14:03:48 -0400 Subject: [PATCH] - Ensure we handle missing / invalid data interfaces when loading Niagara Systems #rb frank.fella #jira UE-194814 [CL 27719700 by stu mckenna in ue5-main branch] --- .../FX/Niagara/Source/Niagara/Private/NiagaraComponent.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Engine/Plugins/FX/Niagara/Source/Niagara/Private/NiagaraComponent.cpp b/Engine/Plugins/FX/Niagara/Source/Niagara/Private/NiagaraComponent.cpp index b23c2362b123..3aaee4fc4cca 100644 --- a/Engine/Plugins/FX/Niagara/Source/Niagara/Private/NiagaraComponent.cpp +++ b/Engine/Plugins/FX/Niagara/Source/Niagara/Private/NiagaraComponent.cpp @@ -3371,6 +3371,13 @@ void UNiagaraComponent::CopyParametersFromAsset(bool bResetExistingOverrideParam { UNiagaraDataInterface* AssetDataInterface = AssetExposedParameters.GetDataInterface(i); UNiagaraDataInterface* OverrideDataInterface = OverrideParameters.GetDataInterface(i); + if (!AssetDataInterface || !OverrideDataInterface) + { + const FNiagaraVariableBase* DIVariable = AssetExposedParameters.FindVariableFromDataInterfaceIndex(i); + UE_LOG(LogNiagara, Error, TEXT("null data interface found for Variable(%s) System(%s) will not run."), DIVariable ? *DIVariable->GetName().ToString() : TEXT("Unknown"), *GetNameSafe(Asset)); + continue; + } + if (AssetDataInterface != OverrideDataInterface) { // We must copy the data regardless as there is an expectation that data interfaces are always reset to the original state