So I have a user parameter in a Niagara called “MyColor” which is a color curve. I am trying to modify the color of this system dynamically during gameplay using the UNiagaraDataInterfaceColorCurve class as follows:
UNiagaraDataInterfaceColorCurve* AShooterCharacter::SetHoverEffectColors()
{
UNiagaraDataInterfaceColorCurve* ColorCurve = NewObject<UNiagaraDataInterfaceColorCurve>(this);
if (!ColorCurve)
{
UE_LOG(LogTemp, Warning, TEXT("Failed to create Color Curve"));
return nullptr;
}
ColorCurve->RedCurve.Reset();
ColorCurve->GreenCurve.Reset();
ColorCurve->BlueCurve.Reset();
ColorCurve->AlphaCurve.Reset();
// Define color transition over time
ColorCurve->RedCurve.AddKey(0.f, 1.f); // Red
ColorCurve->GreenCurve.AddKey(0.f, 0.f); // Green
ColorCurve->BlueCurve.AddKey(0.f, 0.f); // Blue
ColorCurve->AlphaCurve.AddKey(0.f, 1.f); // Alpha
ColorCurve->RedCurve.AddKey(1.f, 1.f);
ColorCurve->GreenCurve.AddKey(1.f, 1.f);
ColorCurve->BlueCurve.AddKey(1.f, 1.f);
ColorCurve->AlphaCurve.AddKey(1.f, 1.f);
ColorCurve->bUseLUT = true;
ColorCurve->bOptimizeLUT = true;
return ColorCurve;
}
I then call this function and set the color curve as follows:
UNiagaraDataInterfaceColorCurve* ColorCurve = SetHoverEffectColors();
if (ColorCurve)
{
MyNiagaraComponent->SetVariableObject(FName("User.MyColor"), ColorCurve);
}
But the color curve is not changing during gameplay…Am I doing something wrong?