fix some issue

- remove unnecessary macro in BMap, Unvirt and IronPad.
- add mtl slots display for mesh.
- fix potential nullptr issue in CKStateChunk buffer reader.
This commit is contained in:
2023-09-26 20:51:16 +08:00
parent 42b9ddaec6
commit b217da8fb8
5 changed files with 31 additions and 14 deletions

View File

@ -337,6 +337,23 @@ namespace Unvirt::StructFormatter {
PrintPointer(obj->GetFaceMaterialSlotIndexs());
fprintf(stdout, "\t0x%" PRIxCKDWORD " bytes\tMaterialSlotIndexs\n", obj->GetFaceCount() * CKSizeof(LibCmo::CKWORD));
// mtl slot data
fputs("== Material Slot ==\n", stdout);
LibCmo::CKDWORD slotcount = obj->GetMaterialSlotCount();
LibCmo::CK2::ObjImpls::CKMaterial** pMtlSlots = obj->GetMaterialSlots();
fprintf(stdout, "Material Slot Count: %" PRIuCKDWORD "\n", slotcount);
fputs("Index\tAddress\tName\n", stdout);
for (LibCmo::CKDWORD i = 0; i < slotcount; ++i) {
LibCmo::CK2::ObjImpls::CKMaterial* mtl = pMtlSlots[i];
fprintf(stdout, "#%" PRIuCKDWORD "\t", i);
PrintPointer(mtl);
fputc('\t', stdout);
if (mtl != nullptr)
PrintCKSTRING(mtl->GetName());
fputc('\n', stdout);
}
}
#pragma endregion