Updated xmodel
This commit is contained in:
parent
43e925ae23
commit
da6233c10d
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
XModel::XModel()
|
XModel::XModel()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName("")
|
, mName()
|
||||||
, mNumBones(0)
|
, mNumBones(0)
|
||||||
, mNumRootBones(0)
|
, mNumRootBones(0)
|
||||||
, mNumSurfs(0)
|
, mNumSurfs(0)
|
||||||
@ -12,15 +12,15 @@ XModel::XModel()
|
|||||||
, mParentList()
|
, mParentList()
|
||||||
, mQuats()
|
, mQuats()
|
||||||
, mTrans(0)
|
, mTrans(0)
|
||||||
, mPartClassification(0)
|
, mPartClassification()
|
||||||
, mBaseMat(0)
|
, mBaseMat()
|
||||||
, mSurfs()
|
, mSurfs()
|
||||||
, mMaterialHandles()
|
, mMaterialHandles()
|
||||||
, mLodInfo()
|
, mLodInfo()
|
||||||
, mCollSurfs()
|
, mCollSurfs()
|
||||||
, mNumCollSurfs(0)
|
, mNumCollSurfs(0)
|
||||||
, mContents(0)
|
, mContents(0)
|
||||||
, mBoneInfo(new XBoneInfo())
|
, mBoneInfo()
|
||||||
, mRadius(0)
|
, mRadius(0)
|
||||||
, mMins()
|
, mMins()
|
||||||
, mMaxs()
|
, mMaxs()
|
||||||
@ -29,8 +29,8 @@ XModel::XModel()
|
|||||||
, mStreamInfo()
|
, mStreamInfo()
|
||||||
, mMemUsage(0)
|
, mMemUsage(0)
|
||||||
, mFlags(0)
|
, mFlags(0)
|
||||||
, mPhysPreset(new XPhysPreset)
|
, mPhysPreset()
|
||||||
, mPhysGeoms(new XPhysGeomList)
|
, mPhysGeoms()
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_XMODEL);
|
SetType(ASSET_TYPE_XMODEL);
|
||||||
}
|
}
|
||||||
@ -41,13 +41,142 @@ XModel::~XModel()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void XModel::ParseData(QDataStream *aStream) {
|
void XModel::ParseData(QDataStream *aStream) {
|
||||||
qint32 namePtr, boneNamesPtr;
|
|
||||||
|
mName.ParsePtr(aStream, false);
|
||||||
|
|
||||||
*aStream
|
*aStream
|
||||||
>> namePtr;
|
>> mNumBones
|
||||||
|
>> mNumRootBones
|
||||||
|
>> mNumSurfs
|
||||||
|
>> mLodRampType;
|
||||||
|
|
||||||
mName = XString::ParseCustom(aStream);
|
qint32 boneNamesPtr, parentListPtr, quatsPtr, transPtr, partClassPtr;
|
||||||
|
|
||||||
|
*aStream
|
||||||
|
>> boneNamesPtr
|
||||||
|
>> parentListPtr
|
||||||
|
>> quatsPtr
|
||||||
|
>> transPtr
|
||||||
|
>> partClassPtr;
|
||||||
|
|
||||||
|
mBaseMat.ParsePtr(aStream, false);
|
||||||
|
|
||||||
|
qint32 surfsPtr, matHandlesPtr, lodInfoPtr, collSurfsPtr;
|
||||||
|
|
||||||
|
*aStream
|
||||||
|
>> surfsPtr
|
||||||
|
>> matHandlesPtr
|
||||||
|
>> lodInfoPtr
|
||||||
|
>> collSurfsPtr
|
||||||
|
>> mNumCollSurfs
|
||||||
|
>> mContents;
|
||||||
|
|
||||||
|
mBoneInfo.ParsePtr(aStream, false);
|
||||||
|
|
||||||
|
*aStream
|
||||||
|
>> mRadius
|
||||||
|
>> mMins
|
||||||
|
>> mMaxs
|
||||||
|
>> mNumLods
|
||||||
|
>> mCollLod;
|
||||||
|
|
||||||
|
mStreamInfo.ParseData(aStream);
|
||||||
|
|
||||||
|
*aStream
|
||||||
|
>> mMemUsage
|
||||||
|
>> mFlags;
|
||||||
|
aStream->skipRawData(3);
|
||||||
|
|
||||||
|
mPhysPreset.ParsePtr(aStream, false);
|
||||||
|
mPhysGeoms.ParsePtr(aStream, false);
|
||||||
|
|
||||||
|
mName.ParseData(aStream);
|
||||||
|
|
||||||
|
if (boneNamesPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mNumBones; i++)
|
||||||
|
{
|
||||||
|
quint16 bone;
|
||||||
|
*aStream >> bone;
|
||||||
|
mBoneNames.append(bone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parentListPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mNumBones - mNumRootBones; i++)
|
||||||
|
{
|
||||||
|
quint8 parent;
|
||||||
|
*aStream >> parent;
|
||||||
|
mParentList.append(parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (quatsPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 8 * (mNumBones - mNumRootBones); i++)
|
||||||
|
{
|
||||||
|
quint8 quat;
|
||||||
|
*aStream >> quat;
|
||||||
|
mQuats.append(quat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (transPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 16 * (mNumBones - mNumRootBones); i++)
|
||||||
|
{
|
||||||
|
quint8 trans;
|
||||||
|
*aStream >> trans;
|
||||||
|
mTrans.append(trans);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (partClassPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mNumBones; i++)
|
||||||
|
{
|
||||||
|
quint8 partClass;
|
||||||
|
*aStream >> partClass;
|
||||||
|
mPartClassification.append(partClass);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mBaseMat.ParseData(aStream);
|
||||||
|
|
||||||
|
if (surfsPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mNumSurfs; i++)
|
||||||
|
{
|
||||||
|
XSurface newSurf;
|
||||||
|
newSurf.ParseData(aStream);
|
||||||
|
mSurfs.append(newSurf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (matHandlesPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mNumSurfs; i++)
|
||||||
|
{
|
||||||
|
XMaterial newMaterial;
|
||||||
|
newMaterial.ParseData(aStream);
|
||||||
|
mMaterialHandles.append(newMaterial);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (collSurfsPtr == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mNumCollSurfs; i++)
|
||||||
|
{
|
||||||
|
XModelCollSurf newCollSurf;
|
||||||
|
newCollSurf.ParseData(aStream);
|
||||||
|
mCollSurfs.append(newCollSurf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mBoneInfo.ParseData(aStream);
|
||||||
|
|
||||||
|
// TODO: Fill out rest of this
|
||||||
}
|
}
|
||||||
|
|
||||||
void XModel::Clear()
|
void XModel::Clear()
|
||||||
|
|||||||
@ -23,24 +23,24 @@ public:
|
|||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString mName;
|
XString mName;
|
||||||
quint8 mNumBones;
|
quint8 mNumBones;
|
||||||
quint8 mNumRootBones;
|
quint8 mNumRootBones;
|
||||||
quint8 mNumSurfs;
|
quint8 mNumSurfs;
|
||||||
quint8 mLodRampType;
|
quint8 mLodRampType;
|
||||||
XScriptStringList mBoneNames;
|
QVector<quint16> mBoneNames;
|
||||||
QVector<quint8> mParentList;
|
QVector<quint8> mParentList;
|
||||||
QVector<quint8> mQuats;
|
QVector<quint8> mQuats;
|
||||||
float *mTrans;
|
QVector<float> mTrans;
|
||||||
quint8 *mPartClassification;
|
QVector<quint8> mPartClassification;
|
||||||
XDObjAnimMat *mBaseMat;
|
XDObjAnimMat mBaseMat;
|
||||||
QVector<XSurface> mSurfs;
|
QVector<XSurface> mSurfs;
|
||||||
QVector<XMaterial*> mMaterialHandles;
|
QVector<XMaterial> mMaterialHandles;
|
||||||
QVector<XModelLodInfo> mLodInfo;
|
QVector<XModelLodInfo> mLodInfo;
|
||||||
QVector<XModelCollSurf> mCollSurfs;
|
QVector<XModelCollSurf> mCollSurfs;
|
||||||
int mNumCollSurfs;
|
int mNumCollSurfs;
|
||||||
int mContents;
|
int mContents;
|
||||||
XBoneInfo* mBoneInfo;
|
XBoneInfo mBoneInfo;
|
||||||
float mRadius;
|
float mRadius;
|
||||||
QVector3D mMins;
|
QVector3D mMins;
|
||||||
QVector3D mMaxs;
|
QVector3D mMaxs;
|
||||||
@ -49,8 +49,8 @@ private:
|
|||||||
XModelStreamInfo mStreamInfo;
|
XModelStreamInfo mStreamInfo;
|
||||||
int mMemUsage;
|
int mMemUsage;
|
||||||
quint8 mFlags;
|
quint8 mFlags;
|
||||||
XPhysPreset* mPhysPreset;
|
XPhysPreset mPhysPreset;
|
||||||
XPhysGeomList* mPhysGeoms;
|
XPhysGeomList mPhysGeoms;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XMODEL_H
|
#endif // XMODEL_H
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user