// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreTypes.h" #include "Templates/SharedPointer.h" #include "Containers/ContainersFwd.h" class UObject; class FExtender; class ISequencer; class FUICommandList; template class TFunctionRef; namespace UE::Sequencer { struct FObjectSchemaRelevancy { UClass* Class; uint32 Priority; FObjectSchemaRelevancy() : Class(nullptr) , Priority(0) { } FObjectSchemaRelevancy(UClass* InClass, uint32 InPriority = 0) : Class(InClass) , Priority(InPriority) { } friend bool operator>(const FObjectSchemaRelevancy& A, const FObjectSchemaRelevancy& B); }; class SEQUENCER_API IObjectSchema : public TSharedFromThis { public: static TMap> ComputeRelevancy(TArrayView InObjects); virtual ~IObjectSchema(){} virtual UObject* GetParentObject(UObject* Object) const = 0; virtual FObjectSchemaRelevancy GetRelevancy(const UObject* InObject) const = 0; virtual TSharedPtr ExtendObjectBindingMenu(TSharedRef CommandList, TWeakPtr WeakSequencer, TArrayView ContextSensitiveObjects) const = 0; virtual FText GetPrettyName(const UObject* Object) const; }; } // namespace UE::Sequencer