本文整理汇总了C++中UMovieScene::GetCameraCutTrack方法的典型用法代码示例。如果您正苦于以下问题:C++ UMovieScene::GetCameraCutTrack方法的具体用法?C++ UMovieScene::GetCameraCutTrack怎么用?C++ UMovieScene::GetCameraCutTrack使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UMovieScene
的用法示例。
在下文中一共展示了UMovieScene::GetCameraCutTrack方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FindOrCreateCameraCutTrack
UMovieSceneCameraCutTrack* FCameraCutTrackEditor::FindOrCreateCameraCutTrack()
{
UMovieScene* FocusedMovieScene = GetFocusedMovieScene();
UMovieSceneTrack* CameraCutTrack = FocusedMovieScene->GetCameraCutTrack();
if (CameraCutTrack == nullptr)
{
const FScopedTransaction Transaction(LOCTEXT("AddCameraCutTrack_Transaction", "Add Camera Cut Track"));
FocusedMovieScene->Modify();
CameraCutTrack = FocusedMovieScene->AddCameraCutTrack(UMovieSceneCameraCutTrack::StaticClass());
}
return CastChecked<UMovieSceneCameraCutTrack>(CameraCutTrack);
}
示例2: HandleAddCameraCutTrackMenuEntryCanExecute
bool FCameraCutTrackEditor::HandleAddCameraCutTrackMenuEntryCanExecute() const
{
UMovieScene* FocusedMovieScene = GetFocusedMovieScene();
return ((FocusedMovieScene != nullptr) && (FocusedMovieScene->GetCameraCutTrack() == nullptr));
}
示例3: RefreshInstance
void FMovieSceneSequenceInstance::RefreshInstance( IMovieScenePlayer& Player )
{
if(MovieSceneSequence.IsValid())
{
UMovieScene* MovieScene = MovieSceneSequence->GetMovieScene();
TimeRange = MovieScene->GetPlaybackRange();
UMovieSceneTrack* CameraCutTrack = MovieScene->GetCameraCutTrack();
if (CameraCutTrack != nullptr)
{
FMovieSceneInstanceMap CameraCutTrackInstanceMap;
if (CameraCutTrackInstance.IsValid())
{
CameraCutTrackInstanceMap.Add(CameraCutTrack, CameraCutTrackInstance);
}
TArray<TWeakObjectPtr<UObject>> Objects;
TArray<UMovieSceneTrack*> Tracks;
Tracks.Add(CameraCutTrack);
RefreshInstanceMap(Tracks, Objects, CameraCutTrackInstanceMap, Player);
CameraCutTrackInstance = CameraCutTrackInstanceMap.FindRef(CameraCutTrack);
}
else if(CameraCutTrackInstance.IsValid())
{
CameraCutTrackInstance->ClearInstance(Player, *this);
CameraCutTrackInstance.Reset();
}
// Get all the master tracks and create instances for them if needed
const TArray<UMovieSceneTrack*>& MasterTracks = MovieScene->GetMasterTracks();
TArray<TWeakObjectPtr<UObject>> Objects;
RefreshInstanceMap( MasterTracks, Objects, MasterTrackInstances, Player );
TSet< FGuid > FoundObjectBindings;
// Get all tracks for each object binding and create instances for them if needed
const TArray<FMovieSceneBinding>& ObjectBindings = MovieScene->GetBindings();
for( int32 BindingIndex = 0; BindingIndex < ObjectBindings.Num(); ++BindingIndex )
{
const FMovieSceneBinding& ObjectBinding = ObjectBindings[BindingIndex];
// Create an instance for this object binding
FMovieSceneObjectBindingInstance& BindingInstance = ObjectBindingInstances.FindOrAdd( ObjectBinding.GetObjectGuid() );
BindingInstance.ObjectGuid = ObjectBinding.GetObjectGuid();
FoundObjectBindings.Add( ObjectBinding.GetObjectGuid() );
// Populate the runtime objects for this instance of the binding.
// @todo sequencer: SubSequences: We need to know which actors were removed and which actors were added so we know which saved actor state to restore/create
BindingInstance.RuntimeObjects.Empty();
Player.GetRuntimeObjects( SharedThis( this ), BindingInstance.ObjectGuid, BindingInstance.RuntimeObjects );
// Refresh the instance's tracks
const TArray<UMovieSceneTrack*>& Tracks = ObjectBinding.GetTracks();
RefreshInstanceMap( Tracks, BindingInstance.RuntimeObjects, BindingInstance.TrackInstances, Player );
}
IMovieSceneSpawnRegister& SpawnRegister = Player.GetSpawnRegister();
// Remove object binding instances which are no longer bound
TMap<FGuid, FMovieSceneObjectBindingInstance>::TIterator It = ObjectBindingInstances.CreateIterator();
for( ; It; ++It )
{
if( !FoundObjectBindings.Contains( It.Key() ) )
{
SpawnRegister.DestroySpawnedObject(It.Key(), *this, Player);
// The instance no longer is bound to an existing guid
It.RemoveCurrent();
}
}
}
}