mirror of
https://github.com/OpenMW/openmw.git
synced 2025-06-19 13:11:32 +00:00
Read BSMultiBound et al.
This commit is contained in:
parent
3e8a9d1de4
commit
1b5e904285
8 changed files with 88 additions and 0 deletions
|
@ -484,4 +484,27 @@ namespace Nif
|
||||||
mKeyList->read(nif);
|
mKeyList->read(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BSMultiBound::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
mData.read(nif);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BSMultiBound::post(Reader& nif)
|
||||||
|
{
|
||||||
|
mData.post(nif);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BSMultiBoundOBB::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
mCenter = nif->getVector3();
|
||||||
|
mSize = nif->getVector3();
|
||||||
|
mRotation = nif->getMatrix3();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BSMultiBoundSphere::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
mCenter = nif->getVector3();
|
||||||
|
mRadius = nif->getFloat();
|
||||||
|
}
|
||||||
|
|
||||||
} // Namespace
|
} // Namespace
|
||||||
|
|
|
@ -288,5 +288,35 @@ namespace Nif
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct BSMultiBound : public Record
|
||||||
|
{
|
||||||
|
BSMultiBoundDataPtr mData;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
void post(Reader& nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Abstract
|
||||||
|
struct BSMultiBoundData : public Record
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BSMultiBoundOBB : public BSMultiBoundData
|
||||||
|
{
|
||||||
|
osg::Vec3f mCenter;
|
||||||
|
osg::Vec3f mSize;
|
||||||
|
Nif::Matrix3 mRotation;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BSMultiBoundSphere : public BSMultiBoundData
|
||||||
|
{
|
||||||
|
osg::Vec3f mCenter;
|
||||||
|
float mRadius;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
} // Namespace
|
} // Namespace
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -139,6 +139,7 @@ namespace Nif
|
||||||
{ "BSFadeNode", &construct<NiNode, RC_NiNode> },
|
{ "BSFadeNode", &construct<NiNode, RC_NiNode> },
|
||||||
{ "BSLeafAnimNode", &construct<NiNode, RC_NiNode> },
|
{ "BSLeafAnimNode", &construct<NiNode, RC_NiNode> },
|
||||||
{ "BSTreeNode", &construct<BSTreeNode, RC_NiNode> },
|
{ "BSTreeNode", &construct<BSTreeNode, RC_NiNode> },
|
||||||
|
{ "BSMultiBoundNode", &construct<BSMultiBoundNode, RC_NiNode> },
|
||||||
{ "bhkBlendController", &construct<bhkBlendController, RC_bhkBlendController> },
|
{ "bhkBlendController", &construct<bhkBlendController, RC_bhkBlendController> },
|
||||||
{ "NiFloatInterpolator", &construct<NiFloatInterpolator, RC_NiFloatInterpolator> },
|
{ "NiFloatInterpolator", &construct<NiFloatInterpolator, RC_NiFloatInterpolator> },
|
||||||
{ "NiBoolInterpolator", &construct<NiBoolInterpolator, RC_NiBoolInterpolator> },
|
{ "NiBoolInterpolator", &construct<NiBoolInterpolator, RC_NiBoolInterpolator> },
|
||||||
|
@ -186,6 +187,9 @@ namespace Nif
|
||||||
&construct<NiBlendTransformInterpolator, RC_NiBlendTransformInterpolator> },
|
&construct<NiBlendTransformInterpolator, RC_NiBlendTransformInterpolator> },
|
||||||
{ "bhkCompressedMeshShape", &construct<bhkCompressedMeshShape, RC_bhkCompressedMeshShape> },
|
{ "bhkCompressedMeshShape", &construct<bhkCompressedMeshShape, RC_bhkCompressedMeshShape> },
|
||||||
{ "bhkCompressedMeshShapeData", &construct<bhkCompressedMeshShapeData, RC_bhkCompressedMeshShapeData> },
|
{ "bhkCompressedMeshShapeData", &construct<bhkCompressedMeshShapeData, RC_bhkCompressedMeshShapeData> },
|
||||||
|
{ "BSMultiBound", &construct<BSMultiBound, RC_BSMultiBound> },
|
||||||
|
{ "BSMultiBoundOBB", &construct<BSMultiBoundOBB, RC_BSMultiBoundOBB> },
|
||||||
|
{ "BSMultiBoundSphere", &construct<BSMultiBoundSphere, RC_BSMultiBoundSphere> },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ namespace Nif
|
||||||
enum BethVersion
|
enum BethVersion
|
||||||
{
|
{
|
||||||
BETHVER_FO3 = 34, // Fallout 3
|
BETHVER_FO3 = 34, // Fallout 3
|
||||||
|
BETHVER_SKY = 83, // Skyrim
|
||||||
BETHVER_FO4 = 130 // Fallout 4
|
BETHVER_FO4 = 130 // Fallout 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -320,4 +320,18 @@ namespace Nif
|
||||||
postRecordList(nif, mBones1);
|
postRecordList(nif, mBones1);
|
||||||
postRecordList(nif, mBones2);
|
postRecordList(nif, mBones2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BSMultiBoundNode::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiNode::read(nif);
|
||||||
|
mMultiBound.read(nif);
|
||||||
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_SKY)
|
||||||
|
mType = nif->getUInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BSMultiBoundNode::post(Reader& nif)
|
||||||
|
{
|
||||||
|
NiNode::post(nif);
|
||||||
|
mMultiBound.post(nif);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,5 +291,14 @@ namespace Nif
|
||||||
void post(Reader& nif) override;
|
void post(Reader& nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct BSMultiBoundNode : NiNode
|
||||||
|
{
|
||||||
|
BSMultiBoundPtr mMultiBound;
|
||||||
|
unsigned int mType{ 0 };
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
void post(Reader& nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
} // Namespace
|
} // Namespace
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -159,6 +159,9 @@ namespace Nif
|
||||||
RC_NiBlendTransformInterpolator,
|
RC_NiBlendTransformInterpolator,
|
||||||
RC_bhkCompressedMeshShape,
|
RC_bhkCompressedMeshShape,
|
||||||
RC_bhkCompressedMeshShapeData,
|
RC_bhkCompressedMeshShapeData,
|
||||||
|
RC_BSMultiBound,
|
||||||
|
RC_BSMultiBoundOBB,
|
||||||
|
RC_BSMultiBoundSphere,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Base class for all records
|
/// Base class for all records
|
||||||
|
|
|
@ -146,6 +146,8 @@ namespace Nif
|
||||||
struct NiDefaultAVObjectPalette;
|
struct NiDefaultAVObjectPalette;
|
||||||
struct NiControllerSequence;
|
struct NiControllerSequence;
|
||||||
struct bhkCompressedMeshShapeData;
|
struct bhkCompressedMeshShapeData;
|
||||||
|
struct BSMultiBound;
|
||||||
|
struct BSMultiBoundData;
|
||||||
|
|
||||||
using NodePtr = RecordPtrT<Node>;
|
using NodePtr = RecordPtrT<Node>;
|
||||||
using ExtraPtr = RecordPtrT<Extra>;
|
using ExtraPtr = RecordPtrT<Extra>;
|
||||||
|
@ -181,6 +183,8 @@ namespace Nif
|
||||||
using NiBlendInterpolatorPtr = RecordPtrT<NiBlendInterpolator>;
|
using NiBlendInterpolatorPtr = RecordPtrT<NiBlendInterpolator>;
|
||||||
using NiDefaultAVObjectPalettePtr = RecordPtrT<NiDefaultAVObjectPalette>;
|
using NiDefaultAVObjectPalettePtr = RecordPtrT<NiDefaultAVObjectPalette>;
|
||||||
using bhkCompressedMeshShapeDataPtr = RecordPtrT<bhkCompressedMeshShapeData>;
|
using bhkCompressedMeshShapeDataPtr = RecordPtrT<bhkCompressedMeshShapeData>;
|
||||||
|
using BSMultiBoundPtr = RecordPtrT<BSMultiBound>;
|
||||||
|
using BSMultiBoundDataPtr = RecordPtrT<BSMultiBoundData>;
|
||||||
|
|
||||||
using NodeList = RecordListT<Node>;
|
using NodeList = RecordListT<Node>;
|
||||||
using PropertyList = RecordListT<Property>;
|
using PropertyList = RecordListT<Property>;
|
||||||
|
|
Loading…
Reference in a new issue