Files
UnrealEngine/Engine/Source/Editor/Sequencer/Public/MVVM/ViewModels/SequencerOutlinerViewModel.h
2025-05-18 13:04:45 +08:00

56 lines
1.8 KiB
C++

// 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<SWidget> CreateContextMenuWidget() override;
TSharedRef<FDragDropOperation> InitiateDrag(TArray<TWeakViewModelPtr<IOutlinerExtension>>&& InDraggedModels) override;
void RequestUpdate() override;
FFrameNumber GetNextKey(const TArray<TSharedRef<UE::Sequencer::FViewModel>>& InNodes, FFrameNumber FrameNumber, EMovieSceneTimeUnit TimeUnit, const TRange<FFrameNumber>& Range);
FFrameNumber GetPreviousKey(const TArray<TSharedRef<UE::Sequencer::FViewModel>>& InNodes, FFrameNumber FrameNumber, EMovieSceneTimeUnit TimeUnit, const TRange<FFrameNumber>& Range);
private:
FFrameNumber GetNextKeyInternal(const TArray<TSharedRef<UE::Sequencer::FViewModel>>& InNodes, FFrameNumber FrameNumber, EMovieSceneTimeUnit TimeUnit, const TRange<FFrameNumber>& 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