mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-16 08:09:42 +00:00
Handle NiExtraData *properly*
This commit is contained in:
parent
5a434aebe0
commit
66a1adc31e
4 changed files with 17 additions and 2 deletions
|
@ -15,6 +15,7 @@ struct Extra : public Record
|
||||||
{
|
{
|
||||||
std::string name;
|
std::string name;
|
||||||
ExtraPtr next; // Next extra data record in the list
|
ExtraPtr next; // Next extra data record in the list
|
||||||
|
unsigned int recordSize{0u};
|
||||||
|
|
||||||
void read(NIFStream *nif) override
|
void read(NIFStream *nif) override
|
||||||
{
|
{
|
||||||
|
@ -23,7 +24,7 @@ struct Extra : public Record
|
||||||
else if (nif->getVersion() <= NIFStream::generateVersion(4,2,2,0))
|
else if (nif->getVersion() <= NIFStream::generateVersion(4,2,2,0))
|
||||||
{
|
{
|
||||||
next.read(nif);
|
next.read(nif);
|
||||||
nif->getUInt(); // Size of the record
|
recordSize = nif->getUInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,13 @@
|
||||||
namespace Nif
|
namespace Nif
|
||||||
{
|
{
|
||||||
|
|
||||||
|
void NiExtraData::read(NIFStream *nif)
|
||||||
|
{
|
||||||
|
Extra::read(nif);
|
||||||
|
if (recordSize)
|
||||||
|
nif->getChars(data, recordSize);
|
||||||
|
}
|
||||||
|
|
||||||
void NiStringExtraData::read(NIFStream *nif)
|
void NiStringExtraData::read(NIFStream *nif)
|
||||||
{
|
{
|
||||||
Extra::read(nif);
|
Extra::read(nif);
|
||||||
|
|
|
@ -29,6 +29,13 @@
|
||||||
namespace Nif
|
namespace Nif
|
||||||
{
|
{
|
||||||
|
|
||||||
|
struct NiExtraData : public Extra
|
||||||
|
{
|
||||||
|
std::vector<char> data;
|
||||||
|
|
||||||
|
void read(NIFStream *nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
struct NiVertWeightsExtraData : public Extra
|
struct NiVertWeightsExtraData : public Extra
|
||||||
{
|
{
|
||||||
void read(NIFStream *nif) override;
|
void read(NIFStream *nif) override;
|
||||||
|
|
|
@ -79,7 +79,7 @@ static std::map<std::string,RecordFactoryEntry> makeFactory()
|
||||||
factory["NiPointLight"] = {&construct <NiPointLight> , RC_NiLight };
|
factory["NiPointLight"] = {&construct <NiPointLight> , RC_NiLight };
|
||||||
factory["NiSpotLight"] = {&construct <NiSpotLight> , RC_NiLight };
|
factory["NiSpotLight"] = {&construct <NiSpotLight> , RC_NiLight };
|
||||||
factory["NiTextureEffect"] = {&construct <NiTextureEffect> , RC_NiTextureEffect };
|
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["NiVertWeightsExtraData"] = {&construct <NiVertWeightsExtraData> , RC_NiVertWeightsExtraData };
|
||||||
factory["NiTextKeyExtraData"] = {&construct <NiTextKeyExtraData> , RC_NiTextKeyExtraData };
|
factory["NiTextKeyExtraData"] = {&construct <NiTextKeyExtraData> , RC_NiTextKeyExtraData };
|
||||||
factory["NiStringExtraData"] = {&construct <NiStringExtraData> , RC_NiStringExtraData };
|
factory["NiStringExtraData"] = {&construct <NiStringExtraData> , RC_NiStringExtraData };
|
||||||
|
|
Loading…
Reference in a new issue