mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-25 03:40:40 +00:00
Read NiAdditionalGeometryData records
This commit is contained in:
parent
ecf644bda5
commit
9a2d385d87
@ -532,6 +532,44 @@ namespace Nif
|
|||||||
mKeyList->read(nif);
|
mKeyList->read(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NiAdditionalGeometryData::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
nif->read(mNumVertices);
|
||||||
|
mBlockInfos.resize(nif->get<uint32_t>());
|
||||||
|
for (DataStream& info : mBlockInfos)
|
||||||
|
info.read(nif);
|
||||||
|
mBlocks.resize(nif->get<uint32_t>());
|
||||||
|
for (DataBlock& block : mBlocks)
|
||||||
|
block.read(nif, recType == RC_BSPackedAdditionalGeometryData);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiAdditionalGeometryData::DataStream::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
nif->read(mType);
|
||||||
|
nif->read(mUnitSize);
|
||||||
|
nif->read(mTotalSize);
|
||||||
|
nif->read(mStride);
|
||||||
|
nif->read(mBlockIndex);
|
||||||
|
nif->read(mBlockOffset);
|
||||||
|
nif->read(mFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiAdditionalGeometryData::DataBlock::read(NIFStream* nif, bool bsPacked)
|
||||||
|
{
|
||||||
|
nif->read(mValid);
|
||||||
|
if (!mValid)
|
||||||
|
return;
|
||||||
|
nif->read(mBlockSize);
|
||||||
|
nif->readVector(mBlockOffsets, nif->get<uint32_t>());
|
||||||
|
nif->readVector(mDataSizes, nif->get<uint32_t>());
|
||||||
|
nif->readVector(mData, mDataSizes.size() * mBlockSize);
|
||||||
|
if (bsPacked)
|
||||||
|
{
|
||||||
|
nif->read(mShaderIndex);
|
||||||
|
nif->read(mTotalSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BSMultiBound::read(NIFStream* nif)
|
void BSMultiBound::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
mData.read(nif);
|
mData.read(nif);
|
||||||
|
@ -362,6 +362,41 @@ namespace Nif
|
|||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct NiAdditionalGeometryData : public Record
|
||||||
|
{
|
||||||
|
struct DataStream
|
||||||
|
{
|
||||||
|
uint32_t mType;
|
||||||
|
uint32_t mUnitSize;
|
||||||
|
uint32_t mTotalSize;
|
||||||
|
uint32_t mStride;
|
||||||
|
uint32_t mBlockIndex;
|
||||||
|
uint32_t mBlockOffset;
|
||||||
|
uint8_t mFlags;
|
||||||
|
|
||||||
|
void read(NIFStream* nif);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DataBlock
|
||||||
|
{
|
||||||
|
bool mValid;
|
||||||
|
uint32_t mBlockSize;
|
||||||
|
std::vector<uint32_t> mBlockOffsets;
|
||||||
|
std::vector<uint32_t> mDataSizes;
|
||||||
|
std::vector<char> mData;
|
||||||
|
uint32_t mShaderIndex;
|
||||||
|
uint32_t mTotalSize;
|
||||||
|
|
||||||
|
void read(NIFStream* nif, bool bsPacked);
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t mNumVertices;
|
||||||
|
std::vector<DataStream> mBlockInfos;
|
||||||
|
std::vector<DataBlock> mBlocks;
|
||||||
|
|
||||||
|
void read(NIFStream* nif);
|
||||||
|
};
|
||||||
|
|
||||||
struct BSMultiBound : public Record
|
struct BSMultiBound : public Record
|
||||||
{
|
{
|
||||||
BSMultiBoundDataPtr mData;
|
BSMultiBoundDataPtr mData;
|
||||||
|
@ -169,11 +169,13 @@ namespace Nif
|
|||||||
{ "NiVisData", &construct<NiVisData, RC_NiVisData> },
|
{ "NiVisData", &construct<NiVisData, RC_NiVisData> },
|
||||||
|
|
||||||
// Gamebryo
|
// Gamebryo
|
||||||
|
{ "NiAdditionalGeometryData", &construct<NiAdditionalGeometryData, RC_NiAdditionalGeometryData> },
|
||||||
{ "NiBoolData", &construct<NiBoolData, RC_NiBoolData> },
|
{ "NiBoolData", &construct<NiBoolData, RC_NiBoolData> },
|
||||||
{ "NiDefaultAVObjectPalette", &construct<NiDefaultAVObjectPalette, RC_NiDefaultAVObjectPalette> },
|
{ "NiDefaultAVObjectPalette", &construct<NiDefaultAVObjectPalette, RC_NiDefaultAVObjectPalette> },
|
||||||
{ "NiTransformData", &construct<NiKeyframeData, RC_NiKeyframeData> },
|
{ "NiTransformData", &construct<NiKeyframeData, RC_NiKeyframeData> },
|
||||||
|
|
||||||
// Bethesda
|
// Bethesda
|
||||||
|
{ "BSPackedAdditionalGeometryData", &construct<NiAdditionalGeometryData, RC_BSPackedAdditionalGeometryData> },
|
||||||
{ "BSShaderTextureSet", &construct<BSShaderTextureSet, RC_BSShaderTextureSet> },
|
{ "BSShaderTextureSet", &construct<BSShaderTextureSet, RC_BSShaderTextureSet> },
|
||||||
|
|
||||||
// DYNAMIC EFFECTS
|
// DYNAMIC EFFECTS
|
||||||
|
@ -84,6 +84,7 @@ namespace Nif
|
|||||||
RC_BSMultiBoundAABB,
|
RC_BSMultiBoundAABB,
|
||||||
RC_BSMultiBoundOBB,
|
RC_BSMultiBoundOBB,
|
||||||
RC_BSMultiBoundSphere,
|
RC_BSMultiBoundSphere,
|
||||||
|
RC_BSPackedAdditionalGeometryData,
|
||||||
RC_BSRefractionFirePeriodController,
|
RC_BSRefractionFirePeriodController,
|
||||||
RC_BSRefractionStrengthController,
|
RC_BSRefractionStrengthController,
|
||||||
RC_BSShaderNoLightingProperty,
|
RC_BSShaderNoLightingProperty,
|
||||||
@ -96,6 +97,7 @@ namespace Nif
|
|||||||
RC_DistantLODShaderProperty,
|
RC_DistantLODShaderProperty,
|
||||||
RC_HairShaderProperty,
|
RC_HairShaderProperty,
|
||||||
RC_hkPackedNiTriStripsData,
|
RC_hkPackedNiTriStripsData,
|
||||||
|
RC_NiAdditionalGeometryData,
|
||||||
RC_NiAlphaAccumulator,
|
RC_NiAlphaAccumulator,
|
||||||
RC_NiAlphaController,
|
RC_NiAlphaController,
|
||||||
RC_NiAlphaProperty,
|
RC_NiAlphaProperty,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user