Skip to content

LD::PropertyUtils

Classes

Name
struct LD::PropertyUtils::FPropertyRetrieval
struct LD::PropertyUtils::FPropertyRetrievalArgs

Functions

Name
SMSYSTEMEDITOR_API TSharedPtr< ISinglePropertyView > CreatePropertyViewForProperty(UObject * InObjectOwner, const FName & InPropertyName)
SMSYSTEMEDITOR_API void SetPropertyValue(FProperty * InProperty, const FString & InValue, UObject * InObject, int32 InArrayIndex =0)
SMSYSTEMEDITOR_API FString GetPropertyValue(FProperty * InProperty, UObject * InObject, int32 InArrayIndex =0)
SMSYSTEMEDITOR_API FProperty * GetExtendedGraphPropertyResult(FProperty * InProperty, uint8 * InContainer)
SMSYSTEMEDITOR_API bool IsObjectPropertyInstanced(const FObjectProperty * ObjectProperty)
SMSYSTEMEDITOR_API void GetAllObjectProperties(const void * InObject, const UStruct * InPropertySource, TArray< FPropertyRetrieval > & OutProperties, const FPropertyRetrievalArgs & InArgs =FPropertyRetrievalArgs())
SMSYSTEMEDITOR_API void ForEachInstancedSubObject(const UObject * InObject, const TFunction< void(UObject *)> & Function)
SMSYSTEMEDITOR_API const FGuid & SetGraphPropertyFromProperty(FSMGraphProperty_Base & GraphProperty, FProperty * Property, const USMNodeInstance * NodeInstance, int32 Index =0, bool bSetGuid =true, bool bUseTemplateInGuid =true, bool bUseTempNativeGuid =false)
SMSYSTEMEDITOR_API bool IsPropertyExposedToGraphNode(const FProperty * Property)
SMSYSTEMEDITOR_API bool IsPropertyHandleExposedContainer(const TSharedPtr< IPropertyHandle > & InHandle)
SMSYSTEMEDITOR_API FStructProperty * GetGraphPropertyFromProperty(FProperty * Property)
SMSYSTEMEDITOR_API bool IsPropertyGraphProperty(const FProperty * Property)
bool ShouldGraphPropertyDisplayThumbnail(const USMGraphK2Node_PropertyNode_Base * InGraphPropertyNode)

Functions Documentation

function CreatePropertyViewForProperty

SMSYSTEMEDITOR_API TSharedPtr< ISinglePropertyView > CreatePropertyViewForProperty(
    UObject * InObjectOwner,
    const FName & InPropertyName
)

Create a temporary property handle for a given property. Call GetPropertyHandle() from here. The property handle will be valid as long as the property view is valid.

Parameters:

InObjectOwner
UObject owning the property.
InPropertyName
The field name of the property.

Return: A property handle created for this property.


function SetPropertyValue

SMSYSTEMEDITOR_API void SetPropertyValue(
    FProperty * InProperty,
    const FString & InValue,
    UObject * InObject,
    int32 InArrayIndex =0
)

Correctly set a property value by importing a text value. Handles individual properties, arrays, and extended graph properties. This does not use property handles and instance propagation will not occur.

Parameters:

InProperty
The property to import data.
InValue
The text value to import.
InObject
The object instance containing this property.
InArrayIndex
An index for the property.

function GetPropertyValue

SMSYSTEMEDITOR_API FString GetPropertyValue(
    FProperty * InProperty,
    UObject * InObject,
    int32 InArrayIndex =0
)

Return the string value of a property. Handles individual properties, arrays, and extended graph properties.

Parameters:

InProperty
The property to import data.
InObject
The object instance containing this property.
InArrayIndex
An index for the property.

function GetExtendedGraphPropertyResult

SMSYSTEMEDITOR_API FProperty * GetExtendedGraphPropertyResult(
    FProperty * InProperty,
    uint8 * InContainer
)

Retrieve the 'Result' FProperty from a single property with no array handling. Null if not a custom graph property.

Parameters:

InProperty
The extended graph property.
InContainer
The instance container of the property.

Return: The FProperty result, or nullptr if not a custom graph property.


function IsObjectPropertyInstanced

SMSYSTEMEDITOR_API bool IsObjectPropertyInstanced(
    const FObjectProperty * ObjectProperty
)

Checks if an object property is instanced or exported.


function GetAllObjectProperties

SMSYSTEMEDITOR_API void GetAllObjectProperties(
    const void * InObject,
    const UStruct * InPropertySource,
    TArray< FPropertyRetrieval > & OutProperties,
    const FPropertyRetrievalArgs & InArgs =FPropertyRetrievalArgs()
)

Recursively retrieve all nested object properties. Checks all root properties and properties of nested structs or exported objects. Does not handle maps or sets.

Parameters:

InObject
The object address to check. Generally can just provide a UObject instance.
InPropertySource
The source containing the properties. Usually your InObject->GetClass()
OutProperties
All found object properties.
InArgs
Additional configuration arguments.

function ForEachInstancedSubObject

SMSYSTEMEDITOR_API void ForEachInstancedSubObject(
    const UObject * InObject,
    const TFunction< void(UObject *)> & Function
)

Iterate over each valid instanced sub-object in an object. Sub-objects are matched to the owning object's ObjectProperty values where the owning property is marked Instanced but not transient.

This is useful for cooking builds as sub-objects may have the transient flag added during cook when they normally wouldn't be a transient object.

This won't account for properties belonging to a map or set.

Parameters:

InObject
The object owning the sub-objects. The sub-objects may be nested.
Function
A function to execute for each sub-object.

function SetGraphPropertyFromProperty

SMSYSTEMEDITOR_API const FGuid & SetGraphPropertyFromProperty(
    FSMGraphProperty_Base & GraphProperty,
    FProperty * Property,
    const USMNodeInstance * NodeInstance,
    int32 Index =0,
    bool bSetGuid =true,
    bool bUseTemplateInGuid =true,
    bool bUseTempNativeGuid =false
)

Sets all related internal properties. Returns the guid used.


function IsPropertyExposedToGraphNode

SMSYSTEMEDITOR_API bool IsPropertyExposedToGraphNode(
    const FProperty * Property
)

Checks appropriate flags on a property to see if it should be exposed to a graph node.


function IsPropertyHandleExposedContainer

SMSYSTEMEDITOR_API bool IsPropertyHandleExposedContainer(
    const TSharedPtr< IPropertyHandle > & InHandle
)

Checks if the property handle is a supported container and exposed.


function GetGraphPropertyFromProperty

SMSYSTEMEDITOR_API FStructProperty * GetGraphPropertyFromProperty(
    FProperty * Property
)

Returns the struct property if this property is a graph property.


function IsPropertyGraphProperty

SMSYSTEMEDITOR_API bool IsPropertyGraphProperty(
    const FProperty * Property
)

Checks if the property is considered a graph property.


function ShouldGraphPropertyDisplayThumbnail

bool ShouldGraphPropertyDisplayThumbnail(
    const USMGraphK2Node_PropertyNode_Base * InGraphPropertyNode
)

If a graph property should show its thumbnail.