UMovieSceneTrack* UMovieScene::FindTrack( TSubclassOf<UMovieSceneTrack> TrackClass, const FGuid& ObjectGuid, FName UniqueTrackName ) const { UMovieSceneTrack* FoundTrack = NULL; check( UniqueTrackName != NAME_None && ObjectGuid.IsValid() ) for( int32 ObjectBindingIndex = 0; ObjectBindingIndex < ObjectBindings.Num(); ++ObjectBindingIndex ) { const FMovieSceneObjectBinding& ObjectBinding = ObjectBindings[ObjectBindingIndex]; if( ObjectBinding.GetObjectGuid() == ObjectGuid ) { const TArray<UMovieSceneTrack*>& Tracks = ObjectBinding.GetTracks(); for( int32 TrackIndex = 0; TrackIndex < Tracks.Num(); ++TrackIndex ) { UMovieSceneTrack* Track = Tracks[TrackIndex]; if( Track->GetClass() == TrackClass && Track->GetTrackName() == UniqueTrackName ) { FoundTrack = Track; break; } } } } return FoundTrack; }
UMovieSceneTrack* UMovieScene::FindMasterTrack( TSubclassOf<UMovieSceneTrack> TrackClass ) const { UMovieSceneTrack* FoundTrack = NULL; for( int32 TrackIndex = 0; TrackIndex < MasterTracks.Num(); ++TrackIndex ) { UMovieSceneTrack* Track = MasterTracks[TrackIndex]; if( Track->GetClass() == TrackClass ) { FoundTrack = Track; break; } } return FoundTrack; }
TSharedRef<FMovieSceneTrackEditor> FSequencerNodeTree::FindOrAddTypeEditor( UMovieSceneTrack& InTrack ) { TSharedPtr<FMovieSceneTrackEditor> Editor = EditorMap.FindRef( &InTrack ); if( !Editor.IsValid() ) { const TArray< TSharedPtr<FMovieSceneTrackEditor> >& TrackEditors = Sequencer.GetTrackEditors(); // Get a tool for each track // @todo Sequencer - Should probably only need to get this once and it shouldnt be done here. It depends on when movie scene tool modules are loaded TSharedPtr<FMovieSceneTrackEditor> SupportedTool; for( int32 EditorIndex = 0; EditorIndex < TrackEditors.Num(); ++EditorIndex ) { if( TrackEditors[EditorIndex]->SupportsType( InTrack.GetClass() ) ) { Editor = TrackEditors[EditorIndex]; EditorMap.Add( &InTrack, Editor ); break; } } } return Editor.ToSharedRef(); }