Files
UnrealEngineUWP/Engine/Source/Runtime/MovieScene/Private/MovieScenePlayer.cpp
Marcus Wassmer 3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00

52 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "CoreMinimal.h"
#include "IMovieScenePlayer.h"
#include "Evaluation/MovieSceneEvaluationTemplateInstance.h"
#include "EntitySystem/MovieSceneSequenceInstance.h"
#include "MovieSceneSequence.h"
#include "MovieSceneSequenceID.h"
namespace UE
{
namespace MovieScene
{
static TSparseArray<IMovieScenePlayer*> GGlobalPlayerRegistry;
} // namespace MovieScene
} // namespace UE
IMovieScenePlayer::IMovieScenePlayer()
{
UniqueIndex = UE::MovieScene::GGlobalPlayerRegistry.Add(this);
}
IMovieScenePlayer::~IMovieScenePlayer()
{
ensureMsgf(IsInGameThread(), TEXT("Destruction must occur on the game thread"));
UE::MovieScene::GGlobalPlayerRegistry.RemoveAt(UniqueIndex, 1);
}
IMovieScenePlayer* IMovieScenePlayer::Get(uint16 InUniqueIndex)
{
check(UE::MovieScene::GGlobalPlayerRegistry.IsValidIndex(InUniqueIndex));
return UE::MovieScene::GGlobalPlayerRegistry[InUniqueIndex];
}
void IMovieScenePlayer::ResolveBoundObjects(const FGuid& InBindingId, FMovieSceneSequenceID SequenceID, UMovieSceneSequence& Sequence, UObject* ResolutionContext, TArray<UObject*, TInlineAllocator<1>>& OutObjects) const
{
Sequence.LocateBoundObjects(InBindingId, ResolutionContext, OutObjects);
}
void IMovieScenePlayer::InvalidateCachedData()
{
FMovieSceneRootEvaluationTemplateInstance& Template = GetEvaluationTemplate();
UE::MovieScene::FSequenceInstance* RootInstance = Template.FindInstance(MovieSceneSequenceID::Root);
if (RootInstance)
{
RootInstance->InvalidateCachedData(Template.GetEntitySystemLinker());
}
}