void FCameraCutTrackEditor::OnLockCameraClicked(ECheckBoxState CheckBoxState) { if (CheckBoxState == ECheckBoxState::Checked) { for (int32 i = 0; i < GEditor->LevelViewportClients.Num(); ++i) { FLevelEditorViewportClient* LevelVC = GEditor->LevelViewportClients[i]; if (LevelVC && LevelVC->IsPerspective() && LevelVC->AllowsCinematicPreview() && LevelVC->GetViewMode() != VMI_Unknown) { LevelVC->SetActorLock(nullptr); LevelVC->bLockedCameraView = false; LevelVC->UpdateViewForLockedActor(); LevelVC->Invalidate(); } } GetSequencer()->SetPerspectiveViewportCameraCutEnabled(true); } else { GetSequencer()->UpdateCameraCut(nullptr, nullptr); GetSequencer()->SetPerspectiveViewportCameraCutEnabled(false); } GetSequencer()->SetGlobalTime(GetSequencer()->GetGlobalTime()); }
void FThumbnailSection::PreDraw(FTrackEditorThumbnail& Thumbnail, FLevelEditorViewportClient& ViewportClient, FSceneViewport& SceneViewport) { TSharedPtr<ISequencer> Sequencer = SequencerPtr.Pin(); if (Sequencer.IsValid()) { Sequencer->EnterSilentMode(); AActor* Camera = nullptr; FDelegateHandle Handle = Sequencer->OnCameraCut().AddLambda([&](UObject* InObject, bool){ Camera = Cast<AActor>(InObject); }); SavedPlaybackStatus = Sequencer->GetPlaybackStatus(); Sequencer->SetPlaybackStatus(EMovieScenePlayerStatus::Jumping); Sequencer->SetGlobalTimeDirectly(Thumbnail.GetEvalPosition()); ViewportClient.SetActorLock(Camera); Sequencer->OnCameraCut().Remove(Handle); } }