// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "UObject/ObjectKey.h" #include "MVVM/Extensions/DynamicExtensionContainer.h" #include "EventHandlers/ISequenceDataEventHandler.h" #include "ISequencerModule.h" class UMovieSceneTrack; namespace UE { namespace Sequencer { class FTrackModel; class FSequenceModel; class FViewModel; class FTrackModelStorageExtension : public IDynamicExtension , private UE::MovieScene::TIntrusiveEventHandler { public: UE_SEQUENCER_DECLARE_VIEW_MODEL_TYPE_ID_API(SEQUENCER_API, FTrackModelStorageExtension) FTrackModelStorageExtension(const TArray& InTrackModelCreators); virtual void OnCreated(TSharedRef InWeakOwner) override; virtual void OnReinitialize() override; TSharedPtr CreateModelForTrack(UMovieSceneTrack* InTrack, TSharedPtr DesiredParent = nullptr); SEQUENCER_API TSharedPtr FindModelForTrack(UMovieSceneTrack* InTrack) const; private: void OnTrackAdded(UMovieSceneTrack*) override; void OnTrackRemoved(UMovieSceneTrack*) override; private: TArray TrackModelCreators; TMap> TrackToModel; FSequenceModel* OwnerModel; }; } // namespace Sequencer } // namespace UE