Files
UnrealEngine/Engine/Source/Editor/UMGEditor/Public/IHasDesignerExtensibility.h
2025-05-18 13:04:45 +08:00

71 lines
2.1 KiB
C++

// 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<FDesignerExtension> CreateDesignerExtension() const = 0;
};
class FDesignerExtensibilityManager;
/** Indicates that a class has a designer that is extensible */
class IHasDesignerExtensibility
{
public:
virtual ~IHasDesignerExtensibility() { }
virtual TSharedPtr<FDesignerExtensibilityManager> 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<FDesignerExtension>& Extension)
{
ExternalExtensions.AddUnique(Extension);
}
UE_DEPRECATED(4.26, "RemoveDesignerExtension is deprecated, use the IDesignerExtensibilityFactory instead.")
void RemoveDesignerExtension(const TSharedRef<FDesignerExtension>& Extension)
{
ExternalExtensions.RemoveSingle(Extension);
}
UE_DEPRECATED(4.26, "RemoveDesignerExtension is deprecated, use the IDesignerExtensibilityFactory instead.")
const TArray<TSharedRef<FDesignerExtension>>& GetExternalDesignerExtensions() const
{
return ExternalExtensions;
}
void AddDesignerExtensionFactory(const TSharedRef<IDesignerExtensionFactory>& Extension)
{
ExternalExtensionFactories.AddUnique(Extension);
}
void RemoveDesignerExtensionFactory(const TSharedRef<IDesignerExtensionFactory>& Extension)
{
ExternalExtensionFactories.RemoveSingle(Extension);
}
const TArray<TSharedRef<IDesignerExtensionFactory>>& GetExternalDesignerExtensionFactories() const
{
return ExternalExtensionFactories;
}
private:
TArray<TSharedRef<FDesignerExtension>> ExternalExtensions;
TArray<TSharedRef<IDesignerExtensionFactory>> ExternalExtensionFactories;
};