// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Input/DragAndDrop.h" #include "MVVM/ViewModels/OutlinerViewModel.h" #include "MVVM/ViewModels/SequencerEditorViewModel.h" #include "MovieSceneTimeUnit.h" #include "SequencerKeyCollection.h" #include "ISequencerModule.h" class FMenuBuilder; namespace UE { namespace Sequencer { class FSequenceModel; class FSequencerOutlinerViewModel : public FOutlinerViewModel { public: UE_SEQUENCER_DECLARE_CASTABLE(FSequencerOutlinerViewModel, FOutlinerViewModel); FSequencerOutlinerViewModel(); void BuildContextMenu(FMenuBuilder& MenuBuilder); void BuildCustomContextMenuForGuid(FMenuBuilder& MenuBuilder, FGuid ObjectBinding); /*~ FOutlinerViewModel */ TSharedPtr CreateContextMenuWidget() override; TSharedRef InitiateDrag(TArray>&& InDraggedModels) override; void RequestUpdate() override; FFrameNumber GetNextKey(const TArray>& InNodes, FFrameNumber FrameNumber, EMovieSceneTimeUnit TimeUnit, const TRange& Range); FFrameNumber GetPreviousKey(const TArray>& InNodes, FFrameNumber FrameNumber, EMovieSceneTimeUnit TimeUnit, const TRange& Range); private: FFrameNumber GetNextKeyInternal(const TArray>& InNodes, FFrameNumber FrameNumber, EMovieSceneTimeUnit TimeUnit, const TRange& Range, EFindKeyDirection Direction); public: /** Called when the add menu is created */ FOnGetAddMenuContent OnGetAddMenuContent; /** Called when object is clicked in track list */ FOnBuildCustomContextMenuForGuid OnBuildCustomContextMenuForGuid; }; } // namespace Sequencer } // namespace UE