// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MVVM/Extensions/ITrackLaneExtension.h" #include "MVVM/Extensions/IBindingLifetimeExtension.h" #include "MVVM/Extensions/LinkedOutlinerExtension.h" #include "MVVM/Extensions/ViewModelExtensionCollection.h" #include "MVVM/ICastable.h" #include "MVVM/ViewModels/ViewModel.h" #include "Math/Range.h" #include "Templates/SharedPointer.h" #include "SequencerEditorViewModel.h" namespace UE::Sequencer { template struct TAutoRegisterViewModelTypeID; } struct FFrameNumber; namespace UE { namespace Sequencer { class SEQUENCER_API FBindingLifetimeOverlayModel : public FViewModel , public FLinkedOutlinerExtension , public ITrackLaneExtension { public: UE_SEQUENCER_DECLARE_CASTABLE(FBindingLifetimeOverlayModel, FViewModel , FLinkedOutlinerExtension , ITrackLaneExtension ); FBindingLifetimeOverlayModel(TWeakPtr LayerRoot, TWeakPtr InEditorViewModel, TViewModelPtr InBindingLifetimeTrack); ~FBindingLifetimeOverlayModel(); /*~ ITrackLaneExtension Interface */ TSharedPtr CreateTrackLaneView(const FCreateTrackLaneViewParams& InParams) override; FTrackLaneVirtualAlignment ArrangeVirtualTrackLaneView() const override; const TArray& GetInverseLifetimeRange() const; private: TWeakPtr WeakEditorViewModel; TViewModelPtr BindingLifetimeTrack; }; } // namespace Sequencer } // namespace UE