Here’s my .cpp file
#include "DataTableFunctionLibrary.h"
#include "SlavesOfRome.h"
bool UPsTableFunctionLibrary::GetDataTableIndexOfRow(FDataTableRowHandle Handle, int32& RowIndex)
{
RowIndex = INDEX_NONE;
if (!Handle.DataTable)
return false;
TArray<FName> RowNames = Handle.DataTable->GetRowNames();
RowIndex = RowNames.IndexOfByKey(Handle.RowName);
return RowIndex != INDEX_NONE;
}
bool UPsTableFunctionLibrary::GetDataTableRowByIndexWildcard(UDataTable* Table, int32 RowIndex, FTableRowBase& Row)
{
checkNoEntry();
return false;
}
bool UPsTableFunctionLibrary::Generic_GetDataTableRowByIndexWildcard(UDataTable* Table, int32 RowIndex, void* OutRowPtr, UStructProperty* OutRowProperty)
{
if (!OutRowPtr)
return false;
if (!OutRowProperty)
return false;
if (!Table)
return false;
TArray<FName> RowNames = Table->GetRowNames();
if (RowIndex < 0 || RowIndex >= RowNames.Num())
return false;
FName RowName = RowNames[RowIndex];
void* RowPtr = Table->FindRowUnchecked(RowName);
if (!RowPtr)
return false;
UScriptStruct* TableRowStruct = Table->RowStruct;
if (!TableRowStruct)
return false;
UScriptStruct* OutRowStruct = OutRowProperty->Struct;
if (!OutRowStruct)
return false;
if (!TableRowStruct->IsChildOf(OutRowStruct))
return false;
OutRowStruct->CopyScriptStruct(OutRowPtr, RowPtr);
return true;
}
bool UPsTableFunctionLibrary::GetDataTableRowByNameWildcard(UDataTable* Table, FName RowName, FTableRowBase& Row)
{
checkNoEntry();
return false;
}
bool UPsTableFunctionLibrary::Generic_GetDataTableRowByNameWildcard(UDataTable* Table, FName RowName, void* OutRowPtr, UStructProperty* OutRowProperty)
{
if (!OutRowPtr)
return false;
if (!OutRowProperty)
return false;
if (!Table)
return false;
void* RowPtr = Table->FindRowUnchecked(RowName);
if (!RowPtr)
return false;
UScriptStruct* TableRowStruct = Table->RowStruct;
if (!TableRowStruct)
return false;
UScriptStruct* OutRowStruct = OutRowProperty->Struct;
if (!OutRowStruct)
return false;
if (!TableRowStruct->IsChildOf(OutRowStruct))
return false;
OutRowStruct->CopyScriptStruct(OutRowPtr, RowPtr);
return true;
}
int32 UPsTableFunctionLibrary::GetDataTableRowCount(UDataTable* Table)
{
if (!Table)
return 0;
TArray<FName> RowNames = Table->GetRowNames();
return RowNames.Num();
}
bool UPsTableFunctionLibrary::GetDataTableRowWildcard(FDataTableRowHandle Handle, FTableRowBase& Row)
{
checkNoEntry();
return false;
}
bool UPsTableFunctionLibrary::Generic_GetDataTableRowWildcard(FDataTableRowHandle Handle, void* OutRowPtr, UStructProperty* OutRowProperty)
{
if (!OutRowPtr)
return false;
if (!OutRowProperty)
return false;
const UDataTable* Table = Handle.DataTable;
if (!Table)
return false;
void* RowPtr = Table->FindRowUnchecked(Handle.RowName);
if (!RowPtr)
return false;
UScriptStruct* TableRowStruct = Table->RowStruct;
if (!TableRowStruct)
return false;
UScriptStruct* OutRowStruct = OutRowProperty->Struct;
if (!OutRowStruct)
return false;
if (!TableRowStruct->IsChildOf(OutRowStruct))
return false;
OutRowStruct->CopyScriptStruct(OutRowPtr, RowPtr);
return true;
}