Hi, I’m also interested in keying Niagara variables. After investigating the source code, it turns out that the C++ functions aren’t exposed to blueprints. If you want to initialize a new section and bind Niagara params, you can refer to FNiagaraSystemTrackEditor.cpp
void FNiagaraSystemTrackEditor::AddNiagaraParameterTrack(TArray<FGuid> ObjectBindings, FNiagaraVariable Parameter, TArray<uint8> DefaultValueData)
{
FNiagaraEditorModule& NiagaraEditorModule = FModuleManager::GetModuleChecked<FNiagaraEditorModule>("NiagaraEditor");
if (NiagaraEditorModule.CanCreateParameterTrackForType(*Parameter.GetType().GetScriptStruct()))
{
UMovieScene* MovieScene = GetSequencer()->GetFocusedMovieSceneSequence()->GetMovieScene();
if (MovieScene->IsReadOnly())
{
return;
}
FScopedTransaction AddTrackTransaction(LOCTEXT("AddNiagaraParameterTrackTransaction", "Add Niagara Parameter Track"));
MovieScene->Modify();
for (FGuid ObjectBinding : ObjectBindings)
{
UMovieSceneNiagaraParameterTrack* ParameterTrack = NiagaraEditorModule.CreateParameterTrackForType(*Parameter.GetType().GetScriptStruct(), Parameter);
MovieScene->AddGivenTrack(ParameterTrack, ObjectBinding);
ParameterTrack->SetParameter(Parameter);
ParameterTrack->SetDisplayName(FText::FromName(Parameter.GetName()));
UMovieSceneSection* ParameterSection = ParameterTrack->CreateNewSection();
ParameterTrack->SetSectionChannelDefaults(ParameterSection, DefaultValueData);
ParameterSection->SetRange(TRange<FFrameNumber>::All());
ParameterTrack->AddSection(*ParameterSection);
}
GetSequencer()->NotifyMovieSceneDataChanged(EMovieSceneDataChangeType::MovieSceneStructureItemAdded);
}
}
There’s another way to copy-paste existing sections. It can be done by pure blueprint. Just make a reference sequencer and manually keyframe a niagara parameter. Then copy the section to new places and add keys.(The name of params must be the same, like “Beam_End”)
Hope it works!
