1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-15 08:09:43 +00:00

Handle NiExtraData *properly*

This commit is contained in:
Alexei Dobrohotov 2021-07-27 07:58:57 +03:00
parent 5a434aebe0
commit 66a1adc31e
4 changed files with 17 additions and 2 deletions

View file

@ -15,6 +15,7 @@ struct Extra : public Record
{
std::string name;
ExtraPtr next; // Next extra data record in the list
unsigned int recordSize{0u};
void read(NIFStream *nif) override
{
@ -23,7 +24,7 @@ struct Extra : public Record
else if (nif->getVersion() <= NIFStream::generateVersion(4,2,2,0))
{
next.read(nif);
nif->getUInt(); // Size of the record
recordSize = nif->getUInt();
}
}

View file

@ -3,6 +3,13 @@
namespace Nif
{
void NiExtraData::read(NIFStream *nif)
{
Extra::read(nif);
if (recordSize)
nif->getChars(data, recordSize);
}
void NiStringExtraData::read(NIFStream *nif)
{
Extra::read(nif);

View file

@ -29,6 +29,13 @@
namespace Nif
{
struct NiExtraData : public Extra
{
std::vector<char> data;
void read(NIFStream *nif) override;
};
struct NiVertWeightsExtraData : public Extra
{
void read(NIFStream *nif) override;

View file

@ -79,7 +79,7 @@ static std::map<std::string,RecordFactoryEntry> makeFactory()
factory["NiPointLight"] = {&construct <NiPointLight> , RC_NiLight };
factory["NiSpotLight"] = {&construct <NiSpotLight> , RC_NiLight };
factory["NiTextureEffect"] = {&construct <NiTextureEffect> , RC_NiTextureEffect };
factory["NiExtraData"] = {&construct <Extra> , RC_NiExtraData };
factory["NiExtraData"] = {&construct <NiExtraData> , RC_NiExtraData };
factory["NiVertWeightsExtraData"] = {&construct <NiVertWeightsExtraData> , RC_NiVertWeightsExtraData };
factory["NiTextKeyExtraData"] = {&construct <NiTextKeyExtraData> , RC_NiTextKeyExtraData };
factory["NiStringExtraData"] = {&construct <NiStringExtraData> , RC_NiStringExtraData };