1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-20 15:40:32 +00:00

Load ESM4 idle animations correctly for every game

This commit is contained in:
Alexei Kotov 2023-08-17 03:56:23 +03:00
parent 07c85addb2
commit 9ec68e864c
2 changed files with 26 additions and 5 deletions

View File

@ -334,8 +334,7 @@ namespace EsmTool
readTypedRecord<ESM4::HeadPart>(params, reader);
return true;
case ESM4::REC_IDLE:
// FIXME: ESM4::IdleAnimation::load does not work with Oblivion.esm
// readTypedRecord<ESM4::IdleAnimation>(params, reader);
readTypedRecord<ESM4::IdleAnimation>(params, reader);
return true;
break;
case ESM4::REC_IDLM:

View File

@ -51,9 +51,24 @@ void ESM4::IdleAnimation::load(ESM4::Reader& reader)
reader.getZString(mEvent);
break;
case ESM4::SUB_ANAM:
reader.getFormId(mParent);
reader.getFormId(mPrevious);
{
if (subHdr.dataSize == 8)
{
reader.getFormId(mParent);
reader.getFormId(mPrevious);
}
// Animation Group Section. TES4 stores the IDs above in DATA
else if (subHdr.dataSize == 1)
{
uint8_t dummy;
reader.get(dummy);
}
else
{
reader.skipSubRecordData();
}
break;
}
case ESM4::SUB_MODL:
reader.getZString(mModel);
break;
@ -61,7 +76,14 @@ void ESM4::IdleAnimation::load(ESM4::Reader& reader)
reader.get(mBoundRadius);
break;
case ESM4::SUB_CTDA: // formId
case ESM4::SUB_DATA: // formId
case ESM4::SUB_CTDT:
case ESM4::SUB_CIS1:
case ESM4::SUB_CIS2:
case ESM4::SUB_DATA:
case ESM4::SUB_MODD:
case ESM4::SUB_MODS:
case ESM4::SUB_MODT:
case ESM4::SUB_GNAM: // FO4
reader.skipSubRecordData();
break;
default: