UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InterchangeFactoryBaseNode.h File Reference
#include "Containers/Array.h"
#include "Containers/UnrealString.h"
#include "CoreMinimal.h"
#include "HAL/Platform.h"
#include "Nodes/InterchangeBaseNode.h"
#include "Nodes/InterchangeBaseNodeUtilities.h"
#include "Types/AttributeStorage.h"
#include "UObject/Class.h"
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "UObject/SoftObjectPath.h"
#include "UObject/UObjectGlobals.h"
#include "InterchangeFactoryBaseNode.generated.h"

Go to the source code of this file.

Classes

struct  UE::Interchange::FFactoryBaseNodeStaticData
 
class  UInterchangeFactoryBaseNode
 

Namespaces

namespace  UE
 
namespace  UE::Interchange
 

Macros

#define IMPLEMENT_NODE_ATTRIBUTE_DELEGATE_BY_PROPERTYNAME(AttributeName, AttributeType, ObjectType, PropertyName)
 
#define IMPLEMENT_NODE_ATTRIBUTE_SETTER(NodeClassName, AttributeName, AttributeType, AssetType)
 
#define IMPLEMENT_NODE_ATTRIBUTE_SETTER_WITH_CUSTOM_DELEGATE_WITH_CUSTOM_CLASS(NodeClassName, AttributeName, AttributeType, AssetType)
 
#define IMPLEMENT_NODE_ATTRIBUTE_SETTER_WITH_CUSTOM_DELEGATE(NodeClassName, AttributeName, AttributeType)
 
#define COPY_NODE_DELEGATES(SourceNode, AttributeName, AttributeType, AssetType)
 
#define COPY_NODE_DELEGATES_WITH_CUSTOM_DELEGATE(SourceNode, NodeClassName, AttributeName, AttributeType, AssetClass)
 
#define REFILL_CUSTOM_ATTRIBUTE_APPLY_DELEGATE(AttributeName, AttributeType)
 
#define REFILL_CUSTOM_ATTRIBUTE_APPLY_DELEGATE_EXPLICIT(AttributeKey, Getter, Setter, AttributeType)
 

Enumerations

enum class  EReimportStrategyFlags : uint8 { ApplyNoProperties , ApplyPipelineProperties , UMETA =(DisplayName = "Preserve Editor Changed Properties") }
 

Functions

 UE::Interchange::DECLARE_DELEGATE_RetVal_OneParam (bool, FApplyAttributeToAsset, UObject *)
 
 UE::Interchange::DECLARE_DELEGATE_RetVal_OneParam (bool, FFillAttributeToAsset, UObject *)
 

Macro Definition Documentation

◆ COPY_NODE_DELEGATES

#define COPY_NODE_DELEGATES (   SourceNode,
  AttributeName,
  AttributeType,
  AssetType 
)
Value:
{ \
FString OperationName = GetTypeName() + TEXT(".Get" #AttributeName); \
AttributeType AttributeValue; \
if(InterchangePrivateNodeBase::GetCustomAttribute<AttributeType>(*SourceNode->Attributes, AttributeKey, OperationName, AttributeValue)) \
{ \
FName PropertyName = TEXT(""#AttributeName); \
} \
}
FString GetTypeName()
Definition Casts.h:66
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition NameTypes.h:617
Definition AttributeStorage.h:67

◆ COPY_NODE_DELEGATES_WITH_CUSTOM_DELEGATE

#define COPY_NODE_DELEGATES_WITH_CUSTOM_DELEGATE (   SourceNode,
  NodeClassName,
  AttributeName,
  AttributeType,
  AssetClass 
)
Value:
{ \
FString OperationName = GetTypeName() + TEXT(".Get" #AttributeName); \
AttributeType AttributeValue; \
if(InterchangePrivateNodeBase::GetCustomAttribute<AttributeType>(*SourceNode->Attributes, AttributeKey, OperationName, AttributeValue)) \
{ \
TArray<UE::Interchange::FApplyAttributeToAsset>& Delegates = ApplyCustomAttributeDelegates.FindOrAdd(AssetClass); \
Delegates.Add(UE::Interchange::FApplyAttributeToAsset::CreateUObject(this, &NodeClassName::ApplyCustom##AttributeName##ToAsset)); \
TArray<UE::Interchange::FFillAttributeToAsset>& FillDelegates = FillCustomAttributeDelegates.FindOrAdd(AssetClass); \
FillDelegates.Add(UE::Interchange::FFillAttributeToAsset::CreateUObject(this, &NodeClassName::FillCustom##AttributeName##FromAsset)); \
} \
}
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696

◆ IMPLEMENT_NODE_ATTRIBUTE_DELEGATE_BY_PROPERTYNAME

#define IMPLEMENT_NODE_ATTRIBUTE_DELEGATE_BY_PROPERTYNAME (   AttributeName,
  AttributeType,
  ObjectType,
  PropertyName 
)
Value:
bool ApplyCustom##AttributeName##ToAsset(UObject* Asset) const \
{ \
} \
\
bool FillCustom##AttributeName##FromAsset(UObject* Asset) \
{ \
}
Definition Object.h:95

◆ IMPLEMENT_NODE_ATTRIBUTE_SETTER

#define IMPLEMENT_NODE_ATTRIBUTE_SETTER (   NodeClassName,
  AttributeName,
  AttributeType,
  AssetType 
)
Value:
FString OperationName = GetTypeName() + TEXT(".Set" #AttributeName); \
if(InterchangePrivateNodeBase::SetCustomAttribute<AttributeType>(*Attributes, Macro_Custom##AttributeName##Key, OperationName, AttributeValue)) \
{ \
{ \
FName AttributeNameImpl = TEXT(""#AttributeName); \
AttributesAppliedThroughDelegates.AddItem(Macro_Custom##AttributeName##Key.Key); \
AddApplyAndFillDelegates<AttributeType>(Macro_Custom##AttributeName##Key.Key, AssetType::StaticClass(), AttributeNameImpl); \
} \
return true; \
} \
return false;

◆ IMPLEMENT_NODE_ATTRIBUTE_SETTER_WITH_CUSTOM_DELEGATE

#define IMPLEMENT_NODE_ATTRIBUTE_SETTER_WITH_CUSTOM_DELEGATE (   NodeClassName,
  AttributeName,
  AttributeType 
)
Value:
FString OperationName = GetTypeName() + TEXT(".Set" #AttributeName); \
if(InterchangePrivateNodeBase::SetCustomAttribute<AttributeType>(*Attributes, Macro_Custom##AttributeName##Key, OperationName, AttributeValue)) \
{ \
{ \
check(NodeClassName::StaticClass()->IsChildOf<UInterchangeFactoryBaseNode>()); \
AttributesAppliedThroughDelegates.AddItem(Macro_Custom##AttributeName##Key.Key); \
TArray<UE::Interchange::FApplyAttributeToAsset>& Delegates = ApplyCustomAttributeDelegates.FindOrAdd(GetObjectClass()); \
Delegates.Add(UE::Interchange::FApplyAttributeToAsset::CreateUObject(this, &NodeClassName::ApplyCustom##AttributeName##ToAsset)); \
TArray<UE::Interchange::FFillAttributeToAsset>& FillDelegates = FillCustomAttributeDelegates.FindOrAdd(GetObjectClass()); \
FillDelegates.Add(UE::Interchange::FFillAttributeToAsset::CreateUObject(this, &NodeClassName::FillCustom##AttributeName##FromAsset)); \
} \
return true; \
} \
return false;

◆ IMPLEMENT_NODE_ATTRIBUTE_SETTER_WITH_CUSTOM_DELEGATE_WITH_CUSTOM_CLASS

#define IMPLEMENT_NODE_ATTRIBUTE_SETTER_WITH_CUSTOM_DELEGATE_WITH_CUSTOM_CLASS (   NodeClassName,
  AttributeName,
  AttributeType,
  AssetType 
)
Value:
FString OperationName = GetTypeName() + TEXT(".Set" #AttributeName); \
if(InterchangePrivateNodeBase::SetCustomAttribute<AttributeType>(*Attributes, Macro_Custom##AttributeName##Key, OperationName, AttributeValue)) \
{ \
{ \
check(NodeClassName::StaticClass()->IsChildOf<UInterchangeFactoryBaseNode>()); \
AttributesAppliedThroughDelegates.AddItem(Macro_Custom##AttributeName##Key.Key); \
UClass* AssetClass = AssetType::StaticClass(); \
TArray<UE::Interchange::FApplyAttributeToAsset>& Delegates = ApplyCustomAttributeDelegates.FindOrAdd(AssetClass); \
Delegates.Add(UE::Interchange::FApplyAttributeToAsset::CreateUObject(this, &NodeClassName::ApplyCustom##AttributeName##ToAsset)); \
TArray<UE::Interchange::FFillAttributeToAsset>& FillDelegates = FillCustomAttributeDelegates.FindOrAdd(AssetClass); \
FillDelegates.Add(UE::Interchange::FFillAttributeToAsset::CreateUObject(this, &NodeClassName::FillCustom##AttributeName##FromAsset)); \
} \
return true; \
} \
return false;
Definition Class.h:3793

◆ REFILL_CUSTOM_ATTRIBUTE_APPLY_DELEGATE

#define REFILL_CUSTOM_ATTRIBUTE_APPLY_DELEGATE (   AttributeName,
  AttributeType 
)
Value:
if(AttributesAppliedThroughDelegatesKeySet.Contains(Macro_Custom##AttributeName##Key.Key)) \
{ \
AttributeType ValueData; \
if(GetCustom##AttributeName(ValueData)) \
{ \
constexpr const bool bAddApplyDelegate = true; \
SetCustom##AttributeName(ValueData, bAddApplyDelegate); \
} \
} \

◆ REFILL_CUSTOM_ATTRIBUTE_APPLY_DELEGATE_EXPLICIT

#define REFILL_CUSTOM_ATTRIBUTE_APPLY_DELEGATE_EXPLICIT (   AttributeKey,
  Getter,
  Setter,
  AttributeType 
)
Value:
if(AttributesAppliedThroughDelegatesKeySet.Contains(AttributeKey)) \
{ \
AttributeType ValueData; \
if(Getter(ValueData)) \
{ \
constexpr const bool bAddApplyDelegate = true; \
Setter(ValueData, bAddApplyDelegate); \
} \
}

Enumeration Type Documentation

◆ EReimportStrategyFlags

Enumerator
ApplyNoProperties 
ApplyPipelineProperties 
UMETA