Skip to content

Commit 7ca3cd5

Browse files
committed
added nullchecks on Sequence Player
fixes a rare crash occurring blueprint caused infinite loop before calling CreatePlayer method
1 parent 07aa077 commit 7ca3cd5

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

Source/Flow/Private/Nodes/World/FlowNode_PlayLevelSequence.cpp

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,10 @@ void UFlowNode_PlayLevelSequence::CreatePlayer()
115115
{
116116
ALevelSequenceActor* SequenceActor;
117117
SequencePlayer = UFlowLevelSequencePlayer::CreateFlowLevelSequencePlayer(this, LoadedSequence, PlaybackSettings, CameraSettings, SequenceActor);
118-
SequencePlayer->SetFlowEventReceiver(this);
118+
if (SequencePlayer)
119+
{
120+
SequencePlayer->SetFlowEventReceiver(this);
121+
}
119122

120123
const FFrameRate FrameRate = LoadedSequence->GetMovieScene()->GetTickResolution();
121124
const FFrameNumber PlaybackStartFrame = LoadedSequence->GetMovieScene()->GetPlaybackRange().GetLowerBoundValue();
@@ -133,12 +136,15 @@ void UFlowNode_PlayLevelSequence::ExecuteInput(const FName& PinName)
133136
{
134137
CreatePlayer();
135138

136-
TriggerOutput(TEXT("PreStart"));
139+
if (SequencePlayer)
140+
{
141+
TriggerOutput(TEXT("PreStart"));
137142

138-
SequencePlayer->OnFinished.AddDynamic(this, &UFlowNode_PlayLevelSequence::OnPlaybackFinished);
139-
SequencePlayer->Play();
143+
SequencePlayer->OnFinished.AddDynamic(this, &UFlowNode_PlayLevelSequence::OnPlaybackFinished);
144+
SequencePlayer->Play();
140145

141-
TriggerOutput(TEXT("Started"));
146+
TriggerOutput(TEXT("Started"));
147+
}
142148
}
143149

144150
TriggerFirstOutput(false);
@@ -166,11 +172,15 @@ void UFlowNode_PlayLevelSequence::OnLoad_Implementation()
166172
if (GetFlowSubsystem()->GetWorld() && LoadedSequence)
167173
{
168174
CreatePlayer();
169-
SequencePlayer->OnFinished.AddDynamic(this, &UFlowNode_PlayLevelSequence::OnPlaybackFinished);
170175

171-
SequencePlayer->SetPlayRate(TimeDilation);
172-
SequencePlayer->SetPlaybackPosition(FMovieSceneSequencePlaybackParams(ElapsedTime, EUpdatePositionMethod::Jump));
173-
SequencePlayer->Play();
176+
if (SequencePlayer)
177+
{
178+
SequencePlayer->OnFinished.AddDynamic(this, &UFlowNode_PlayLevelSequence::OnPlaybackFinished);
179+
180+
SequencePlayer->SetPlayRate(TimeDilation);
181+
SequencePlayer->SetPlaybackPosition(FMovieSceneSequencePlaybackParams(ElapsedTime, EUpdatePositionMethod::Jump));
182+
SequencePlayer->Play();
183+
}
174184
}
175185
}
176186
}

0 commit comments

Comments
 (0)