// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreTypes.h" #include "UObject/WeakObjectPtr.h" #include "UObject/WeakObjectPtrTemplates.h" #include "KeyBarCurveModel.h" #include "Sequencer/MovieSceneControlRigSpaceChannel.h" #include "Channels/MovieSceneChannelHandle.h" #include "Framework/MultiBox/MultiBoxBuilder.h" class UMovieSceneSection; class ISequencer; class FControlRigSpaceChannelCurveModel : public FKeyBarCurveModel { public: static ECurveEditorViewID ViewID; FControlRigSpaceChannelCurveModel(TMovieSceneChannelHandle InChannel, UMovieSceneSection* InOwningSection, TWeakPtr InWeakSequencer); ~FControlRigSpaceChannelCurveModel(); //FCurveModel virtual const void* GetCurve() const override; virtual void Modify() override; virtual void DrawCurve(const FCurveEditor& CurveEditor, const FCurveEditorScreenSpace& ScreenSpace, TArray>& InterpolatingPoints) const override; virtual void GetKeys(double MinTime, double MaxTime, double MinValue, double MaxValue, TArray& OutKeyHandles) const override; virtual void GetKeyDrawInfo(ECurvePointType PointType, const FKeyHandle InKeyHandle, FKeyDrawInfo& OutDrawInfo) const override; virtual void GetKeyPositions(TArrayView InKeys, TArrayView OutKeyPositions) const override; virtual void SetKeyPositions(TArrayView InKeys, TArrayView InKeyPositions, EPropertyChangeType::Type ChangeType) override; virtual void GetKeyAttributes(TArrayView InKeys, TArrayView OutAttributes) const override; virtual void SetKeyAttributes(TArrayView InKeys, TArrayView InAttributes, EPropertyChangeType::Type ChangeType = EPropertyChangeType::Unspecified) override; virtual void GetCurveAttributes(FCurveAttributes& OutCurveAttributes) const override; virtual void SetCurveAttributes(const FCurveAttributes& InCurveAttributes) override; virtual void GetTimeRange(double& MinTime, double& MaxTime) const override; virtual void GetValueRange(double& MinValue, double& MaxValue) const override; virtual int32 GetNumKeys() const override; virtual void GetNeighboringKeys(const FKeyHandle InKeyHandle, TOptional& OutPreviousKeyHandle, TOptional& OutNextKeyHandle) const override {} virtual bool Evaluate(double ProspectiveTime, double& OutValue) const override; virtual void AddKeys(TArrayView InKeyPositions, TArrayView InAttributes, TArrayView>* OutKeyHandles) override; virtual void RemoveKeys(TArrayView InKeys, double InCurrentTime) override; virtual void CreateKeyProxies(TArrayView InKeyHandles, TArrayView OutObjects) override; virtual UObject* GetOwningObject() const override; virtual bool HasChangedAndResetTest() override; //FKeyBarCurveModel virtual void BuildContextMenu(const FCurveEditor& CurveEditor,FMenuBuilder& MenuBuilder, TOptional ClickedPoint); virtual TArray FindRanges(); private: void FixupCurve(); private: TMovieSceneChannelHandle ChannelHandle; TWeakObjectPtr WeakSection; TWeakPtr WeakSequencer; FGuid LastSignature; FDelegateHandle OnDestroyHandle; };