1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-01 04:45:36 +00:00

Merge branch 'somethingextra' into 'master'

Handle NiExtraData *properly*

See merge request OpenMW/openmw!1059
This commit is contained in:
psi29a 2021-07-27 07:11:15 +00:00
commit 1e7b9fb6a5
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 };