Files
UnrealEngine/Engine/Source/Runtime/MovieSceneTracks/Private/Sections/MovieScene3DConstraintSection.cpp
2025-05-18 13:04:45 +08:00

49 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Sections/MovieScene3DConstraintSection.h"
#include "MovieSceneObjectBindingID.h"
#include "MovieSceneSequenceID.h"
#include "Evaluation/MovieSceneSequenceHierarchy.h"
#include "IMovieScenePlayer.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(MovieScene3DConstraintSection)
UMovieScene3DConstraintSection::UMovieScene3DConstraintSection( const FObjectInitializer& ObjectInitializer )
: Super( ObjectInitializer )
{
bSupportsInfiniteRange = true;
}
void UMovieScene3DConstraintSection::OnBindingIDsUpdated(const TMap<UE::MovieScene::FFixedObjectBindingID, UE::MovieScene::FFixedObjectBindingID>& OldFixedToNewFixedMap, FMovieSceneSequenceID LocalSequenceID, TSharedRef<UE::MovieScene::FSharedPlaybackState> SharedPlaybackState)
{
UE::MovieScene::FFixedObjectBindingID FixedBindingID = ConstraintBindingID.ResolveToFixed(LocalSequenceID, SharedPlaybackState);
if (OldFixedToNewFixedMap.Contains(FixedBindingID))
{
Modify();
const FMovieSceneSequenceHierarchy* Hierarchy = SharedPlaybackState->GetHierarchy();
SetConstraintBindingID(OldFixedToNewFixedMap[FixedBindingID].ConvertToRelative(LocalSequenceID, Hierarchy));
}
}
void UMovieScene3DConstraintSection::GetReferencedBindings(TArray<FGuid>& OutBindings)
{
OutBindings.Add(ConstraintBindingID.GetGuid());
}
void UMovieScene3DConstraintSection::PostLoad()
{
Super::PostLoad();
if (ConstraintId_DEPRECATED.IsValid())
{
if (!ConstraintBindingID.IsValid())
{
ConstraintBindingID = UE::MovieScene::FRelativeObjectBindingID(ConstraintId_DEPRECATED);
}
ConstraintId_DEPRECATED.Invalidate();
}
}