bool FDataTableExporterJSON::WriteStruct(const UScriptStruct* InStruct, const void* InStructData)
{
	for (TFieldIterator<const UProperty> It(InStruct); It; ++It)
	{
		const UProperty* BaseProp = *It;
		check(BaseProp);

		if (BaseProp->ArrayDim == 1)
		{
			const void* Data = BaseProp->ContainerPtrToValuePtr<void>(InStructData, 0);
			WriteStructEntry(InStructData, BaseProp, Data);
		}
		else
		{
			const FString Identifier = DataTableUtils::GetPropertyExportName(BaseProp, DTExportFlags);

			JsonWriter->WriteArrayStart(Identifier);

			for (int32 ArrayEntryIndex = 0; ArrayEntryIndex < BaseProp->ArrayDim; ++ArrayEntryIndex)
			{
				const void* Data = BaseProp->ContainerPtrToValuePtr<void>(InStructData, ArrayEntryIndex);
				WriteArrayEntry(BaseProp, Data);
			}

			JsonWriter->WriteArrayEnd();
		}
	}

	return true;
}
Exemplo n.º 2
0
bool FDataTableExporterJSON::WriteRow(const void* InRowData)
{
	if (!DataTable->RowStruct)
	{
		return false;
	}

	for (TFieldIterator<UProperty> It(DataTable->RowStruct); It; ++It)
	{
		UProperty* BaseProp = *It;
		check(BaseProp);

		const void* Data = BaseProp->ContainerPtrToValuePtr<void>(InRowData, 0);
		WriteStructEntry(InRowData, BaseProp, Data);
	}

	return true;
}