Fix StructuredDataDefDumper not dumping empty structs or arrays

This commit is contained in:
Jan 2022-01-22 14:29:07 +01:00
parent 8aba79faf9
commit 5327ce8ec9

View File

@ -111,14 +111,13 @@ bool AssetDumperStructuredDataDefSet::ShouldDump(XAssetInfo<StructuredDataDefSet
void AssetDumperStructuredDataDefSet::DumpEnum(StructuredDataDefDumper& dumper, const int enumIndex, const StructuredDataEnum* _enum) void AssetDumperStructuredDataDefSet::DumpEnum(StructuredDataDefDumper& dumper, const int enumIndex, const StructuredDataEnum* _enum)
{ {
if (!_enum->entries || _enum->entryCount <= 0)
return;
std::ostringstream ss; std::ostringstream ss;
ss << "ENUM_" << enumIndex; ss << "ENUM_" << enumIndex;
dumper.BeginEnum(ss.str(), static_cast<size_t>(_enum->entryCount), static_cast<size_t>(_enum->reservedEntryCount)); dumper.BeginEnum(ss.str(), static_cast<size_t>(_enum->entryCount), static_cast<size_t>(_enum->reservedEntryCount));
if(_enum->entries && _enum->entryCount > 0)
{
for (auto i = 0; i < _enum->entryCount; i++) for (auto i = 0; i < _enum->entryCount; i++)
{ {
const auto& entry = _enum->entries[i]; const auto& entry = _enum->entries[i];
@ -129,6 +128,7 @@ void AssetDumperStructuredDataDefSet::DumpEnum(StructuredDataDefDumper& dumper,
dumper.WriteEnumEntry(entry.string, entry.index); dumper.WriteEnumEntry(entry.string, entry.index);
} }
}
dumper.EndEnum(); dumper.EndEnum();
} }
@ -244,9 +244,6 @@ void AssetDumperStructuredDataDefSet::DumpProperty(StructuredDataDefDumper& dump
void AssetDumperStructuredDataDefSet::DumpStruct(StructuredDataDefDumper& dumper, const size_t structIndex, const StructuredDataStruct* _struct, const StructuredDataDef* def, const int rootStructIndex) void AssetDumperStructuredDataDefSet::DumpStruct(StructuredDataDefDumper& dumper, const size_t structIndex, const StructuredDataStruct* _struct, const StructuredDataDef* def, const int rootStructIndex)
{ {
if (!_struct->properties || _struct->propertyCount <= 0)
return;
std::string structName; std::string structName;
if (static_cast<int>(structIndex) == rootStructIndex) if (static_cast<int>(structIndex) == rootStructIndex)
{ {
@ -263,12 +260,15 @@ void AssetDumperStructuredDataDefSet::DumpStruct(StructuredDataDefDumper& dumper
dumper.WriteLineComment("Size: "s + std::to_string(_struct->size)); dumper.WriteLineComment("Size: "s + std::to_string(_struct->size));
dumper.BeginStruct(structName, static_cast<size_t>(_struct->propertyCount)); dumper.BeginStruct(structName, static_cast<size_t>(_struct->propertyCount));
if(_struct->properties && _struct->propertyCount > 0)
{
for (auto i = 0; i < _struct->propertyCount; i++) for (auto i = 0; i < _struct->propertyCount; i++)
{ {
const auto& property = _struct->properties[i]; const auto& property = _struct->properties[i];
DumpProperty(dumper, property, def, rootStructIndex); DumpProperty(dumper, property, def, rootStructIndex);
} }
}
dumper.EndStruct(); dumper.EndStruct();
} }