Read NiBSplineData/NiBSplineBasisData

i-have-no-land-and-i-must-scream
Alexei Kotov 8 months ago
parent f595015ffc
commit 5c6fca14c1

@ -793,4 +793,18 @@ namespace Nif
mInterpolator.post(nif);
}
void NiBSplineInterpolator::read(NIFStream* nif)
{
nif->read(mStartTime);
nif->read(mStopTime);
mSplineData.read(nif);
mBasisData.read(nif);
}
void NiBSplineInterpolator::post(Reader& nif)
{
mSplineData.post(nif);
mBasisData.post(nif);
}
}

@ -548,5 +548,17 @@ namespace Nif
using NiBlendPoint3Interpolator = TypedNiBlendInterpolator<osg::Vec3f>;
using NiBlendTransformInterpolator = TypedNiBlendInterpolator<NiQuatTransform>;
// Abstract
struct NiBSplineInterpolator : public NiInterpolator
{
float mStartTime;
float mStopTime;
NiBSplineDataPtr mSplineData;
NiBSplineBasisDataPtr mBasisData;
void read(NIFStream* nif) override;
void post(Reader& nif) override;
};
}
#endif

@ -537,6 +537,17 @@ namespace Nif
mKeyList->read(nif);
}
void NiBSplineData::read(NIFStream* nif)
{
nif->readVector(mFloatControlPoints, nif->get<uint32_t>());
nif->readVector(mCompactControlPoints, nif->get<uint32_t>());
}
void NiBSplineBasisData::read(NIFStream* nif)
{
nif->read(mNumControlPoints);
}
void NiAdditionalGeometryData::read(NIFStream* nif)
{
nif->read(mNumVertices);

@ -362,6 +362,21 @@ namespace Nif
void read(NIFStream* nif) override;
};
struct NiBSplineData : public Record
{
std::vector<float> mFloatControlPoints;
std::vector<int16_t> mCompactControlPoints;
void read(NIFStream* nif) override;
};
struct NiBSplineBasisData : public Record
{
uint32_t mNumControlPoints;
void read(NIFStream* nif) override;
};
struct NiAdditionalGeometryData : public Record
{
struct DataStream

@ -195,6 +195,8 @@ namespace Nif
// Gamebryo
{ "NiAdditionalGeometryData", &construct<NiAdditionalGeometryData, RC_NiAdditionalGeometryData> },
{ "NiBoolData", &construct<NiBoolData, RC_NiBoolData> },
{ "NiBSplineData", &construct<NiBSplineData, RC_NiBSplineData> },
{ "NiBSplineBasisData", &construct<NiBSplineBasisData, RC_NiBSplineBasisData> },
{ "NiDefaultAVObjectPalette", &construct<NiDefaultAVObjectPalette, RC_NiDefaultAVObjectPalette> },
{ "NiTransformData", &construct<NiKeyframeData, RC_NiKeyframeData> },

@ -162,6 +162,8 @@ namespace Nif
RC_NiBSAnimationNode,
RC_NiBSPArrayController,
RC_NiBSParticleNode,
RC_NiBSplineData,
RC_NiBSplineBasisData,
RC_NiCamera,
RC_NiClusterAccumulator,
RC_NiCollisionObject,

@ -137,6 +137,8 @@ namespace Nif
struct NiPSysModifier;
struct NiPSysSpawnModifier;
struct NiBoolData;
struct NiBSplineData;
struct NiBSplineBasisData;
struct NiSkinPartition;
struct BSShaderTextureSet;
struct NiTriBasedGeom;
@ -189,6 +191,8 @@ namespace Nif
using NiPSysModifierPtr = RecordPtrT<NiPSysModifier>;
using NiPSysSpawnModifierPtr = RecordPtrT<NiPSysSpawnModifier>;
using NiBoolDataPtr = RecordPtrT<NiBoolData>;
using NiBSplineDataPtr = RecordPtrT<NiBSplineData>;
using NiBSplineBasisDataPtr = RecordPtrT<NiBSplineBasisData>;
using NiSkinPartitionPtr = RecordPtrT<NiSkinPartition>;
using BSShaderTextureSetPtr = RecordPtrT<BSShaderTextureSet>;
using NiTriBasedGeomPtr = RecordPtrT<NiTriBasedGeom>;

Loading…
Cancel
Save