UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TypedElementInterfaceCustomization.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "HAL/Platform.h"
11#include "UObject/NameTypes.h"
12
34
38template <typename CustomizationBaseType, typename DefaultCustomizationType = CustomizationBaseType>
40{
41public:
42 template <typename... TDefaultArgs>
47
49
52
55
60 {
61 checkf(InInterfaceCustomization, TEXT("Default interface customization cannot be null!"));
62 DefaultInterfaceCustomization = MoveTemp(InInterfaceCustomization);
63 }
64
69 {
70 return DefaultInterfaceCustomization.Get();
71 }
72
80
88
96
101 {
102 RegisteredInterfaceCustomizations[InElementTypeId - 1].Reset();
103 }
104
113
119 {
120 CustomizationBaseType* InterfaceCustomization = RegisteredInterfaceCustomizations[InElementTypeId - 1].Get();
124 ? DefaultInterfaceCustomization.Get()
125 : nullptr;
126 }
127
128private:
130 TUniquePtr<CustomizationBaseType> DefaultInterfaceCustomization;
131
133 TUniquePtr<CustomizationBaseType> RegisteredInterfaceCustomizations[TypedHandleMaxTypeId - 1];
134};
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8 FTypedHandleTypeId
Definition TypedElementLimits.h:29
constexpr SIZE_T TypedHandleMaxTypeId
Definition TypedElementLimits.h:23
UE_FORCEINLINE_HINT TUniquePtr< T > MakeUnique(TArgs &&... Args)
Definition UniquePtr.h:918
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
Definition TypedElementInterfaceCustomization.h:17
virtual ~FTypedElementInterfaceCustomizationRegistryBase()=default
TYPEDELEMENTRUNTIME_API FTypedHandleTypeId GetElementTypeIdFromNameChecked(const FName InElementTypeName) const
Definition TypedElementInterfaceCustomization.cpp:11
TYPEDELEMENTRUNTIME_API FTypedHandleTypeId GetElementTypeIdFromName(const FName InElementTypeName) const
Definition TypedElementInterfaceCustomization.cpp:6
Definition TypedElementInterfaceCustomization.h:40
void SetDefaultInterfaceCustomization(TUniquePtr< CustomizationBaseType > &&InInterfaceCustomization)
Definition TypedElementInterfaceCustomization.h:59
CustomizationBaseType * GetDefaultInterfaceCustomization() const
Definition TypedElementInterfaceCustomization.h:68
CustomizationBaseType * GetInterfaceCustomizationByTypeId(const FTypedHandleTypeId InElementTypeId, const bool bAllowFallback=true) const
Definition TypedElementInterfaceCustomization.h:118
void UnregisterInterfaceCustomizationByTypeId(const FTypedHandleTypeId InElementTypeId)
Definition TypedElementInterfaceCustomization.h:100
void RegisterInterfaceCustomizationByTypeName(const FName InElementTypeName, TUniquePtr< CustomizationBaseType > &&InInterfaceCustomization)
Definition TypedElementInterfaceCustomization.h:76
TTypedElementInterfaceCustomizationRegistry & operator=(const TTypedElementInterfaceCustomizationRegistry &)=delete
virtual ~TTypedElementInterfaceCustomizationRegistry()=default
TTypedElementInterfaceCustomizationRegistry(TDefaultArgs &&... DefaultArgs)
Definition TypedElementInterfaceCustomization.h:43
TTypedElementInterfaceCustomizationRegistry & operator=(TTypedElementInterfaceCustomizationRegistry &&)=delete
CustomizationBaseType * GetInterfaceCustomizationByTypeName(const FName InElementTypeName, const bool bAllowFallback=true) const
Definition TypedElementInterfaceCustomization.h:109
TTypedElementInterfaceCustomizationRegistry(const TTypedElementInterfaceCustomizationRegistry &)=delete
TTypedElementInterfaceCustomizationRegistry(TTypedElementInterfaceCustomizationRegistry &&)=delete
void UnregisterInterfaceCustomizationByTypeName(const FName InElementTypeName)
Definition TypedElementInterfaceCustomization.h:92
void RegisterInterfaceCustomizationByTypeId(const FTypedHandleTypeId InElementTypeId, TUniquePtr< CustomizationBaseType > &&InInterfaceCustomization)
Definition TypedElementInterfaceCustomization.h:84
Definition UniquePtr.h:107
void Reset(T *InPtr=nullptr)
Definition UniquePtr.h:346
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324