UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FOverridableManager Class Reference

#include <OverridableManager.h>

Public Member Functions

COREUOBJECT_API bool IsEnabled (TNotNull< const UObject * > Object)
 
COREUOBJECT_API void Enable (TNotNull< UObject * > Object)
 
COREUOBJECT_API void Disable (TNotNull< UObject * > Object, bool bPropagateToSubObjects=false)
 
COREUOBJECT_API void DisableInstancedSubObject (TNotNull< const UObject * > Object, TNotNull< UObject * > InstancedSubObject)
 
COREUOBJECT_API void InheritEnabledFrom (TNotNull< UObject * > Object, const UObject *DefaultData)
 
COREUOBJECT_API bool NeedSubObjectTemplateInstantiation (TNotNull< const UObject * > Object)
 
template<typename InputType >
auto GetOverriddenProperties (InputType &&Object)
 
COREUOBJECT_API FOverriddenPropertySetRestoreOverrideOperation (TNotNull< UObject * > Object, EOverriddenPropertyOperation Operation, const bool bNeedsSubobjectTemplateInstantiation, const bool bDontClearOverrides=false)
 
COREUOBJECT_API void RestoreOverrideState (TNotNull< const UObject * > OldObject, TNotNull< UObject * > NewObject)
 
COREUOBJECT_API EOverriddenState GetOverriddenState (TNotNull< UObject * > Object, TFunction< bool(TNotNull< const FProperty * >)> ConsiderPropertyForOverriddenState=TFunction< bool(TNotNull< const FProperty * >)>(), const FPropertyVisitorPath &Path=FPropertyVisitorPath(), bool *bOutInheritedState=nullptr)
 
COREUOBJECT_API void OverrideAllObjectProperties (TNotNull< UObject * > Object)
 
COREUOBJECT_API void ClearOverrides (TNotNull< UObject * > Object)
 
COREUOBJECT_API void ClearInstancedSubObjectOverrides (TNotNull< const UObject * > Object, TNotNull< UObject * > InstancedSubObject)
 
COREUOBJECT_API void PropagateClearOverridesToInstancedSubObjects (TNotNull< UObject * > Object)
 
COREUOBJECT_API void OverrideProperty (TNotNull< UObject * > Object, const FPropertyVisitorPath &PropertyPath)
 
bool ClearOverriddenProperty (TNotNull< UObject * > Object, const FPropertyVisitorPath &PropertyPath)
 
COREUOBJECT_API void PreOverrideProperty (TNotNull< UObject * > Object, const FPropertyVisitorPath &PropertyPath, const EPropertyChangeType::Type ChangeType=EPropertyChangeType::Unspecified)
 
COREUOBJECT_API void PostOverrideProperty (TNotNull< UObject * > Object, const FPropertyVisitorPath &PropertyPath, const EPropertyChangeType::Type ChangeType)
 
EOverriddenPropertyOperation GetOverriddenPropertyOperation (TNotNull< UObject * > Object, const FPropertyVisitorPath &PropertyPath, bool *bOutInheritedOperation=nullptr)
 
COREUOBJECT_API void SerializeOverriddenProperties (TNotNull< UObject * > Object, FStructuredArchive::FRecord ObjectRecord)
 
void OverrideProperty (TNotNull< UObject * > Object, const FPropertyChangedChainEvent &PropertyEvent)
 
bool ClearOverriddenProperty (TNotNull< UObject * > Object, const FPropertyChangedEvent &PropertyEvent, const FEditPropertyChain &PropertyChain)
 
void PreOverridePropertyChain (UObject *Object, const FEditPropertyChain &PropertyChain)
 
void PreOverrideProperty (UObject *Object, const FPropertyChangedChainEvent &PropertyChainEvent)
 
void PostOverrideProperty (UObject *Object, const FPropertyChangedChainEvent &PropertyChainEvent)
 
UE_FORCEINLINE_HINT EOverriddenPropertyOperation GetOverriddenPropertyOperation (TNotNull< UObject * > Object, const FPropertyChangedEvent &PropertyEvent, const FEditPropertyChain &PropertyChain, bool *bOutInheritedOperation=nullptr)
 
void HandleObjectsReInstantiated (const TMap< UObject *, UObject * > &OldToNewInstanceMap)
 
void HandleDeadObjectReferences (const TSet< UClass * > &DeadClasses, const TSet< UObject * > &ActiveInstances, const TSet< UObject * > &TemplateInstances)
 

Static Public Member Functions

static FOverridableManagerGet ()
 
static FOverridableManagerTryGet ()
 
static COREUOBJECT_API void Create ()
 

Protected Member Functions

 FOverridableManager ()
 
COREUOBJECT_API void NotifyPropertyChange (const EPropertyNotificationType Notification, TNotNull< UObject * > Object, FPropertyVisitorPath::Iterator PropertyIterator, const EPropertyChangeType::Type ChangeType)
 
COREUOBJECT_API EOverriddenPropertyOperation GetOverriddenPropertyOperation (TNotNull< UObject * > Object, FPropertyVisitorPath::Iterator PropertyIterator, bool *bOutInheritedOperation=nullptr)
 
COREUOBJECT_API bool ClearOverriddenProperty (TNotNull< UObject * > Object, FPropertyVisitorPath::Iterator PropertyIterator)
 
COREUOBJECT_API FOverriddenPropertySetGetOverriddenPropertiesInternal (TNotNull< UObject * > Object)
 
COREUOBJECT_API const FOverriddenPropertySetGetOverriddenPropertiesInternal (TNotNull< const UObject * > Object)
 

Protected Attributes

FUObjectAnnotationSparseBool NeedsSubobjectTemplateInstantiation
 
friend FOverriddenPropertySet
 

Static Protected Attributes

static COREUOBJECT_API FOverridableManagerOverridableManager = nullptr
 

Constructor & Destructor Documentation

◆ FOverridableManager()

FOverridableManager::FOverridableManager ( )
protected

Member Function Documentation

◆ ClearInstancedSubObjectOverrides()

void FOverridableManager::ClearInstancedSubObjectOverrides ( TNotNull< const UObject * >  Object,
TNotNull< UObject * >  InstancedSubObject 
)

Clear all overrides of the specified instanced subobject if it is really owned by the referencer

Parameters
Objectreferencing the subobject
InstancedSubObjectto clear overrides on

◆ ClearOverriddenProperty() [1/3]

bool FOverridableManager::ClearOverriddenProperty ( TNotNull< UObject * >  Object,
const FPropertyChangedEvent PropertyEvent,
const FEditPropertyChain PropertyChain 
)
inline

Clears an overridden properties specified by the property chain

Parameters
Objectowning the property to clear
PropertyEventonly needed to know about the container item index in any
PropertyChainto the property to clear from the root of the specified object
Returns
true if the property was successfully cleared.

◆ ClearOverriddenProperty() [2/3]

bool FOverridableManager::ClearOverriddenProperty ( TNotNull< UObject * >  Object,
const FPropertyVisitorPath PropertyPath 
)
inline

Clears an overridden properties specified by the property chain

Parameters
Objectowning the property to clear
PropertyPathto the property to clear from the root of the specified object
Returns
true if the property was successfully cleared.

◆ ClearOverriddenProperty() [3/3]

bool FOverridableManager::ClearOverriddenProperty ( TNotNull< UObject * >  Object,
FPropertyVisitorPath::Iterator  PropertyIterator 
)
protected

◆ ClearOverrides()

void FOverridableManager::ClearOverrides ( TNotNull< UObject * >  Object)

Clears all the overrides on the specified object

Parameters
Objectto clear them on

◆ Create()

void FOverridableManager::Create ( )
static
Returns
the static instance managing the overridability

◆ Disable()

void FOverridableManager::Disable ( TNotNull< UObject * >  Object,
bool  bPropagateToSubObjects = false 
)

Sets on the specified object to not use overridable serialization

Parameters
Objectto disable
bPropagateToSubObjectstrue if wants to propagate the disable to all subobjects

◆ DisableInstancedSubObject()

void FOverridableManager::DisableInstancedSubObject ( TNotNull< const UObject * >  Object,
TNotNull< UObject * >  InstancedSubObject 
)

Sets on the specified object to not use overridable serialization Sets the specified instanced subobject to not use overridable serialization if it is really owned by the referencer

Parameters
Objectreferencing this subobject
InstancedSubObjectthe sub object to override all its properties

◆ Enable()

void FOverridableManager::Enable ( TNotNull< UObject * >  Object)

Sets on the specified object to use overridable serialization

Parameters
Objectto enable

◆ Get()

static FOverridableManager & FOverridableManager::Get ( )
inlinestatic
Returns
the instance managing the overridability

◆ GetOverriddenProperties()

template<typename InputType >
auto FOverridableManager::GetOverriddenProperties ( InputType &&  Object)
inline

Retrieve the overridden properties for the specified object

Parameters
Objectto fetch the overridden properties
Returns
the overridden properties if the object have overridable serialization enabled

◆ GetOverriddenPropertiesInternal() [1/2]

const FOverriddenPropertySet * FOverridableManager::GetOverriddenPropertiesInternal ( TNotNull< const UObject * >  Object)
protected

◆ GetOverriddenPropertiesInternal() [2/2]

FOverriddenPropertySet * FOverridableManager::GetOverriddenPropertiesInternal ( TNotNull< UObject * >  Object)
protected

◆ GetOverriddenPropertyOperation() [1/3]

UE_FORCEINLINE_HINT EOverriddenPropertyOperation FOverridableManager::GetOverriddenPropertyOperation ( TNotNull< UObject * >  Object,
const FPropertyChangedEvent PropertyEvent,
const FEditPropertyChain PropertyChain,
bool bOutInheritedOperation = nullptr 
)
inline

Retrieve the overridable operation from the specified the edit property chain

Parameters
Objectowning the property
PropertyEventonly needed to know about the container item index in any
PropertyChainleading to the property the caller is interested in
bOutInheritedOperationoptional parameter to know if the operation returned was inherited from a parent property
Returns
the current type of override operation on the property

◆ GetOverriddenPropertyOperation() [2/3]

EOverriddenPropertyOperation FOverridableManager::GetOverriddenPropertyOperation ( TNotNull< UObject * >  Object,
const FPropertyVisitorPath PropertyPath,
bool bOutInheritedOperation = nullptr 
)
inline

Retrieve the overridable operation from the specified property path

Parameters
Objectowning the property
PropertyPathleading to the property the caller is interested in
bOutInheritedOperationoptional parameter to know if the operation returned was inherited from a parent property
Returns
the current type of override operation on the property

◆ GetOverriddenPropertyOperation() [3/3]

EOverriddenPropertyOperation FOverridableManager::GetOverriddenPropertyOperation ( TNotNull< UObject * >  Object,
FPropertyVisitorPath::Iterator  PropertyIterator,
bool bOutInheritedOperation = nullptr 
)
protected

◆ GetOverriddenState()

EOverriddenState FOverridableManager::GetOverriddenState ( TNotNull< UObject * >  Object,
TFunction< bool(TNotNull< const FProperty * >)>  ConsiderPropertyForOverriddenState = TFunction<bool(TNotNull<const FProperty*>)>(),
const FPropertyVisitorPath Path = FPropertyVisitorPath(),
bool bOutInheritedState = nullptr 
)

Retrieve the overridden state for the specified property of the specified object

Parameters
Objectto fetch the overridden properties
ConsiderPropertyForOverriddenStateoptional parameter to consider or not properties in the overridden state evaluation
Pathto the property to know its overridden state, empty will return the object overridden state
bOutInheritedStateoptional parameter to know if the operation returned was inherited from a parent property
Returns
the overridden state if the object has overridable serialization enabled

◆ HandleDeadObjectReferences()

void FOverridableManager::HandleDeadObjectReferences ( const TSet< UClass * > &  DeadClasses,
const TSet< UObject * > &  ActiveInstances,
const TSet< UObject * > &  TemplateInstances 
)

◆ HandleObjectsReInstantiated()

void FOverridableManager::HandleObjectsReInstantiated ( const TMap< UObject *, UObject * > &  OldToNewInstanceMap)

◆ InheritEnabledFrom()

void FOverridableManager::InheritEnabledFrom ( TNotNull< UObject * >  Object,
const UObject DefaultData 
)

Inherit if the specified object should enable overridable serialization. It inherits it from either its default object or its outer.

Parameters
Objectto be inherited on
DefaultDataits default object

◆ IsEnabled()

bool FOverridableManager::IsEnabled ( TNotNull< const UObject * >  Object)

Lookup if the for the specified object has overridable serialization enabled

Parameters
Objectto check against
Returns
true if it uses the overridable serialization

◆ NeedSubObjectTemplateInstantiation()

bool FOverridableManager::NeedSubObjectTemplateInstantiation ( TNotNull< const UObject * >  Object)

Return true if this object needs subobject template instantiation

Parameters
Objectto be querying about

◆ NotifyPropertyChange()

void FOverridableManager::NotifyPropertyChange ( const EPropertyNotificationType  Notification,
TNotNull< UObject * >  Object,
FPropertyVisitorPath::Iterator  PropertyIterator,
const EPropertyChangeType::Type  ChangeType 
)
protected

◆ OverrideAllObjectProperties()

void FOverridableManager::OverrideAllObjectProperties ( TNotNull< UObject * >  Object)

Override the entire object properties and all its instanced subobjects

Parameters
Objectto override all it properties

◆ OverrideProperty() [1/2]

void FOverridableManager::OverrideProperty ( TNotNull< UObject * >  Object,
const FPropertyChangedChainEvent PropertyEvent 
)
inline

Override a specific property of an object (Helper methods to call Pre/PostOverride) Note: Supports object that does not have overridable serialization enabled

Parameters
Objectowning the property
PropertyEventinformation about the type of change including any container item index
PropertyChainleading to the property that is about to be overridden

◆ OverrideProperty() [2/2]

void FOverridableManager::OverrideProperty ( TNotNull< UObject * >  Object,
const FPropertyVisitorPath PropertyPath 
)

Override a specific property of an object (Helper methods to call Pre/PostOverride) Note: Supports object that does not have overridable serialization enabled

Parameters
Objectowning the property
PropertyPathleading to the property that is about to be overridden

◆ PostOverrideProperty() [1/2]

void FOverridableManager::PostOverrideProperty ( TNotNull< UObject * >  Object,
const FPropertyVisitorPath PropertyPath,
const EPropertyChangeType::Type  ChangeType 
)

To be called after the property of the specified object was overridden Note: Supports object that does not have overridable serialization enabled

Parameters
Objectowning the property
PropertyPathleading to the property that was overridden
ChangeTypeof the current operation

◆ PostOverrideProperty() [2/2]

void FOverridableManager::PostOverrideProperty ( UObject Object,
const FPropertyChangedChainEvent PropertyChainEvent 
)
inline

To be called after the property was overridden of the specified object Note: Supports object that does not have overridable serialization enabled

Parameters
Objectowning the property
PropertyChainEventinformation about the type of change including any container item index

◆ PreOverrideProperty() [1/2]

void FOverridableManager::PreOverrideProperty ( TNotNull< UObject * >  Object,
const FPropertyVisitorPath PropertyPath,
const EPropertyChangeType::Type  ChangeType = EPropertyChangeType::Unspecified 
)

To be called prior to override a property of the specified object Note: Supports object that does not have overridable serialization enabled

Parameters
Objectowning the property
PropertyPathleading to the property about to be overridden
ChangeTypeoptional current operation

◆ PreOverrideProperty() [2/2]

void FOverridableManager::PreOverrideProperty ( UObject Object,
const FPropertyChangedChainEvent PropertyChainEvent 
)
inline

To be called prior to override a property of the specified object Note: Supports object that does not have overridable serialization enabled

Parameters
Objectowning the property
PropertyChainEventinformation about the type of change including any container item index

◆ PreOverridePropertyChain()

void FOverridableManager::PreOverridePropertyChain ( UObject Object,
const FEditPropertyChain PropertyChain 
)
inline

To be called prior to override a property of the specified object Note: Supports object that does not have overridable serialization enabled

Parameters
Objectowning the property
PropertyChainleading to the property about to be overridden

◆ PropagateClearOverridesToInstancedSubObjects()

void FOverridableManager::PropagateClearOverridesToInstancedSubObjects ( TNotNull< UObject * >  Object)

Propagate the clear overrides to all instanced suboject of the specified object

Parameters
Object

◆ RestoreOverrideOperation()

FOverriddenPropertySet * FOverridableManager::RestoreOverrideOperation ( TNotNull< UObject * >  Object,
EOverriddenPropertyOperation  Operation,
const bool  bNeedsSubobjectTemplateInstantiation,
const bool  bDontClearOverrides = false 
)

Restore the override operation from a saved state on this object, and it will enable it if it wasn't already enabled

Note
: It will not restore a Modified state has this will be done automatically when sub properties overrides are restored
Parameters
Objectto set the override operation on
Operationthe override operation to set on the object
bNeedsSubobjectTemplateInstantiationset to true if it will need a sub object template instantiation during postload, false will not do it.
bDontClearOverridesset to true if you don't want to stomp any overrides that currently exist
Returns
the overridden properties of the object

◆ RestoreOverrideState()

void FOverridableManager::RestoreOverrideState ( TNotNull< const UObject * >  OldObject,
TNotNull< UObject * >  NewObject 
)

Restore some of the overridden state that is not necessarily restored by the CPFUO (ex: bWasAdded come from the owner of the object and reinstantiating the object does not preserve it)

Parameters
OldObjectto old object to restore from the overridden state
NewObjectthe new object to restore to the overridden state

◆ SerializeOverriddenProperties()

void FOverridableManager::SerializeOverriddenProperties ( TNotNull< UObject * >  Object,
FStructuredArchive::FRecord  ObjectRecord 
)

Serializes the overridden properties of the specified object into the record

Parameters
Objectto serialize the overridden property
ObjectRecordthe record to use for serialization

◆ TryGet()

static FOverridableManager * FOverridableManager::TryGet ( )
inlinestatic
Returns
the instance managing the overridability if available
Note
it is not available only during initialization time

Member Data Documentation

◆ FOverriddenPropertySet

friend FOverridableManager::FOverriddenPropertySet
protected

◆ NeedsSubobjectTemplateInstantiation

FUObjectAnnotationSparseBool FOverridableManager::NeedsSubobjectTemplateInstantiation
protected

◆ OverridableManager

FOverridableManager * FOverridableManager::OverridableManager = nullptr
staticprotected

The documentation for this class was generated from the following files: