UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PropertyAccessUtil Namespace Reference

Functions

const UEnumGetPropertyEnumType (const FProperty *InProp)
 
int64 GetPropertyEnumValue (const FProperty *InProp, const void *InPropValue)
 
bool SetPropertyEnumValue (const FProperty *InProp, void *InPropValue, const int64 InEnumValue)
 
bool ArePropertiesCompatible (const FProperty *InSrcProp, const FProperty *InDestProp)
 
bool IsSinglePropertyIdentical (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, const void *InDestValue)
 
bool IsCompletePropertyIdentical (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, const void *InDestValue)
 
bool CopySinglePropertyValue (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, void *InDestValue)
 
bool CopyCompletePropertyValue (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, void *InDestValue)
 
EPropertyAccessResultFlags GetPropertyValue_Object (const FProperty *InObjectProp, const UObject *InObject, const FProperty *InDestProp, void *InDestValue, const int32 InArrayIndex)
 
EPropertyAccessResultFlags GetPropertyValue_InContainer (const FProperty *InContainerProp, const void *InContainerData, const FProperty *InDestProp, void *InDestValue, const int32 InArrayIndex)
 
EPropertyAccessResultFlags GetPropertyValue_DirectSingle (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, void *InDestValue)
 
EPropertyAccessResultFlags GetPropertyValue_DirectComplete (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, void *InDestValue)
 
EPropertyAccessResultFlags GetPropertyValue (const FPropertyAccessGetFunc &InGetFunc)
 
EPropertyAccessResultFlags CanGetPropertyValue (const FProperty *InProp)
 
bool GetArchetypeInstancesInheritingPropertyValue (const FProperty *InObjectProp, UObject *InObject, TArray< UObject * > &OutArchetypeInstances)
 
bool GetArchetypeInstancesInheritingPropertyValue_AsContainerData (const FProperty *InObjectProp, UObject *InObject, TArray< void * > &OutArchetypeInstContainers)
 
EPropertyAccessResultFlags SetPropertyValue_Object (const FProperty *InObjectProp, UObject *InObject, const FProperty *InSrcProp, const void *InSrcValue, const int32 InArrayIndex, const uint64 InReadOnlyFlags, const EPropertyAccessChangeNotifyMode InNotifyMode)
 
EPropertyAccessResultFlags SetPropertyValue_InContainer (const FProperty *InContainerProp, void *InContainerData, const TArray< void * > &InArchetypeInstContainerData, const FProperty *InSrcProp, const void *InSrcValue, const int32 InArrayIndex, const uint64 InReadOnlyFlags, const bool InOwnerIsTemplate, const FPropertyAccessBuildChangeNotifyFunc &InBuildChangeNotifyFunc)
 
EPropertyAccessResultFlags SetPropertyValue_DirectSingle (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, void *InDestValue, const TArray< void * > &InArchetypeInstDestValues, const uint64 InReadOnlyFlags, const bool InOwnerIsTemplate, const FPropertyAccessBuildChangeNotifyFunc &InBuildChangeNotifyFunc)
 
EPropertyAccessResultFlags SetPropertyValue_DirectComplete (const FProperty *InSrcProp, const void *InSrcValue, const FProperty *InDestProp, void *InDestValue, const TArray< void * > &InArchetypeInstDestValues, const uint64 InReadOnlyFlags, const bool InOwnerIsTemplate, const FPropertyAccessBuildChangeNotifyFunc &InBuildChangeNotifyFunc)
 
EPropertyAccessResultFlags SetPropertyValue (const FPropertyAccessSetFunc &InSetFunc, const FPropertyAccessBuildChangeNotifyFunc &InBuildChangeNotifyFunc)
 
EPropertyAccessResultFlags CanSetPropertyValue (const FProperty *InProp, const uint64 InReadOnlyFlags, const bool InOwnerIsTemplate)
 
void EmitPreChangeNotify (const FPropertyAccessChangeNotify *InChangeNotify, const bool InIdenticalValue)
 
void EmitPostChangeNotify (const FPropertyAccessChangeNotify *InChangeNotify, const bool InIdenticalValue)
 
TUniquePtr< FPropertyAccessChangeNotifyBuildBasicChangeNotify (const FProperty *InProp, const UObject *InObject, const EPropertyAccessChangeNotifyMode InNotifyMode, const EPropertyChangeType::Type ChangeType)
 
bool IsObjectTemplate (const UObject *InObject)
 
FPropertyFindPropertyByName (const FName InPropName, const UStruct *InStruct)
 
bool ImportDefaultPropertyValue (const FProperty *InProp, void *InPropValue, const FString &InDefaultValue, FOutputDevice *ErrorText)
 

Function Documentation

◆ ArePropertiesCompatible()

COREUOBJECT_API bool PropertyAccessUtil::ArePropertiesCompatible ( const FProperty InSrcProp,
const FProperty InDestProp 
)

Low-level function to determine if two properties are compatible with each other (for use by CopySinglePropertyValue/CopyCompletePropertyValue).

Parameters
InSrcPropSource property being compared.
InDestPropDestination property being compared.
Returns
True if the properties are compatible with each other, false otherwise.

◆ BuildBasicChangeNotify()

COREUOBJECT_API TUniquePtr< FPropertyAccessChangeNotify > PropertyAccessUtil::BuildBasicChangeNotify ( const FProperty InProp,
const UObject InObject,
const EPropertyAccessChangeNotifyMode  InNotifyMode,
const EPropertyChangeType::Type  ChangeType 
)

Low-level function to build the basic information needed to emit property change notifications.

Note
This function can only build the notification for a property directly on the object instance, as more complex cases require external management as the reflection data doesn't let you backtrack over different types.
Parameters
InPropProperty being modified.
InObjectObject being modified.
InNotifyModeWhen to emit property change notifications.
Returns
The information needed to emit property change notifications.

◆ CanGetPropertyValue()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::CanGetPropertyValue ( const FProperty InProp)

Low-level function for checking whether it's valid to get the value of a property.

Parameters
InPropProperty to query.
Returns
Flags describing whether it's valid to get the value of the property.

◆ CanSetPropertyValue()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::CanSetPropertyValue ( const FProperty InProp,
const uint64  InReadOnlyFlags,
const bool  InOwnerIsTemplate 
)

Low-level function for checking whether it's valid to set the value of a property.

Parameters
InPropProperty to query.
Returns
Flags describing whether it's valid to set the value of the property.

◆ CopyCompletePropertyValue()

COREUOBJECT_API bool PropertyAccessUtil::CopyCompletePropertyValue ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
void InDestValue 
)

Low-level function to copy the value from one property to another (complete property value, for each ArrayDim).

Note
This function calls ArePropertiesCompatible internally.
Parameters
InSrcPropSource property being copied from.
InSrcValueSource value being copied from.
InDestPropDestination property being copied to.
InDestValueDestination value being copied to.
Returns
True if the properties value was copied, false otherwise.

◆ CopySinglePropertyValue()

COREUOBJECT_API bool PropertyAccessUtil::CopySinglePropertyValue ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
void InDestValue 
)

Low-level function to copy the value from one property to another (single property value, ignoring ArrayDim).

Note
This function calls ArePropertiesCompatible internally.
Parameters
InSrcPropSource property being copied from.
InSrcValueSource value being copied from.
InDestPropDestination property being copied to.
InDestValueDestination value being copied to.
Returns
True if the properties value was copied, false otherwise.

◆ EmitPostChangeNotify()

COREUOBJECT_API void PropertyAccessUtil::EmitPostChangeNotify ( const FPropertyAccessChangeNotify InChangeNotify,
const bool  InIdenticalValue 
)

Low-level function called after modifying an object to notify that its value has changed.

Parameters
InChangeNotifyInformation needed to emit property change notifications, or nullptr if no notifications are needed or possible.
InIdenticalValueTrue if the value being set was identical to the current value, false otherwise.

◆ EmitPreChangeNotify()

COREUOBJECT_API void PropertyAccessUtil::EmitPreChangeNotify ( const FPropertyAccessChangeNotify InChangeNotify,
const bool  InIdenticalValue 
)

Low-level function called before modifying an object to notify that its value is about to change.

Parameters
InChangeNotifyInformation needed to emit property change notifications, or nullptr if no notifications are needed or possible.
InIdenticalValueTrue if the value being set was identical to the current value, false otherwise.

◆ FindPropertyByName()

COREUOBJECT_API FProperty * PropertyAccessUtil::FindPropertyByName ( const FName  InPropName,
const UStruct InStruct 
)

Low-level function to find a property by its name, following redirectors if it cannot be found.

Parameters
InPropNameThe name of the property to find.
InStructThe struct that should contain the property.
Returns
The found property, or null if the property cannot be found.

◆ GetArchetypeInstancesInheritingPropertyValue()

COREUOBJECT_API bool PropertyAccessUtil::GetArchetypeInstancesInheritingPropertyValue ( const FProperty InObjectProp,
UObject InObject,
TArray< UObject * > &  OutArchetypeInstances 
)

Finds all instances of an archetype object which are inheriting the given property's value from the archetype, then returns those instance UObjects.

Parameters
InObjectPropProperty to compare the value of.
InObjectArchetype object containing the property.
OutArchetypeInstancesArray to store results in.
Returns
True if archetype instances were searched and regardless of whether any instances were returned.

◆ GetArchetypeInstancesInheritingPropertyValue_AsContainerData()

COREUOBJECT_API bool PropertyAccessUtil::GetArchetypeInstancesInheritingPropertyValue_AsContainerData ( const FProperty InObjectProp,
UObject InObject,
TArray< void * > &  OutArchetypeInstContainers 
)

Finds all instances of an archetype object which are inheriting the given property's value from the archetype, then returns the containers for the given property which is either the UObject's address or the sparse data struct.

Parameters
InObjectPropProperty to compare the value of.
InObjectArchetype object containing the property.
OutArchetypeInstContainersArray to store results in. These are pointers to the container containing the given property value. If the property is sparse class data, these will point to the sparse data struct.
Returns
True if archetype instances were searched and regardless of whether any instances were returned.

◆ GetPropertyEnumType()

const UEnum * PropertyAccessUtil::GetPropertyEnumType ( const FProperty InProp)

◆ GetPropertyEnumValue()

int64 PropertyAccessUtil::GetPropertyEnumValue ( const FProperty InProp,
const void InPropValue 
)

◆ GetPropertyValue()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::GetPropertyValue ( const FPropertyAccessGetFunc InGetFunc)

Low-level function for getting the value of a property.

Note
This function does not CanGetPropertyValue internally, you must call it yourself to validate the get.
Parameters
InGetFuncLogic for getting the value of the property.
Returns
Flags describing whether the get was successful.

◆ GetPropertyValue_DirectComplete()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::GetPropertyValue_DirectComplete ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
void InDestValue 
)

High-level function for getting the multi-element value of a property from memory.

Note
This function calls CanGetPropertyValue internally.
Parameters
InSrcPropProperty to get the value of.
InSrcValueThe property value to copy.
InDestPropProperty of the value to set (must be compatible with the source property).
InDestValueInstance to fill with the property value (must be a valid and constructed block of memory that is compatible with the property).
Returns
Flags describing whether the get was successful.

◆ GetPropertyValue_DirectSingle()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::GetPropertyValue_DirectSingle ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
void InDestValue 
)

High-level function for getting the single-element value of a property from memory.

Note
This function calls CanGetPropertyValue internally.
Parameters
InSrcPropProperty to get the value of.
InSrcValueThe property value to copy.
InDestPropProperty of the value to set (must be compatible with the source property).
InDestValueInstance to fill with the property value (must be a valid and constructed block of memory that is compatible with the property).
Returns
Flags describing whether the get was successful.

◆ GetPropertyValue_InContainer()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::GetPropertyValue_InContainer ( const FProperty InContainerProp,
const void InContainerData,
const FProperty InDestProp,
void InDestValue,
const int32  InArrayIndex 
)

High-level function for getting the value of a property from a property container (object or struct).

Note
This function calls CanGetPropertyValue internally.
Parameters
InContainerPropProperty to get the value of.
InContainerDataThe instance data containing the property.
InDestPropProperty of the value to set (must be compatible with the source property).
InDestValueInstance to fill with the property value (must be a valid and constructed block of memory that is compatible with the property).
InArrayIndexFor fixed-size array properties denotes which index of the array to get, or INDEX_NONE to get the entire property.
Returns
Flags describing whether the get was successful.

◆ GetPropertyValue_Object()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::GetPropertyValue_Object ( const FProperty InObjectProp,
const UObject InObject,
const FProperty InDestProp,
void InDestValue,
const int32  InArrayIndex 
)

High-level function for getting the value of a property from an object.

Note
This function calls CanGetPropertyValue internally.
Parameters
InObjectPropProperty to get the value of.
InObjectObject containing the property.
InDestPropProperty of the value to set (must be compatible with the source property).
InDestValueInstance to fill with the property value (must be a valid and constructed block of memory that is compatible with the property).
InArrayIndexFor fixed-size array properties denotes which index of the array to get, or INDEX_NONE to get the entire property.
Returns
Flags describing whether the get was successful.

◆ ImportDefaultPropertyValue()

COREUOBJECT_API bool PropertyAccessUtil::ImportDefaultPropertyValue ( const FProperty InProp,
void InPropValue,
const FString &  InDefaultValue,
FOutputDevice ErrorText = (FOutputDevice *) GWarn 
)

Low-level function to import a default value to the given property.

Note
This is useful for applying defaults to function properties (eg, parameter data from UEdGraphSchema_K2::FindFunctionParameterDefaultValue, or local data from FBlueprintEditorUtils::FindLocalVariable), as these may have come from UHT which can sometimes have a slightly different form than ImportText can handle natively.
Parameters
InPropThe property to import the default value for.
InPropValueThe destination location to receive the imported value.
InDefaultValueThe default value to import.
Returns
True if the default value could be imported, false otherwise.

◆ IsCompletePropertyIdentical()

COREUOBJECT_API bool PropertyAccessUtil::IsCompletePropertyIdentical ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
const void InDestValue 
)

Low-level function to determine if two properties have identical values (complete property value, for each ArrayDim).

Note
This function calls ArePropertiesCompatible internally.
Parameters
InSrcPropSource property being compared.
InSrcValueSource value being compared.
InDestPropDestination property being compared.
InDestValueDestination value being compared.
Returns
True if the properties have identical values, false otherwise.

◆ IsObjectTemplate()

COREUOBJECT_API bool PropertyAccessUtil::IsObjectTemplate ( const UObject InObject)

Low-level function for checking whether the given object instance is considered a template for property access.

Parameters
InObjectObject to query.
Returns
True if the object instance is considered a template.

◆ IsSinglePropertyIdentical()

COREUOBJECT_API bool PropertyAccessUtil::IsSinglePropertyIdentical ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
const void InDestValue 
)

Low-level function to determine if two properties have identical values (single property value, ignoring ArrayDim).

Note
This function calls ArePropertiesCompatible internally.
Parameters
InSrcPropSource property being compared.
InSrcValueSource value being compared.
InDestPropDestination property being compared.
InDestValueDestination value being compared.
Returns
True if the properties have identical values, false otherwise.

◆ SetPropertyEnumValue()

bool PropertyAccessUtil::SetPropertyEnumValue ( const FProperty InProp,
void InPropValue,
const int64  InEnumValue 
)

◆ SetPropertyValue()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::SetPropertyValue ( const FPropertyAccessSetFunc InSetFunc,
const FPropertyAccessBuildChangeNotifyFunc InBuildChangeNotifyFunc 
)

Low-level function for setting the value of a property.

Note
This function does not CanSetPropertyValue internally, you must call it yourself to validate the set.
Parameters
InSetFuncLogic for setting the value of the property (should call EmitPreChangeNotify and EmitPostChangeNotify using the given FPropertyAccessChangeNotify instance).
InBuildChangeNotifyFuncLogic for building the information needed to emit property change notifications when setting a property value (can return nullptr if no notifications are needed or possible).
Returns
Flags describing whether the get was successful.

◆ SetPropertyValue_DirectComplete()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::SetPropertyValue_DirectComplete ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
void InDestValue,
const TArray< void * > &  InArchetypeInstDestValues,
const uint64  InReadOnlyFlags,
const bool  InOwnerIsTemplate,
const FPropertyAccessBuildChangeNotifyFunc InBuildChangeNotifyFunc 
)

High-level function for setting the multi-element value of a property in memory.

Note
This function calls CanSetPropertyValue internally.
Parameters
InSrcPropProperty to set the value of.
InSrcValueThe value to set on the property.
InDestPropProperty to get the value from (must be compatible with the source property).
InDestValueInstance to fill with the property value (must be a valid and constructed block of memory that is compatible with the property).
InArchetypeInstDestValuesWhen the object is an archetype: direct value addresses of instances of the archetype to evaluate. Those with currently the same value as archetype will also have their property updates.
InReadOnlyFlagsFlags controlling which properties are considered read-only.
InOwnerIsTemplateTrue if the owner object is considered a template (see IsObjectTemplate).
InBuildChangeNotifyFuncLogic for building the information needed to emit property change notifications when setting a property value (can return nullptr if no notifications are needed or possible).
Returns
Flags describing whether the set was successful.

◆ SetPropertyValue_DirectSingle()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::SetPropertyValue_DirectSingle ( const FProperty InSrcProp,
const void InSrcValue,
const FProperty InDestProp,
void InDestValue,
const TArray< void * > &  InArchetypeInstDestValues,
const uint64  InReadOnlyFlags,
const bool  InOwnerIsTemplate,
const FPropertyAccessBuildChangeNotifyFunc InBuildChangeNotifyFunc 
)

High-level function for setting the single-element value of a property in memory.

Note
This function calls CanSetPropertyValue internally.
Parameters
InSrcPropProperty to set the value of.
InSrcValueThe value to set on the property.
InDestPropProperty to get the value from (must be compatible with the source property).
InDestValueInstance to fill with the property value (must be a valid and constructed block of memory that is compatible with the property).
InArchetypeInstDestValuesWhen the object is an archetype: direct value addresses of instances of the archetype to evaluate. Those with currently the same value as archetype will also have their property updates.
InReadOnlyFlagsFlags controlling which properties are considered read-only.
InOwnerIsTemplateTrue if the owner object is considered a template (see IsObjectTemplate).
InBuildChangeNotifyFuncLogic for building the information needed to emit property change notifications when setting a property value (can return nullptr if no notifications are needed or possible).
Returns
Flags describing whether the set was successful.

◆ SetPropertyValue_InContainer()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::SetPropertyValue_InContainer ( const FProperty InContainerProp,
void InContainerData,
const TArray< void * > &  InArchetypeInstContainerData,
const FProperty InSrcProp,
const void InSrcValue,
const int32  InArrayIndex,
const uint64  InReadOnlyFlags,
const bool  InOwnerIsTemplate,
const FPropertyAccessBuildChangeNotifyFunc InBuildChangeNotifyFunc 
)

High-level function for setting the value of a property on a property container (object or struct).

Note
This function calls CanSetPropertyValue internally.
Parameters
InContainerPropProperty to set the value of.
InContainerDataThe instance data containing the property.
InArchetypeInstContainerDataWhen the object is an archetype: container addresses of instances of the archetype to evaluate. Those with currently the same value as archetype will also have their property updates.
InSrcPropProperty of the value to set (must be compatible with the dest property).
InSrcValueThe value to set on the property.
InArrayIndexFor fixed-size array properties denotes which index of the array to set, or INDEX_NONE to set the entire property.
InReadOnlyFlagsFlags controlling which properties are considered read-only.
InOwnerIsTemplateTrue if the owner object is considered a template (see IsObjectTemplate).
InBuildChangeNotifyFuncLogic for building the information needed to emit property change notifications when setting a property value (can return nullptr if no notifications are needed or possible).
Returns
Flags describing whether the set was successful.

◆ SetPropertyValue_Object()

COREUOBJECT_API EPropertyAccessResultFlags PropertyAccessUtil::SetPropertyValue_Object ( const FProperty InObjectProp,
UObject InObject,
const FProperty InSrcProp,
const void InSrcValue,
const int32  InArrayIndex,
const uint64  InReadOnlyFlags,
const EPropertyAccessChangeNotifyMode  InNotifyMode 
)

High-level function for setting the value of a property on an object. If the object is an archetype, value will be propagated to instances that haven't modified the value.

Note
This function calls CanSetPropertyValue internally, and will emit property change notifications for the object.
Parameters
InObjectPropProperty to set the value of.
InObjectObject containing the property.
InSrcPropProperty of the value to set (must be compatible with the dest property).
InSrcValueThe value to set on the property.
InArrayIndexFor fixed-size array properties denotes which index of the array to set, or INDEX_NONE to set the entire property.
InReadOnlyFlagsFlags controlling which properties are considered read-only.
InNotifyModeWhen to emit property change notifications.
Returns
Flags describing whether the set was successful.