mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-30 08:15:37 +00:00
Read NiBSplineData/NiBSplineBasisData
This commit is contained in:
parent
f595015ffc
commit
5c6fca14c1
7 changed files with 60 additions and 0 deletions
|
@ -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…
Reference in a new issue