UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::Editor::DataStorage::ICoreProvider Class Referenceabstract

#include <TypedElementDataStorageInterface.h>

+ Inheritance diagram for UE::Editor::DataStorage::ICoreProvider:

Public Types

enum class  EFilterOptions : uint8 { Inclusive , Exclusive }
 
enum class  ECooperativeTaskPriority : uint8 { High , Medium , Low }
 
using FOnCooperativeUpdate = TFunction< void(FTimespan TimeAllowance)>
 

Public Member Functions

virtual const UEditorDataStorageFactoryFindFactory (const UClass *FactoryType) const =0
 
virtual UEditorDataStorageFactoryFindFactory (const UClass *FactoryType)=0
 
template<typename FactoryT >
const FactoryTFindFactory () const
 
template<typename FactoryT >
FactoryTFindFactory ()
 
virtual TableHandle RegisterTable (TConstArrayView< const UScriptStruct * > ColumnList, const FName &Name)=0
 
template<TColumnType... Columns>
TableHandle RegisterTable (const FName &Name)
 
virtual TableHandle RegisterTable (TableHandle SourceTable, TConstArrayView< const UScriptStruct * > ColumnList, const FName &Name)=0
 
template<TColumnType... Columns>
TableHandle RegisterTable (TableHandle SourceTable, const FName &Name)
 
virtual TableHandle FindTable (const FName &Name)=0
 
virtual RowHandle ReserveRow ()=0
 
virtual void BatchReserveRows (int32 Count, TFunctionRef< void(RowHandle)> ReservationCallback)=0
 
virtual void BatchReserveRows (TArrayView< RowHandle > ReservedRows)=0
 
virtual RowHandle AddRow (TableHandle Table)=0
 
virtual RowHandle AddRow (TableHandle Table, RowCreationCallbackRef OnCreated)=0
 
virtual bool AddRow (RowHandle ReservedRow, TableHandle Table)=0
 
virtual bool AddRow (RowHandle ReservedRow, TableHandle Table, RowCreationCallbackRef OnCreated)=0
 
virtual bool BatchAddRow (TableHandle Table, int32 Count, RowCreationCallbackRef OnCreated)=0
 
virtual bool BatchAddRow (TableHandle Table, TConstArrayView< RowHandle > ReservedHandles, RowCreationCallbackRef OnCreated)=0
 
virtual void RemoveRow (RowHandle Row)=0
 
virtual void BatchRemoveRows (TConstArrayView< RowHandle > Rows)=0
 
virtual void RemoveAllRowsWithColumns (TConstArrayView< const UScriptStruct * > Columns)=0
 
template<TColumnType... Columns>
void RemoveAllRowsWith ()
 
virtual bool IsRowAvailable (RowHandle Row) const =0
 
virtual bool IsRowAssigned (RowHandle Row) const =0
 
virtual void FilterRowsBy (FRowHandleArray &Result, FRowHandleArrayView Input, EFilterOptions Options, Queries::TQueryFunction< bool > &Filter)=0
 
template<typename FilterFunction >
void FilterRowsBy (FRowHandleArray &Result, FRowHandleArrayView Input, EFilterOptions Options, FilterFunction &&Filter)
 
virtual void AddColumn (RowHandle Row, const UScriptStruct *ColumnType)=0
 
template<TColumnType ColumnType>
void AddColumn (RowHandle Row)
 
virtual void AddColumnData (RowHandle Row, const UScriptStruct *ColumnType, const ColumnCreationCallbackRef Initializer, ColumnCopyOrMoveCallback Relocator)=0
 
template<TDataColumnType ColumnType>
void AddColumn (RowHandle Row, ColumnType &&Column)
 
virtual void AddColumn (RowHandle Row, const FValueTag &Tag, const FName &Value)=0
 
template<typename T >
void AddColumn (RowHandle Row, const FName &Tag)=delete
 
template<typename T >
void AddColumn (RowHandle Row, const FName &Tag, const FName &Value)=delete
 
template<>
void AddColumn (RowHandle Row, const FName &Tag, const FName &Value)
 
template<TEnumType EnumT>
void AddColumn (RowHandle Row, EnumT Value)
 
template<auto Value, TEnumType EnumT = decltype(Value)>
void AddColumn (RowHandle Row)
 
template<TDynamicColumnTemplate DynamicColumnTemplate>
void AddColumn (RowHandle Row, const FName &Identifier)
 
template<TDynamicColumnTemplate DynamicColumnTemplate>
void AddColumn (RowHandle Row, const FName &Identifier, DynamicColumnTemplate &&TemplateInstance)
 
virtual void AddColumns (RowHandle Row, TConstArrayView< const UScriptStruct * > Columns)=0
 
template<TColumnType... Columns>
void AddColumns (RowHandle Row)
 
virtual void RemoveColumn (RowHandle Row, const UScriptStruct *ColumnType)=0
 
template<TColumnType Column>
void RemoveColumn (RowHandle Row)
 
template<TEnumType EnumT>
void RemoveColumn (RowHandle Row)
 
virtual void RemoveColumn (RowHandle Row, const FValueTag &Tag)=0
 
template<typename T >
void RemoveColumn (RowHandle Row, const FName &Tag)=delete
 
template<TDynamicColumnTemplate DynamicColumnTemplateType>
void RemoveColumn (RowHandle Row, const FName &Identifier)
 
template<>
void RemoveColumn (RowHandle Row, const FName &Tag)
 
virtual void RemoveColumns (RowHandle Row, TConstArrayView< const UScriptStruct * > Columns)=0
 
template<TColumnType... Columns>
void RemoveColumns (RowHandle Row)
 
virtual void AddRemoveColumns (RowHandle Row, TConstArrayView< const UScriptStruct * > ColumnsToAdd, TConstArrayView< const UScriptStruct * > ColumnsToRemove)=0
 
virtual void BatchAddRemoveColumns (TConstArrayView< RowHandle > Rows, TConstArrayView< const UScriptStruct * > ColumnsToAdd, TConstArrayView< const UScriptStruct * > ColumnsToRemove)=0
 
virtual voidGetColumnData (RowHandle Row, const UScriptStruct *ColumnType)=0
 
virtual const voidGetColumnData (RowHandle Row, const UScriptStruct *ColumnType) const =0
 
template<TDataColumnType ColumnType>
ColumnType * GetColumn (RowHandle Row)
 
template<TDataColumnType ColumnType>
const ColumnType * GetColumn (RowHandle Row) const
 
template<TDynamicColumnTemplate ColumnTypeTemplate>
ColumnTypeTemplateGetColumn (RowHandle Row, const FName &Identifer)
 
template<TDynamicColumnTemplate ColumnTypeTemplate>
const ColumnTypeTemplateGetColumn (RowHandle Row, const FName &Identifer) const
 
virtual bool HasColumns (RowHandle Row, TConstArrayView< const UScriptStruct * > ColumnTypes) const =0
 
virtual bool HasColumns (RowHandle Row, TConstArrayView< TWeakObjectPtr< const UScriptStruct > > ColumnTypes) const =0
 
template<TColumnType... ColumnTypes>
bool HasColumns (RowHandle Row) const
 
virtual void ListColumns (RowHandle Row, ColumnListCallbackRef Callback) const =0
 
virtual void ListColumns (RowHandle Row, ColumnListWithDataCallbackRef Callback)=0
 
virtual bool MatchesColumns (RowHandle Row, const Queries::FConditions &Conditions) const =0
 
virtual const UScriptStructFindDynamicColumn (const FDynamicColumnDescription &Description) const =0
 
virtual const UScriptStructGenerateDynamicColumn (const FDynamicColumnDescription &Description)=0
 
virtual void ForEachDynamicColumn (const UScriptStruct &Template, TFunctionRef< void(const UScriptStruct &Type)> Callback) const =0
 
template<TDynamicColumnTemplate DynamicColumnTemplateType>
void ForEachDynamicColumn (TFunctionRef< void(const UScriptStruct &Type)> Callback) const
 
virtual UE::Editor::DataStorage::FHierarchyHandle RegisterHierarchy (const UE::Editor::DataStorage::FHierarchyRegistrationParams &Params)=0
 
virtual UE::Editor::DataStorage::FHierarchyHandle FindHierarchyByName (const FName &Name) const =0
 
virtual bool IsValidHierachyHandle (FHierarchyHandle) const =0
 
virtual const UScriptStructGetChildTagType (FHierarchyHandle InHierarchyHandle) const =0
 
virtual const UScriptStructGetParentTagType (FHierarchyHandle InHierarchyHandle) const =0
 
virtual const UScriptStructGetHierarchyDataColumnType (FHierarchyHandle InHierarchyHandle) const =0
 
virtual void ListHierarchyNames (TFunctionRef< void(const FName &HierarchyName)> Callback) const =0
 
virtual void SetParentRow (FHierarchyHandle InHierarchyHandle, RowHandle Target, RowHandle Parent)=0
 
virtual void SetUnresolvedParent (FHierarchyHandle InHierarchyHandle, RowHandle Target, FMapKey ParentId, FName MappingDomain)=0
 
virtual RowHandle GetParentRow (FHierarchyHandle InHierarchyHandle, RowHandle Target) const =0
 
virtual TFunction< RowHandle(const void *, const UScriptStruct *)> CreateParentExtractionFunction (FHierarchyHandle InHierarchyHandle) const =0
 
virtual bool HasChildren (FHierarchyHandle InHierarchyHandle, RowHandle Row) const =0
 
virtual void WalkDepthFirst (FHierarchyHandle InHierarchyHandle, RowHandle Row, TFunction< void(const ICoreProvider &Context, RowHandle Owner, RowHandle Target)> VisitFn) const =0
 
virtual void DebugPrintQueryCallbacks (FOutputDevice &Output)=0
 
virtual QueryHandle RegisterQuery (FQueryDescription &&Query)=0
 
virtual void UnregisterQuery (QueryHandle Query)=0
 
virtual const FQueryDescriptionGetQueryDescription (QueryHandle Query) const =0
 
virtual FName GetQueryTickGroupName (EQueryTickGroups Group) const =0
 
virtual FQueryResult RunQuery (QueryHandle Query)=0
 
virtual FQueryResult RunQuery (QueryHandle Query, DirectQueryCallbackRef Callback)=0
 
virtual FQueryResult RunQuery (QueryHandle Query, EDirectQueryExecutionFlags Flags, DirectQueryCallbackRef Callback)=0
 
virtual FQueryResult RunQuery (QueryHandle Query, ERunQueryFlags Flags, const Queries::TQueryFunction< void > &Callback)=0
 
template<Queries::FunctionType Function>
FQueryResult RunQuery (QueryHandle Query, ERunQueryFlags Flags, Function &&Callback)
 
template<typename ResultType , Queries::FunctionType Function>
FQueryResult RunQuery (QueryHandle Query, ERunQueryFlags Flags, Queries::TResult< ResultType > &Result, Function &&Callback)
 
virtual void ActivateQueries (FName ActivationName)=0
 
virtual RowHandle LookupMappedRow (const FName &Domain, const FMapKeyView &Key) const =0
 
virtual void MapRow (const FName &Domain, FMapKey Key, RowHandle Row)=0
 
virtual void BatchMapRows (const FName &Domain, TArrayView< TPair< FMapKey, RowHandle > > MapRowPairs)=0
 
virtual void RemapRow (const FName &Domain, const FMapKeyView &OriginalKey, FMapKey NewKey)=0
 
virtual void RemoveRowMapping (const FName &Domain, const FMapKeyView &Key)=0
 
virtual FTypedElementOnDataStorageUpdateOnUpdate ()=0
 
virtual FTypedElementOnDataStorageUpdateOnUpdateCompleted ()=0
 
virtual void RegisterCooperativeUpdate (const FName &TaskName, ECooperativeTaskPriority Priority, FOnCooperativeUpdate Callback)=0
 
virtual void UnregisterCooperativeUpdate (const FName &TaskName)=0
 
virtual bool IsAvailable () const =0
 
virtual voidGetExternalSystemAddress (UClass *Target)=0
 
template<typename SystemType >
SystemTypeGetExternalSystem ()
 
virtual bool SupportsExtension (FName Extension) const =0
 
virtual void ListExtensions (TFunctionRef< void(FName)> Callback) const =0
 
RowHandle FindIndexedRow (IndexHash Index) const
 
void IndexRow (IndexHash Index, RowHandle Row)
 
void BatchIndexRows (TConstArrayView< TPair< IndexHash, RowHandle > > IndexRowPairs)
 
void Reindex (IndexHash OriginalIndex, IndexHash NewIndex)
 
void RemoveIndex (IndexHash Index)
 
void ReindexRow (IndexHash OriginalIndex, IndexHash NewIndex, RowHandle Row)
 
RowHandle LookupMappedRow (const FMapKeyView &Key) const
 
void MapRow (FMapKey Key, RowHandle Row)
 
void BatchMapRows (TArrayView< TPair< FMapKey, RowHandle > > MapRowPairs)
 
void RemapRow (const FMapKeyView &OriginalKey, FMapKey NewKey)
 
void RemoveRowMapping (const FMapKeyView &Key)
 
template<>
void AddColumn (RowHandle Row, const FName &Tag, const FName &Value)
 
template<>
void RemoveColumn (RowHandle Row, const FName &Tag)
 
template<TDynamicColumnTemplate DynamicColumnTemplate>
DynamicColumnTemplate * GetColumn (RowHandle Row, const FName &Identifier)
 
template<TDynamicColumnTemplate DynamicColumnTemplate>
const DynamicColumnTemplate * GetColumn (RowHandle Row, const FName &Identifier) const
 

Member Typedef Documentation

◆ FOnCooperativeUpdate

Member Enumeration Documentation

◆ ECooperativeTaskPriority

The higher the priority, the more frequently tasks get called. See RegisterCooperativeUpdate.

Enumerator
High 
Medium 
Low 

◆ EFilterOptions

Enumerator
Inclusive 

Include rows that have the columns required for the filter function and the filter function returns true.

Exclusive 

Exclude rows that have the columns required for the filter function and the filter function returns true.

Member Function Documentation

◆ ActivateQueries()

virtual void UE::Editor::DataStorage::ICoreProvider::ActivateQueries ( FName  ActivationName)
pure virtual

Triggers all queries registered under the activation name to run for one update cycle. The activatable queries will be activated at start of the cycle and disabled at the end of the cycle and act like regular queries for that cycle. This includes not running if there are no columns to match against.

◆ AddColumn() [1/12]

template<TColumnType Column>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row)

◆ AddColumn() [2/12]

template<auto Value, TEnumType EnumT>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row)

◆ AddColumn() [3/12]

template<TDataColumnType ColumnType>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
ColumnType &&  Column 
)

◆ AddColumn() [4/12]

template<TDynamicColumnTemplate DynamicColumnTemplate>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const FName Identifier 
)

◆ AddColumn() [5/12]

template<TDynamicColumnTemplate DynamicColumnTemplate>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const FName Identifier,
DynamicColumnTemplate &&  TemplateInstance 
)

◆ AddColumn() [6/12]

template<TDynamicColumnTemplate DynamicColumnTemplate>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const FName Tag 
)
delete

◆ AddColumn() [7/12]

template<>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const FName Tag,
const FName Value 
)

◆ AddColumn() [8/12]

template<>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const FName Tag,
const FName Value 
)
inline

◆ AddColumn() [9/12]

template<typename T >
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const FName Tag,
const FName Value 
)
delete

◆ AddColumn() [10/12]

virtual void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const FValueTag Tag,
const FName Value 
)
pure virtual

Adds a ValueTag with the given value to a row A row can have multiple ValueTags, but only one of each tag type. Example: AddColumn(Row, ValueTag(TEXT("Color"), TEXT("Red)); // Valid AddColumn(Row, ValueTag(TEXT("Direction"), TEXT("Up")); // Valid AddColumn(Row, ValueTag(TEXT("Color"), TEXT("Blue")); // Will do nothing since there already exists a Color value tag Note: Current support for changing a value tag from one value to another requires that the tag is removed before a new one is added. This will likely change in the future to transparently replace the tag to have consistent behaviour with other usages of AddColumn

◆ AddColumn() [11/12]

virtual void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
const UScriptStruct ColumnType 
)
pure virtual

management

Adds a column to a row or does nothing if already added.

◆ AddColumn() [12/12]

template<TEnumType EnumT>
void UE::Editor::DataStorage::ICoreProvider::AddColumn ( RowHandle  Row,
EnumT  Value 
)

◆ AddColumnData()

virtual void UE::Editor::DataStorage::ICoreProvider::AddColumnData ( RowHandle  Row,
const UScriptStruct ColumnType,
const ColumnCreationCallbackRef  Initializer,
ColumnCopyOrMoveCallback  Relocator 
)
pure virtual

Adds a new data column and initializes it. The relocator will be used to copy or move the column out of its temporary location into the final table if the addition needs to be deferred.

◆ AddColumns() [1/2]

template<TColumnType... Columns>
void UE::Editor::DataStorage::ICoreProvider::AddColumns ( RowHandle  Row)

◆ AddColumns() [2/2]

virtual void UE::Editor::DataStorage::ICoreProvider::AddColumns ( RowHandle  Row,
TConstArrayView< const UScriptStruct * >  Columns 
)
pure virtual

Adds multiple columns from a row. This is typically more efficient than adding columns one at a time.

◆ AddRemoveColumns()

virtual void UE::Editor::DataStorage::ICoreProvider::AddRemoveColumns ( RowHandle  Row,
TConstArrayView< const UScriptStruct * >  ColumnsToAdd,
TConstArrayView< const UScriptStruct * >  ColumnsToRemove 
)
pure virtual

Adds and removes the provided column types from the provided row. This is typically more efficient than individually adding and removing columns as well as being faster than adding and removing columns separately.

◆ AddRow() [1/4]

virtual bool UE::Editor::DataStorage::ICoreProvider::AddRow ( RowHandle  ReservedRow,
TableHandle  Table 
)
pure virtual

Adds a new row to the provided table using a previously reserved row.

◆ AddRow() [2/4]

virtual bool UE::Editor::DataStorage::ICoreProvider::AddRow ( RowHandle  ReservedRow,
TableHandle  Table,
RowCreationCallbackRef  OnCreated 
)
pure virtual

Adds a new row to the provided table using a previously reserved row. Callers are expected to use the callback to initialize the row if needed.

◆ AddRow() [3/4]

virtual RowHandle UE::Editor::DataStorage::ICoreProvider::AddRow ( TableHandle  Table)
pure virtual

Adds a new row to the provided table.

◆ AddRow() [4/4]

virtual RowHandle UE::Editor::DataStorage::ICoreProvider::AddRow ( TableHandle  Table,
RowCreationCallbackRef  OnCreated 
)
pure virtual

Adds a new row to the provided table. Callers are expected to use the callback to initialize the row if needed.

◆ BatchAddRemoveColumns()

virtual void UE::Editor::DataStorage::ICoreProvider::BatchAddRemoveColumns ( TConstArrayView< RowHandle Rows,
TConstArrayView< const UScriptStruct * >  ColumnsToAdd,
TConstArrayView< const UScriptStruct * >  ColumnsToRemove 
)
pure virtual

Adds and removes the provided column types from the provided list of rows.

◆ BatchAddRow() [1/2]

virtual bool UE::Editor::DataStorage::ICoreProvider::BatchAddRow ( TableHandle  Table,
int32  Count,
RowCreationCallbackRef  OnCreated 
)
pure virtual

Add multiple rows at once. For each new row the OnCreated callback is called. Callers are expected to use the callback to initialize the row if needed.

◆ BatchAddRow() [2/2]

virtual bool UE::Editor::DataStorage::ICoreProvider::BatchAddRow ( TableHandle  Table,
TConstArrayView< RowHandle ReservedHandles,
RowCreationCallbackRef  OnCreated 
)
pure virtual

Add multiple rows at once. For each new row the OnCreated callback is called. Callers are expected to use the callback to initialize the row if needed. This version uses a set of previously reserved rows. Any row that can't be used will be released.

◆ BatchIndexRows()

void UE::Editor::DataStorage::ICoreProvider::BatchIndexRows ( TConstArrayView< TPair< IndexHash, RowHandle > >  IndexRowPairs)
inline

◆ BatchMapRows() [1/2]

virtual void UE::Editor::DataStorage::ICoreProvider::BatchMapRows ( const FName Domain,
TArrayView< TPair< FMapKey, RowHandle > >  MapRowPairs 
)
pure virtual

Register multiple rows under their key in the provided domain. The same row can be registered multiple times, but the key can only be associated with a single row in the domain. During processing the keys will be moved out into the final location.

◆ BatchMapRows() [2/2]

void UE::Editor::DataStorage::ICoreProvider::BatchMapRows ( TArrayView< TPair< FMapKey, RowHandle > >  MapRowPairs)
inline

◆ BatchRemoveRows()

virtual void UE::Editor::DataStorage::ICoreProvider::BatchRemoveRows ( TConstArrayView< RowHandle Rows)
pure virtual

Removes multiple rows at one. If any of the rows are invalid or already removed, nothing happens.

◆ BatchReserveRows() [1/2]

virtual void UE::Editor::DataStorage::ICoreProvider::BatchReserveRows ( int32  Count,
TFunctionRef< void(RowHandle)>  ReservationCallback 
)
pure virtual

Reserve multiple rows at once to be assigned to a table at a later point. If multiple rows are needed, the batch version will generally have better performance. If a row is no longer needed before it's been assigned to a table, it should still be released with RemoveRow. The reservation callback will be called once per reserved row.

◆ BatchReserveRows() [2/2]

virtual void UE::Editor::DataStorage::ICoreProvider::BatchReserveRows ( TArrayView< RowHandle ReservedRows)
pure virtual

Reserve multiple rows at once to be assigned to a table at a later point. If multiple rows are needed, the batch version will generally have better performance. If a row is no longer needed before it's been assigned to a table, it should still be released with RemoveRow. The provided range will be have its values set to the reserved row handles.

◆ CreateParentExtractionFunction()

virtual TFunction< RowHandle(const void *, const UScriptStruct *)> UE::Editor::DataStorage::ICoreProvider::CreateParentExtractionFunction ( FHierarchyHandle  InHierarchyHandle) const
pure virtual

◆ DebugPrintQueryCallbacks()

virtual void UE::Editor::DataStorage::ICoreProvider::DebugPrintQueryCallbacks ( FOutputDevice Output)
pure virtual

Outputs the registered query callbacks to the given output device for debugging purposes.

◆ FilterRowsBy() [1/2]

void UE::Editor::DataStorage::ICoreProvider::FilterRowsBy ( FRowHandleArray Result,
FRowHandleArrayView  Input,
EFilterOptions  Options,
FilterFunction &&  Filter 
)

Filters the provided rows using the query filter and stores the results in the provided list.

◆ FilterRowsBy() [2/2]

virtual void UE::Editor::DataStorage::ICoreProvider::FilterRowsBy ( FRowHandleArray Result,
FRowHandleArrayView  Input,
EFilterOptions  Options,
Queries::TQueryFunction< bool > &  Filter 
)
pure virtual

Filters the provided rows using the query filter and stores the results in the provided list.

◆ FindDynamicColumn()

virtual const UScriptStruct * UE::Editor::DataStorage::ICoreProvider::FindDynamicColumn ( const FDynamicColumnDescription Description) const
pure virtual

Finds the type information for a dynamic column. If the dynamic column has not been generated, then return nullptr The TemplateType may be a typed derived from either FColumn or FTag, anything else will return nullptr

◆ FindFactory() [1/4]

template<typename FactoryT >
FactoryT * UE::Editor::DataStorage::ICoreProvider::FindFactory ( )

◆ FindFactory() [2/4]

template<typename FactoryT >
const FactoryT * UE::Editor::DataStorage::ICoreProvider::FindFactory ( ) const

Convenience function for FindFactory

◆ FindFactory() [3/4]

virtual const UEditorDataStorageFactory * UE::Editor::DataStorage::ICoreProvider::FindFactory ( const UClass FactoryType) const
pure virtual

Factories

@description Factories are an automated way to register tables, queries and other information with TEDS. Finds a factory instance registered with TEDS

◆ FindFactory() [4/4]

virtual UEditorDataStorageFactory * UE::Editor::DataStorage::ICoreProvider::FindFactory ( const UClass FactoryType)
pure virtual

◆ FindHierarchyByName()

virtual UE::Editor::DataStorage::FHierarchyHandle UE::Editor::DataStorage::ICoreProvider::FindHierarchyByName ( const FName Name) const
pure virtual

◆ FindIndexedRow()

RowHandle UE::Editor::DataStorage::ICoreProvider::FindIndexedRow ( IndexHash  Index) const
inline

Deprecated

◆ FindTable()

virtual TableHandle UE::Editor::DataStorage::ICoreProvider::FindTable ( const FName Name)
pure virtual

Returns a previously created table with the provided name or TypedElementInvalidTableHandle if not found.

◆ ForEachDynamicColumn() [1/2]

virtual void UE::Editor::DataStorage::ICoreProvider::ForEachDynamicColumn ( const UScriptStruct Template,
TFunctionRef< void(const UScriptStruct &Type)>  Callback 
) const
pure virtual

Executes the given callback for each known dynamic column that derives from the base template provided

◆ ForEachDynamicColumn() [2/2]

template<TDynamicColumnTemplate DynamicColumnTemplateType>
void UE::Editor::DataStorage::ICoreProvider::ForEachDynamicColumn ( TFunctionRef< void(const UScriptStruct &Type)>  Callback) const

Executes the given callback for each known dynamic column that derives from the base template provided

◆ GenerateDynamicColumn()

virtual const UScriptStruct * UE::Editor::DataStorage::ICoreProvider::GenerateDynamicColumn ( const FDynamicColumnDescription Description)
pure virtual

Generates a new dynamic column from a Template. A dynamic column is uniquely identified using the given template and an Identifier This function is idempotent - multiple calls with the same parameters will result in subsequent calls returning the same type The TemplateType may be a typed derived from either FColumn or FTag

◆ GetChildTagType()

virtual const UScriptStruct * UE::Editor::DataStorage::ICoreProvider::GetChildTagType ( FHierarchyHandle  InHierarchyHandle) const
pure virtual

◆ GetColumn() [1/6]

template<TDataColumnType ColumnType>
ColumnType * UE::Editor::DataStorage::ICoreProvider::GetColumn ( RowHandle  Row)

Returns a pointer to the column of the given row or a nullptr if the type couldn't be found or the row doesn't exist.

◆ GetColumn() [2/6]

template<TDataColumnType ColumnType>
const ColumnType * UE::Editor::DataStorage::ICoreProvider::GetColumn ( RowHandle  Row) const

◆ GetColumn() [3/6]

template<TDynamicColumnTemplate ColumnTypeTemplate>
ColumnTypeTemplate * UE::Editor::DataStorage::ICoreProvider::GetColumn ( RowHandle  Row,
const FName Identifer 
)

◆ GetColumn() [4/6]

template<TDynamicColumnTemplate ColumnTypeTemplate>
const ColumnTypeTemplate * UE::Editor::DataStorage::ICoreProvider::GetColumn ( RowHandle  Row,
const FName Identifer 
) const

◆ GetColumn() [5/6]

template<TDynamicColumnTemplate DynamicColumnTemplate>
DynamicColumnTemplate * UE::Editor::DataStorage::ICoreProvider::GetColumn ( RowHandle  Row,
const FName Identifier 
)

◆ GetColumn() [6/6]

template<TDynamicColumnTemplate DynamicColumnTemplate>
const DynamicColumnTemplate * UE::Editor::DataStorage::ICoreProvider::GetColumn ( RowHandle  Row,
const FName Identifier 
) const

◆ GetColumnData() [1/2]

virtual const void * UE::Editor::DataStorage::ICoreProvider::GetColumnData ( RowHandle  Row,
const UScriptStruct ColumnType 
) const
pure virtual

◆ GetColumnData() [2/2]

virtual void * UE::Editor::DataStorage::ICoreProvider::GetColumnData ( RowHandle  Row,
const UScriptStruct ColumnType 
)
pure virtual

Retrieves a pointer to the column of the given row or a nullptr if not found or if the column type is a tag.

◆ GetExternalSystem()

template<typename SystemType >
SystemType * UE::Editor::DataStorage::ICoreProvider::GetExternalSystem ( )

Returns a pointer to the registered external system if found, otherwise null.

◆ GetExternalSystemAddress()

virtual void * UE::Editor::DataStorage::ICoreProvider::GetExternalSystemAddress ( UClass Target)
pure virtual

Returns a pointer to the registered external system if found, otherwise null.

◆ GetHierarchyDataColumnType()

virtual const UScriptStruct * UE::Editor::DataStorage::ICoreProvider::GetHierarchyDataColumnType ( FHierarchyHandle  InHierarchyHandle) const
pure virtual

◆ GetParentRow()

virtual RowHandle UE::Editor::DataStorage::ICoreProvider::GetParentRow ( FHierarchyHandle  InHierarchyHandle,
RowHandle  Target 
) const
pure virtual

◆ GetParentTagType()

virtual const UScriptStruct * UE::Editor::DataStorage::ICoreProvider::GetParentTagType ( FHierarchyHandle  InHierarchyHandle) const
pure virtual

◆ GetQueryDescription()

virtual const FQueryDescription & UE::Editor::DataStorage::ICoreProvider::GetQueryDescription ( QueryHandle  Query) const
pure virtual

Returns the description of a previously registered query. If the query no longer exists an empty description will be returned.

◆ GetQueryTickGroupName()

virtual FName UE::Editor::DataStorage::ICoreProvider::GetQueryTickGroupName ( EQueryTickGroups  Group) const
pure virtual

Tick groups for queries can be given any name and the Data Storage will figure out the order of execution based on found dependencies. However keeping processors within the same query group can help promote better performance through parallelization. Therefore a collection of common tick group names is provided to help create consistent tick group names.

◆ HasChildren()

virtual bool UE::Editor::DataStorage::ICoreProvider::HasChildren ( FHierarchyHandle  InHierarchyHandle,
RowHandle  Row 
) const
pure virtual

◆ HasColumns() [1/3]

template<TColumnType... ColumnType>
bool UE::Editor::DataStorage::ICoreProvider::HasColumns ( RowHandle  Row) const

◆ HasColumns() [2/3]

virtual bool UE::Editor::DataStorage::ICoreProvider::HasColumns ( RowHandle  Row,
TConstArrayView< const UScriptStruct * >  ColumnTypes 
) const
pure virtual

Determines if the provided row contains the collection of columns and tags. Note that for rows that haven't been assigned yet it's not possible to check if a column exists as the table to check for hasn't been assigned yet. In these cases a list of known additions will be checked as these will be added once the table is assigned.

◆ HasColumns() [3/3]

virtual bool UE::Editor::DataStorage::ICoreProvider::HasColumns ( RowHandle  Row,
TConstArrayView< TWeakObjectPtr< const UScriptStruct > >  ColumnTypes 
) const
pure virtual

◆ IndexRow()

void UE::Editor::DataStorage::ICoreProvider::IndexRow ( IndexHash  Index,
RowHandle  Row 
)
inline

◆ IsAvailable()

virtual bool UE::Editor::DataStorage::ICoreProvider::IsAvailable ( ) const
pure virtual

functions

Whether or not the data storage is available. The data storage is available most of the time, but can be unavailable for a brief time between being destroyed and a new one created.

◆ IsRowAssigned()

virtual bool UE::Editor::DataStorage::ICoreProvider::IsRowAssigned ( RowHandle  Row) const
pure virtual

Checks whether or not a row has been reserved but not yet assigned to a table.

◆ IsRowAvailable()

virtual bool UE::Editor::DataStorage::ICoreProvider::IsRowAvailable ( RowHandle  Row) const
pure virtual

Checks whether or not a row is in use. This is true even if the row has only been reserved.

◆ IsValidHierachyHandle()

virtual bool UE::Editor::DataStorage::ICoreProvider::IsValidHierachyHandle ( FHierarchyHandle  ) const
pure virtual

◆ ListColumns() [1/2]

virtual void UE::Editor::DataStorage::ICoreProvider::ListColumns ( RowHandle  Row,
ColumnListCallbackRef  Callback 
) const
pure virtual

Lists the columns on a row. This includes data and tag columns. Note that for rows that haven't been assigned yet it's not possible to return the full list as no table has been assigned yet. In these cases a list of known additions will be returned as these will be added once the table is assigned.

◆ ListColumns() [2/2]

virtual void UE::Editor::DataStorage::ICoreProvider::ListColumns ( RowHandle  Row,
ColumnListWithDataCallbackRef  Callback 
)
pure virtual

Lists the column type and data on a row. This includes data and tag columns. Not all columns may have data so the data pointer in the callback can be null. Note that for rows that haven't been assigned yet it's not possible to return the full list as no table has been assigned yet. In these cases a list of known additions will be returned.

◆ ListExtensions()

virtual void UE::Editor::DataStorage::ICoreProvider::ListExtensions ( TFunctionRef< void(FName)>  Callback) const
pure virtual

Provides a list of all extensions that are enabled.

◆ ListHierarchyNames()

virtual void UE::Editor::DataStorage::ICoreProvider::ListHierarchyNames ( TFunctionRef< void(const FName &HierarchyName)>  Callback) const
pure virtual

◆ LookupMappedRow() [1/2]

RowHandle UE::Editor::DataStorage::ICoreProvider::LookupMappedRow ( const FMapKeyView Key) const
inline

◆ LookupMappedRow() [2/2]

virtual RowHandle UE::Editor::DataStorage::ICoreProvider::LookupMappedRow ( const FName Domain,
const FMapKeyView Key 
) const
pure virtual

Mapping

@description In order for rows to reference each other it's often needed to find a row based on the content of one of its columns. This can be done by linearly searching through columns, though this comes at a performance cost. As an alternative the data storage allows one or more key to be created for a row for fast retrieval. Retrieves the row for a mapped object. Returns an invalid row handle if the no row with the provided key was found in the provided domain.

◆ MapRow() [1/2]

virtual void UE::Editor::DataStorage::ICoreProvider::MapRow ( const FName Domain,
FMapKey  Key,
RowHandle  Row 
)
pure virtual

Registers a row under a key in the provided domain. The same row can be registered multiple, but an key can only be associated with a single row.

◆ MapRow() [2/2]

void UE::Editor::DataStorage::ICoreProvider::MapRow ( FMapKey  Key,
RowHandle  Row 
)
inline

◆ MatchesColumns()

virtual bool UE::Editor::DataStorage::ICoreProvider::MatchesColumns ( RowHandle  Row,
const Queries::FConditions Conditions 
) const
pure virtual

Determines if the columns in the row match the query conditions.

◆ OnUpdate()

virtual FTypedElementOnDataStorageUpdate & UE::Editor::DataStorage::ICoreProvider::OnUpdate ( )
pure virtual

Tick

Includes callbacks to respond to various steps during TEDS' tick. Called periodically when the storage is available. This provides an opportunity to do any repeated processing for the data storage.

◆ OnUpdateCompleted()

virtual FTypedElementOnDataStorageUpdate & UE::Editor::DataStorage::ICoreProvider::OnUpdateCompleted ( )
pure virtual

Called periodically when the storage is available. This provides an opportunity clean up after processing and to get ready for the next batch up updates.

◆ RegisterCooperativeUpdate()

virtual void UE::Editor::DataStorage::ICoreProvider::RegisterCooperativeUpdate ( const FName TaskName,
ECooperativeTaskPriority  Priority,
FOnCooperativeUpdate  Callback 
)
pure virtual

Each tick TEDS will use the remaining time in a frame to execute task in the cooperative queue. A time slicer uses a cooperative threading model so once a task has been started it will not be interrupted and it's up to the registered function to try to stay within the provided time window. Tasks with a higher priority will on average be run more frequently, but other priority tasks will be given a chance to do work so guarantees are given that lower priority aren't starved out by higher priority tasks.

◆ RegisterHierarchy()

virtual UE::Editor::DataStorage::FHierarchyHandle UE::Editor::DataStorage::ICoreProvider::RegisterHierarchy ( const UE::Editor::DataStorage::FHierarchyRegistrationParams Params)
pure virtual

◆ RegisterQuery()

virtual QueryHandle UE::Editor::DataStorage::ICoreProvider::RegisterQuery ( FQueryDescription &&  Query)
pure virtual

Query

@description Queries can be constructed using the Query Builder. Note that the Query Builder allows for the creation of queries that are more complex than the back-end may support. The back-end is allowed to simplify the query, in which case the query can be used directly in the processor to do additional filtering. This will however impact performance and it's therefore recommended to try to simplify the query first before relying on extended query filtering in a processor. Registers a query with the data storage. The description is processed into an internal format and may be changed. If no valid could be created an invalid query handle will be returned. It's recommended to use the Query Builder for a more convenient and safer construction of a query.

◆ RegisterTable() [1/4]

template<TColumnType... Columns>
TableHandle UE::Editor::DataStorage::ICoreProvider::RegisterTable ( const FName Name)

◆ RegisterTable() [2/4]

template<TColumnType... Columns>
TableHandle UE::Editor::DataStorage::ICoreProvider::RegisterTable ( TableHandle  SourceTable,
const FName Name 
)

◆ RegisterTable() [3/4]

virtual TableHandle UE::Editor::DataStorage::ICoreProvider::RegisterTable ( TableHandle  SourceTable,
TConstArrayView< const UScriptStruct * >  ColumnList,
const FName Name 
)
pure virtual

Copies the column information from the provided table and creates a new table for with the provided columns. Optionally a name can be given which is useful for retrieval later.

◆ RegisterTable() [4/4]

virtual TableHandle UE::Editor::DataStorage::ICoreProvider::RegisterTable ( TConstArrayView< const UScriptStruct * >  ColumnList,
const FName Name 
)
pure virtual

management

@description Tables are automatically created by taking an existing table and adding/removing columns. For performance its however better to create a table before adding objects to the table. This doesn't prevent those objects from having columns added/removed at a later time. To make debugging and profiling easier it's also recommended to give tables a name. Creates a new table for with the provided columns. Optionally a name can be given which is useful for retrieval later.

◆ Reindex()

void UE::Editor::DataStorage::ICoreProvider::Reindex ( IndexHash  OriginalIndex,
IndexHash  NewIndex 
)
inline

◆ ReindexRow()

void UE::Editor::DataStorage::ICoreProvider::ReindexRow ( IndexHash  OriginalIndex,
IndexHash  NewIndex,
RowHandle  Row 
)
inline

◆ RemapRow() [1/2]

void UE::Editor::DataStorage::ICoreProvider::RemapRow ( const FMapKeyView OriginalKey,
FMapKey  NewKey 
)
inline

◆ RemapRow() [2/2]

virtual void UE::Editor::DataStorage::ICoreProvider::RemapRow ( const FName Domain,
const FMapKeyView OriginalKey,
FMapKey  NewKey 
)
pure virtual

Updates the key of a row in the provided domain to a new value. Effectively this is the same as removing a key and adding a new one.

◆ RemoveAllRowsWith()

template<TColumnType... Columns>
void UE::Editor::DataStorage::ICoreProvider::RemoveAllRowsWith ( )

Removes all rows that have at least the provided columns as template arguments. This can be used to for instance remove all rows with a specific type tag, such as removing all rows with an entity tag to remove all entities from the data storage.

◆ RemoveAllRowsWithColumns()

virtual void UE::Editor::DataStorage::ICoreProvider::RemoveAllRowsWithColumns ( TConstArrayView< const UScriptStruct * >  Columns)
pure virtual

Removes all rows that have at least the provided columns. This can be used to for instance remove all rows with a specific type tag, such as removing all rows with an entity tag to remove all entities from the data storage.

◆ RemoveColumn() [1/8]

template<TEnumType EnumT>
void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row)

◆ RemoveColumn() [2/8]

template<TEnumType EnumT>
void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row)

◆ RemoveColumn() [3/8]

template<TDynamicColumnTemplate DynamicColumnTemplateType>
void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row,
const FName Identifier 
)

◆ RemoveColumn() [4/8]

template<>
void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row,
const FName Tag 
)

◆ RemoveColumn() [5/8]

template<>
void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row,
const FName Tag 
)
inline

◆ RemoveColumn() [6/8]

template<TDynamicColumnTemplate DynamicColumnTemplate>
void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row,
const FName Tag 
)
delete

◆ RemoveColumn() [7/8]

virtual void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row,
const FValueTag Tag 
)
pure virtual

Removes a value tag from the given row If tag does not exist on row, operation will do nothing.

◆ RemoveColumn() [8/8]

virtual void UE::Editor::DataStorage::ICoreProvider::RemoveColumn ( RowHandle  Row,
const UScriptStruct ColumnType 
)
pure virtual

Removes a column from a row or does nothing if already removed.

◆ RemoveColumns() [1/2]

template<TColumnType... Columns>
void UE::Editor::DataStorage::ICoreProvider::RemoveColumns ( RowHandle  Row)

◆ RemoveColumns() [2/2]

virtual void UE::Editor::DataStorage::ICoreProvider::RemoveColumns ( RowHandle  Row,
TConstArrayView< const UScriptStruct * >  Columns 
)
pure virtual

Removes multiple columns from a row. This is typically more efficient than adding columns one at a time.

◆ RemoveIndex()

void UE::Editor::DataStorage::ICoreProvider::RemoveIndex ( IndexHash  Index)
inline

◆ RemoveRow()

virtual void UE::Editor::DataStorage::ICoreProvider::RemoveRow ( RowHandle  Row)
pure virtual

Removes a previously reserved or added row. If the row handle is invalid or already removed, nothing happens

◆ RemoveRowMapping() [1/2]

void UE::Editor::DataStorage::ICoreProvider::RemoveRowMapping ( const FMapKeyView Key)
inline

◆ RemoveRowMapping() [2/2]

virtual void UE::Editor::DataStorage::ICoreProvider::RemoveRowMapping ( const FName Domain,
const FMapKeyView Key 
)
pure virtual

Removes a previously registered key in the provided domain from the mapping table or does nothing if the key no longer exists.

◆ ReserveRow()

virtual RowHandle UE::Editor::DataStorage::ICoreProvider::ReserveRow ( )
pure virtual

management

Reserves a row to be assigned to a table at a later point. If the row is no longer needed before it's been assigned to a table, it should still be released with RemoveRow.

◆ RunQuery() [1/6]

virtual FQueryResult UE::Editor::DataStorage::ICoreProvider::RunQuery ( QueryHandle  Query)
pure virtual

Directly runs a query. If the query handle is invalid or has been deleted nothing will happen.

◆ RunQuery() [2/6]

virtual FQueryResult UE::Editor::DataStorage::ICoreProvider::RunQuery ( QueryHandle  Query,
DirectQueryCallbackRef  Callback 
)
pure virtual

Directly runs a query. The callback will be called for batches of matching rows. During a single call to RunQuery the callback may be called multiple times. If the query handle is invalid or has been deleted nothing happens and the callback won't be called.

◆ RunQuery() [3/6]

virtual FQueryResult UE::Editor::DataStorage::ICoreProvider::RunQuery ( QueryHandle  Query,
EDirectQueryExecutionFlags  Flags,
DirectQueryCallbackRef  Callback 
)
pure virtual

Directly runs a query. The callback will be called for batches of matching rows. During a single call to RunQuery the callback may be called multiple times. If the query handle is invalid or has been deleted nothing happens and the callback won't be called.

◆ RunQuery() [4/6]

virtual FQueryResult UE::Editor::DataStorage::ICoreProvider::RunQuery ( QueryHandle  Query,
ERunQueryFlags  Flags,
const Queries::TQueryFunction< void > &  Callback 
)
pure virtual

Directly runs a query. The callback will be called for batches of matching rows. During a single call to RunQuery the callback may be called multiple times. If the query handle is invalid or has been deleted nothing happens and the callback won't be called.

◆ RunQuery() [5/6]

template<Queries::FunctionType Function>
FQueryResult UE::Editor::DataStorage::ICoreProvider::RunQuery ( QueryHandle  Query,
ERunQueryFlags  Flags,
Function &&  Callback 
)

Directly runs a query. The callback will be called for batches of matching rows. During a single call to RunQuery the callback may be called multiple times. If the query handle is invalid or has been deleted nothing happens and the callback won't be called.

◆ RunQuery() [6/6]

template<typename ResultType , Queries::FunctionType Function>
FQueryResult UE::Editor::DataStorage::ICoreProvider::RunQuery ( QueryHandle  Query,
ERunQueryFlags  Flags,
Queries::TResult< ResultType > &  Result,
Function &&  Callback 
)

Directly runs a query. The callback will be called for batches of matching rows. During a single call to RunQuery the callback may be called multiple times. If the query handle is invalid or has been deleted nothing happens and the callback won't be called.

◆ SetParentRow()

virtual void UE::Editor::DataStorage::ICoreProvider::SetParentRow ( FHierarchyHandle  InHierarchyHandle,
RowHandle  Target,
RowHandle  Parent 
)
pure virtual

◆ SetUnresolvedParent()

virtual void UE::Editor::DataStorage::ICoreProvider::SetUnresolvedParent ( FHierarchyHandle  InHierarchyHandle,
RowHandle  Target,
FMapKey  ParentId,
FName  MappingDomain 
)
pure virtual

Establishes a parent relationship between the Target row and a Parent that is not registered in TEDS yet. Every frame, TEDS will attempt to resolve the missing relation by looking up the parent using TEDS Mapping. An optional MaxFrameCount can be specified, which will be decremented every frame until the potential relationship is discarded

◆ SupportsExtension()

virtual bool UE::Editor::DataStorage::ICoreProvider::SupportsExtension ( FName  Extension) const
pure virtual

Check if a custom extension is supported. This can be used to check for in-development features, custom extensions, etc.

◆ UnregisterCooperativeUpdate()

virtual void UE::Editor::DataStorage::ICoreProvider::UnregisterCooperativeUpdate ( const FName TaskName)
pure virtual

Removes a previously registered time sliced callback.

◆ UnregisterQuery()

virtual void UE::Editor::DataStorage::ICoreProvider::UnregisterQuery ( QueryHandle  Query)
pure virtual

Removes a previous registered. If the query handle is invalid or the query has already been deleted nothing will happen.

◆ WalkDepthFirst()

virtual void UE::Editor::DataStorage::ICoreProvider::WalkDepthFirst ( FHierarchyHandle  InHierarchyHandle,
RowHandle  Row,
TFunction< void(const ICoreProvider &Context, RowHandle Owner, RowHandle Target)>  VisitFn 
) const
pure virtual

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