// Copyright Epic Games, Inc. All Rights Reserved. #include "LevelSequenceDirector.h" #include "Engine/World.h" #include "UObject/Stack.h" #include "MovieSceneObjectBindingID.h" #include "LevelSequencePlayer.h" #include "IMovieScenePlayer.h" #include "Evaluation/MovieSceneEvaluationTemplateInstance.h" UWorld* ULevelSequenceDirector::GetWorld() const { if (ULevel* OuterLevel = GetTypedOuter()) { return OuterLevel->OwningWorld; } return GetTypedOuter(); } TArray ULevelSequenceDirector::GetBoundObjects(FMovieSceneObjectBindingID ObjectBinding) { TArray Objects; if (IMovieScenePlayer* PlayerInterface = IMovieScenePlayer::Get(static_cast(MovieScenePlayerIndex))) { for (TWeakObjectPtr<> WeakObject : ObjectBinding.ResolveBoundObjects(FMovieSceneSequenceID(SubSequenceID), *PlayerInterface)) { if (UObject* Object = WeakObject.Get()) { Objects.Add(Object); } } } else { FFrame::KismetExecutionMessage(TEXT("No player interface available or assigned."), ELogVerbosity::Error); } return Objects; } UObject* ULevelSequenceDirector::GetBoundObject(FMovieSceneObjectBindingID ObjectBinding) { if (IMovieScenePlayer* PlayerInterface = IMovieScenePlayer::Get(static_cast(MovieScenePlayerIndex))) { for (TWeakObjectPtr<> WeakObject : ObjectBinding.ResolveBoundObjects(FMovieSceneSequenceID(SubSequenceID), *PlayerInterface)) { if (UObject* Object = WeakObject.Get()) { return Object; } } } else { FFrame::KismetExecutionMessage(TEXT("No player interface available or assigned."), ELogVerbosity::Error); } return nullptr; } TArray ULevelSequenceDirector::GetBoundActors(FMovieSceneObjectBindingID ObjectBinding) { TArray Actors; if (IMovieScenePlayer* PlayerInterface = IMovieScenePlayer::Get(static_cast(MovieScenePlayerIndex))) { for (TWeakObjectPtr<> WeakObject : ObjectBinding.ResolveBoundObjects(FMovieSceneSequenceID(SubSequenceID), *PlayerInterface)) { if (AActor* Actor = Cast(WeakObject.Get())) { Actors.Add(Actor); } } } else { FFrame::KismetExecutionMessage(TEXT("No player interface available or assigned."), ELogVerbosity::Error); } return Actors; } AActor* ULevelSequenceDirector::GetBoundActor(FMovieSceneObjectBindingID ObjectBinding) { if (IMovieScenePlayer* PlayerInterface = IMovieScenePlayer::Get(static_cast(MovieScenePlayerIndex))) { for (TWeakObjectPtr<> WeakObject : ObjectBinding.ResolveBoundObjects(FMovieSceneSequenceID(SubSequenceID), *PlayerInterface)) { if (AActor* Actor = Cast(WeakObject.Get())) { return Actor; } } } else { FFrame::KismetExecutionMessage(TEXT("No player interface available or assigned."), ELogVerbosity::Error); } return nullptr; } UMovieSceneSequence* ULevelSequenceDirector::GetSequence() { if (IMovieScenePlayer* PlayerInterface = IMovieScenePlayer::Get(static_cast(MovieScenePlayerIndex))) { return PlayerInterface->GetEvaluationTemplate().GetSequence(FMovieSceneSequenceID(SubSequenceID)); } else { FFrame::KismetExecutionMessage(TEXT("No sequence player."), ELogVerbosity::Error); return nullptr; } }