シーケンサー再生終了後も最後の見た目を維持する方法について

お世話になっております。

「カットシーン(シーケンサー)の再生途中でイベントが発生したらプレイヤーのボタン入力受付を開始し、ボタンが入力されるか入力受付時間が終わるまでは、シーケンサーが最後まで再生されても元に戻さず最後の見た目を維持させる」
といった事をやりたいと考えております。
(ボタンが入力されるor入力受付時間が終わったら結果に応じて次の場面のシーケンサーを再生)
(イベントはシーケンサーのイベントトラックを使用)

シーケンサー内の全てのセクションの「When Finished」を「Keep State」に変更すれば実現可能と思われますが、
シーケンサーで使用しているトラックがかなり多く、1つ1つ選択して変更しようとすると非常に手間がかかり、また抜けも発生しやすいと思われるため、
特定のシーケンサー内のセクションの「When Finished」を一括で変更する方法はないでしょうか?
または、「When Finished」を変更する以外で良い方法はあるでしょうか?

補足:作成済みのシーケンサーのセクションの「When Finished」は、「Project Default」「Keep State」「Restore State」が混在している状態となります。

よろしくお願い致します。

お世話になっております。

シーケンサーが最後まで再生されても元に戻さず最後の見た目を維持させる

こちらに関しましては、「When Finished」を「Keep State」することが最もコストが低いかと思います。

特定のシーケンサー内のセクションの「When Finished」を一括で変更する方法はないでしょうか?

UE4.20で追加された Sequencer Scriptingプラグインが有用です。このプラグインを使うことでBPから対象のシーケンサの各Track, Section, Channelなどを取得可能です。

また、同じくUE4.20で追加された Editor ScriptingプラグインのAssetActionUtilityを使うことで、アセットの右クリックメニューにBPで実装した処理を呼び出すコマンドを追加することが可能です。

上記の機能を併用することで、以下のようなBPを組むことで「コンテンツブラウザ上で選択中のLevelSequenceアセットにおける全SectionのWhen Finishedを一括で変更」というフローを実現可能です。

なお、Sequencer Scriptingプラグインはまだβ段階ということもあり、各プロパティの変更処理の大半が実装されていません。そのため、例えばSectionのWhen FinishedプロパティをBPから変更したい場合は、MovieSceneSectionExtensionsに以下のコードを追加する必要があります。

void UMovieSceneSectionExtensions::SetWhenFinished(UMovieSceneSection* Section, EMovieSceneCompletionMode Mode)
{
	Section->EvalOptions.CompletionMode = Mode;
}

もし全てのSectionではなく特定のタイプのものだけを変更したい場合は、ForEachLoopで処理を回している所に判定処理を追加すれば実現可能かと思います。

よろしくお願いいたします。

遅くなりまして申し訳ございません。
ご回答有り難うございます。

Sequencer Scriptingプラグインを使用した方法のご教示ありがとうございます。
実装の参考にさせていただきます。

ただ、こちらで並行して「When Finished」を変更する以外の方法も探していた際に気づいたのですが、
LevelSequencePlayerの初期化時に使用されるFMovieSceneSequencePlaybackSettingsの「bPauseAtEnd」をtrueにする事で
シーケンサーが最後まで再生された際にStop()ではなくPause()が呼ばれる事により最後の見た目を維持させる事ができるように思われたのですが、
こちらを使用する上での問題点や注意点などはあるでしょうか?
(「bPauseAtEnd」はレベルエディタのDetailsタブだと表示されないようなのですが、実際のゲーム中の使用は想定されていないものなのでしょうか?)
「When Finished」を「Keep State」に変更する方法の場合、今回弊社で考えている使い方だと新たに幾つか問題がある事が判明したため、
問題がなければ「bPauseAtEnd」を使用した方法を採用したいと考えております。

また、弊社都合にて早急に解決しなければならない状況ですので、
恐れ入りますが何卒よろしくお願い致します。

お世話になっております。

bPauseAtEndに関しての情報、誠にありがとうございます。恥ずかしながらそのプロパティの存在に気づいていませんでした。
まず社内データベースを確認した所、bPauseAtEndをtrueにしたことによる不具合は現状報告されていません。確かに詳細パネルには表示されていませんが、 UAutomatedLevelSequenceCapture でtrueに指定されていたり、 CreateLevelSequencePlayer ノードの引数にてbPauseAtEndをtrueにできることから全く使用されていないオプションということではなさそうです。
次にコードを確認した限りでは、既に確認して頂いている通り、 UMovieSceneSequencePlayer::UpdateTimeCursorPosition_Internal におけるStopかPaunseのどちらを呼ぶかの判定で使用されているだけですので、影響範囲は少なく特に問題ないかと思います。強いて言えば、 Stop() と PlayPosition.Reset が呼ばれなくなるため、それらの処理に依存しているコードが存在している場合は修正する必要があるかと思います。

ご参考になれば幸いです。
よろしくお願いいたします。

ご回答ありがとうございます。

特に問題はなさそうなので、Stop() と PlayPosition.Reset() に依存しているコードに注意しつつ、bPauseAtEndをtrueにする方法を採用したいと思います。

迅速なご回答、誠にありがとうございました。