Files
UnrealEngine/Engine/Source/Editor/Sequencer/Private/ISequencer.cpp
2025-05-18 13:04:45 +08:00

91 lines
2.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ISequencer.h"
#include "AnimatedRange.h"
#include "Camera/CameraComponent.h"
#include "Capabilities/CameraCutViewTargetCacheCapability.h"
#include "Misc/AssertionMacros.h"
#include "MovieScene.h"
#include "MovieSceneSequence.h"
#include "ITimeSlider.h"
#include "SequencerUtilities.h"
TWeakObjectPtr<UCameraComponent> ISequencer::GetLastEvaluatedCameraCut() const
{
const TSharedPtr<const UE::MovieScene::FSharedPlaybackState> PlaybackState = FindSharedPlaybackState();
const UE::MovieScene::FCameraCutViewTargetCacheCapability* Capability = PlaybackState
? PlaybackState->FindCapability<UE::MovieScene::FCameraCutViewTargetCacheCapability>() : nullptr;
return Capability ? Capability->LastViewTargetCamera.Get() : nullptr;
}
FAnimatedRange ISequencer::GetViewRange() const
{
return FAnimatedRange();
}
FFrameRate ISequencer::GetRootTickResolution() const
{
UMovieSceneSequence* RootSequence = GetRootMovieSceneSequence();
if (RootSequence)
{
return RootSequence->GetMovieScene()->GetTickResolution();
}
ensureMsgf(false, TEXT("No valid sequence found."));
return FFrameRate();
}
FFrameRate ISequencer::GetRootDisplayRate() const
{
UMovieSceneSequence* RootSequence = GetRootMovieSceneSequence();
if (RootSequence)
{
return RootSequence->GetMovieScene()->GetDisplayRate();
}
ensureMsgf(false, TEXT("No valid sequence found."));
return FFrameRate();
}
FFrameRate ISequencer::GetFocusedTickResolution() const
{
UMovieSceneSequence* FocusedSequence = GetFocusedMovieSceneSequence();
if (FocusedSequence)
{
return FocusedSequence->GetMovieScene()->GetTickResolution();
}
ensureMsgf(false, TEXT("No valid sequence found."));
return FFrameRate();
}
FFrameRate ISequencer::GetFocusedDisplayRate() const
{
UMovieSceneSequence* FocusedSequence = GetFocusedMovieSceneSequence();
if (FocusedSequence)
{
return FocusedSequence->GetMovieScene()->GetDisplayRate();
}
ensureMsgf(false, TEXT("No valid sequence found."));
return FFrameRate();
}
FGuid ISequencer::CreateBinding(UObject& InObject, const FString& InName)
{
UE::Sequencer::FCreateBindingParams BindingParams;
BindingParams.BindingNameOverride = InName;
return CreateBinding(InObject, BindingParams);
}
FGuid ISequencer::CreateBinding(UMovieSceneSequence* InSequence, UObject* InObject)
{
if (GetFocusedMovieSceneSequence() == InSequence && InObject)
{
UE::Sequencer::FCreateBindingParams BindingParams;
BindingParams.bAllowCustomBinding = true;
return CreateBinding(*InObject, BindingParams);
}
return IMovieScenePlayer::CreateBinding(InSequence, InObject);
}