// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "DesignerExtension.h" /** * Factory that creates a unique DesignerExtension when a UMG designer is created. */ class UMGEDITOR_API IDesignerExtensionFactory { public: virtual ~IDesignerExtensionFactory() { } virtual TSharedRef CreateDesignerExtension() const = 0; }; class FDesignerExtensibilityManager; /** Indicates that a class has a designer that is extensible */ class IHasDesignerExtensibility { public: virtual ~IHasDesignerExtensibility() { } virtual TSharedPtr GetDesignerExtensibilityManager() = 0; }; /** * Designer Extensibility Manager keep a series of Designer Extensions. See FDesignerExtension class for more information. */ class UMGEDITOR_API FDesignerExtensibilityManager { public: UE_DEPRECATED(4.26, "AddDesignerExtension is deprecated, use the IDesignerExtensibilityFactory instead.") void AddDesignerExtension(const TSharedRef& Extension) { ExternalExtensions.AddUnique(Extension); } UE_DEPRECATED(4.26, "RemoveDesignerExtension is deprecated, use the IDesignerExtensibilityFactory instead.") void RemoveDesignerExtension(const TSharedRef& Extension) { ExternalExtensions.RemoveSingle(Extension); } UE_DEPRECATED(4.26, "RemoveDesignerExtension is deprecated, use the IDesignerExtensibilityFactory instead.") const TArray>& GetExternalDesignerExtensions() const { return ExternalExtensions; } void AddDesignerExtensionFactory(const TSharedRef& Extension) { ExternalExtensionFactories.AddUnique(Extension); } void RemoveDesignerExtensionFactory(const TSharedRef& Extension) { ExternalExtensionFactories.RemoveSingle(Extension); } const TArray>& GetExternalDesignerExtensionFactories() const { return ExternalExtensionFactories; } private: TArray> ExternalExtensions; TArray> ExternalExtensionFactories; };