[Demo Video Link]
Dynamic Datatable is a full Data Table replacement blueprint library, allowing you to edit freely at runtime and even combine existing tables. It can Export and Import as CSV. You can simply add an existing Data Table to a dynamic one, so there's minimal change in workflow. Blueprint functions written in C++, full source included (source code is undocumented).
UPCOMING
- Big update coming shortly, over 60 functions in total, new ones feature math evaluation, reinterpreting structs, caching, diff'ing tables, adding all tables from a composite Data Table, a basic table editor, and async nodes. Each of these features have been tested. (written on feb 21, 2023)
(5.1 is updated, 5.0 and 4.27 need some work still.)
Use any Struct
You can use any structure, it even tolerates 'casting' to another struct with similar parameters. All struct pins are wildcards, simply connect a "Break" or "Make" node of the structure you want to use.
Combine Tables
Combine tables simply by calling Add Rows From Data Table for each table. It will keep track of what row was added from which table, streamlining things like having 50 item type tables (swords, bows, axes, etc.) you'd be able to tell what an item is, based on which table it came from.
CSV
Make a CSV string with Convert Table To Csv String, the format is modeled after the built in Data Table CSV export. This may lose some data but should work for the great majority of variable types. This string can be used to fill a Data Table or a Dynamic Table using their respective methods, the dynamic one is Add Rows From Csv String. CSV is intended to work with Unreal, I cannot guarantee it'll work with spreadsheet software.
Dynamic Datatable is meant to be used alongside built in Data Tables especially for data entry, but it can be used entirely separate from them as well.
QUICKSTART
Show plugin content and engine content in the Content Browser
Find the DynamicDatatable Content folder and open the READ_ME file
TL;DR QUICKSTART
Use "Add Rows from Data Table" and "Get Row from Table". Simply right click on the Table pin to create a variable (Promote to Variable) All functions are in the category "Dynamic Datatable"
Support: Vyrulentstudios@gmail.com
Functions List: ( int32& are wildcards )
- void AddRowToTable(FDynamicTable& Table, FName RowName, const int32& Row, UDataTable* Source)
- void GetRowFromTable(FDynamicTable& Table, FName RowName, int32& Row, UDataTable*& Source)
- void GetRowFromTable_Pure(FDynamicTable& Table, FName RowName, int32& Row)
- void DeleteTableRow(FDynamicTable& Table, FName RowName)
- void DeleteTableRowAtIndex(FDynamicTable& Table, int Index)
- void ClearTable(FDynamicTable& Table)
- bool TableRowExists(FDynamicTable& Table, FName RowName)
- TArray<FName> GetRowNamesFromTable(FDynamicTable& Table)
- void AddRowsFromDataTable(FDynamicTable& Table, UDataTable* Source)
- int GetSizeOfTable(FDynamicTable& Table)
- int GetSizeFromSourceTable(FDynamicTable& Table, UDataTable* Source)
- TArray<FName> GetRowNamesFromSourceTable(FDynamicTable& Table, UDataTable* Source)
- FString ConvertTableToCsvString(FDynamicTable& Table)
- void AddRowsFromCsvString(FDynamicTable& Table,FString& Csv)
- FDynamicTable CreateDynamicTable(int32& BaseStruct)
- void SetTableType(FDynamicTable& Table,int32& BaseStruct)
- bool IsTableType(FDynamicTable& Table,int32& BaseStruct)
- bool TableHasAnyType(FDynamicTable& Table)
- void GetRowFromTableAtIndex(FDynamicTable& Table, int Index, int32& Row, UDataTable*& Source)
- void GetRowFromTableAtIndex_Pure(FDynamicTable& Table, int Index, int32& Row)
- void GetAllRowsFromTable(FDynamicTable& Table, TArray<int32>& Rows)
- void GetAllRowsFromTableRowNames(FDynamicTable& Table, TArray<int32>& Rows,TArray<FName>& RowNames)
- TArray<FName> GetRowNamesFromSourceTableName(FDynamicTable& Table, FString SourceName)