Updated xmodel
This commit is contained in:
parent
43e925ae23
commit
da6233c10d
@ -3,7 +3,7 @@
|
||||
|
||||
XModel::XModel()
|
||||
: XAsset()
|
||||
, mName("")
|
||||
, mName()
|
||||
, mNumBones(0)
|
||||
, mNumRootBones(0)
|
||||
, mNumSurfs(0)
|
||||
@ -12,15 +12,15 @@ XModel::XModel()
|
||||
, mParentList()
|
||||
, mQuats()
|
||||
, mTrans(0)
|
||||
, mPartClassification(0)
|
||||
, mBaseMat(0)
|
||||
, mPartClassification()
|
||||
, mBaseMat()
|
||||
, mSurfs()
|
||||
, mMaterialHandles()
|
||||
, mLodInfo()
|
||||
, mCollSurfs()
|
||||
, mNumCollSurfs(0)
|
||||
, mContents(0)
|
||||
, mBoneInfo(new XBoneInfo())
|
||||
, mBoneInfo()
|
||||
, mRadius(0)
|
||||
, mMins()
|
||||
, mMaxs()
|
||||
@ -29,8 +29,8 @@ XModel::XModel()
|
||||
, mStreamInfo()
|
||||
, mMemUsage(0)
|
||||
, mFlags(0)
|
||||
, mPhysPreset(new XPhysPreset)
|
||||
, mPhysGeoms(new XPhysGeomList)
|
||||
, mPhysPreset()
|
||||
, mPhysGeoms()
|
||||
{
|
||||
SetType(ASSET_TYPE_XMODEL);
|
||||
}
|
||||
@ -41,13 +41,142 @@ XModel::~XModel()
|
||||
}
|
||||
|
||||
void XModel::ParseData(QDataStream *aStream) {
|
||||
qint32 namePtr, boneNamesPtr;
|
||||
|
||||
mName.ParsePtr(aStream, false);
|
||||
|
||||
*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()
|
||||
|
||||
@ -23,24 +23,24 @@ public:
|
||||
virtual void Clear() override;
|
||||
|
||||
private:
|
||||
QString mName;
|
||||
XString mName;
|
||||
quint8 mNumBones;
|
||||
quint8 mNumRootBones;
|
||||
quint8 mNumSurfs;
|
||||
quint8 mLodRampType;
|
||||
XScriptStringList mBoneNames;
|
||||
QVector<quint16> mBoneNames;
|
||||
QVector<quint8> mParentList;
|
||||
QVector<quint8> mQuats;
|
||||
float *mTrans;
|
||||
quint8 *mPartClassification;
|
||||
XDObjAnimMat *mBaseMat;
|
||||
QVector<float> mTrans;
|
||||
QVector<quint8> mPartClassification;
|
||||
XDObjAnimMat mBaseMat;
|
||||
QVector<XSurface> mSurfs;
|
||||
QVector<XMaterial*> mMaterialHandles;
|
||||
QVector<XMaterial> mMaterialHandles;
|
||||
QVector<XModelLodInfo> mLodInfo;
|
||||
QVector<XModelCollSurf> mCollSurfs;
|
||||
int mNumCollSurfs;
|
||||
int mContents;
|
||||
XBoneInfo* mBoneInfo;
|
||||
XBoneInfo mBoneInfo;
|
||||
float mRadius;
|
||||
QVector3D mMins;
|
||||
QVector3D mMaxs;
|
||||
@ -49,8 +49,8 @@ private:
|
||||
XModelStreamInfo mStreamInfo;
|
||||
int mMemUsage;
|
||||
quint8 mFlags;
|
||||
XPhysPreset* mPhysPreset;
|
||||
XPhysGeomList* mPhysGeoms;
|
||||
XPhysPreset mPhysPreset;
|
||||
XPhysGeomList mPhysGeoms;
|
||||
};
|
||||
|
||||
#endif // XMODEL_H
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user