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

52 lines
1.6 KiB
C++

// 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 <typename T> 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<FViewModel> LayerRoot, TWeakPtr<FSequencerEditorViewModel> InEditorViewModel, TViewModelPtr<IBindingLifetimeExtension> InBindingLifetimeTrack);
~FBindingLifetimeOverlayModel();
/*~ ITrackLaneExtension Interface */
TSharedPtr<ITrackLaneWidget> CreateTrackLaneView(const FCreateTrackLaneViewParams& InParams) override;
FTrackLaneVirtualAlignment ArrangeVirtualTrackLaneView() const override;
const TArray<FFrameNumberRange>& GetInverseLifetimeRange() const;
private:
TWeakPtr<FSequencerEditorViewModel> WeakEditorViewModel;
TViewModelPtr<IBindingLifetimeExtension> BindingLifetimeTrack;
};
} // namespace Sequencer
} // namespace UE