2025-08-17 13:14:17 -04:00
|
|
|
#include "xanimparts.h"
|
|
|
|
|
|
|
|
|
|
XAnimParts::XAnimParts()
|
2025-09-05 18:35:17 -04:00
|
|
|
: XAsset()
|
|
|
|
|
, mName()
|
|
|
|
|
, mDataByteCount(0)
|
|
|
|
|
, mDataShortCount(0)
|
|
|
|
|
, mDataIntCount(0)
|
|
|
|
|
, mRandomDataByteCount(0)
|
|
|
|
|
, mRandomDataIntCount(0)
|
|
|
|
|
, mNumFrames(0)
|
|
|
|
|
, mIsLoop(false)
|
|
|
|
|
, mIsDelta(false)
|
|
|
|
|
, mBoneCount(12)
|
|
|
|
|
, mNotifyCount(0)
|
|
|
|
|
, mAssetType(0)
|
|
|
|
|
, mPad(false)
|
|
|
|
|
, mRandomDataShortCount(0)
|
|
|
|
|
, mIndexCount(0)
|
|
|
|
|
, mFramerate(0.0f)
|
|
|
|
|
, mFrequency(0.0f)
|
|
|
|
|
, mNames(0)
|
|
|
|
|
, mDataByte(0)
|
|
|
|
|
, mDataShort(0)
|
|
|
|
|
, mDataInt(0)
|
|
|
|
|
, mRandomDataShort(0)
|
|
|
|
|
, mRandomDataByte(0)
|
|
|
|
|
, mRandomDataInt(0)
|
|
|
|
|
, mIndices()
|
|
|
|
|
, mNotify()
|
|
|
|
|
, mDeltaPart()
|
|
|
|
|
{
|
|
|
|
|
SetType(ASSET_TYPE_XANIMPARTS);
|
|
|
|
|
SetName("XAnimParts");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
XAnimParts::~XAnimParts()
|
|
|
|
|
{
|
|
|
|
|
|
2025-08-17 13:14:17 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XAnimParts::ParseData(QDataStream *aStream) {
|
|
|
|
|
if (GetPtr() == -1) {
|
|
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
mName.ParsePtr(aStream, false);
|
|
|
|
|
|
|
|
|
|
// Parse all fields
|
|
|
|
|
*aStream
|
|
|
|
|
>> mDataByteCount
|
|
|
|
|
>> mDataShortCount
|
|
|
|
|
>> mDataIntCount
|
|
|
|
|
>> mRandomDataByteCount
|
|
|
|
|
>> mRandomDataIntCount
|
|
|
|
|
>> mNumFrames;
|
2025-08-17 13:14:17 -04:00
|
|
|
|
|
|
|
|
quint8 loopDelta;
|
2025-09-05 18:35:17 -04:00
|
|
|
*aStream >> loopDelta;
|
2025-08-17 13:14:17 -04:00
|
|
|
mIsLoop = (loopDelta & 0x1) != 0;
|
|
|
|
|
mIsDelta = (loopDelta & 0x2) != 0;
|
|
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
for (int i = 0; i < 12; i++)
|
|
|
|
|
{
|
|
|
|
|
*aStream >> mBoneCount[i];
|
|
|
|
|
}
|
2025-08-17 13:14:17 -04:00
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
*aStream
|
|
|
|
|
>> mNotifyCount
|
|
|
|
|
>> mAssetType;
|
2025-08-17 13:14:17 -04:00
|
|
|
|
2025-09-07 12:36:08 -04:00
|
|
|
quint32 pad;
|
2025-09-05 18:35:17 -04:00
|
|
|
*aStream >> pad;
|
|
|
|
|
mPad = (pad != 0);
|
2025-08-17 13:14:17 -04:00
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
qint32 namesPtr, dataBytePtr, dataShortPtr, dataIntPtr,
|
|
|
|
|
randomDataShortPtr, randomDataBytePtr, randomDataIntPtr;
|
|
|
|
|
|
|
|
|
|
*aStream
|
|
|
|
|
>> mRandomDataShortCount
|
|
|
|
|
>> mIndexCount
|
|
|
|
|
>> mFramerate
|
|
|
|
|
>> mFrequency
|
|
|
|
|
>> namesPtr
|
|
|
|
|
>> mNames
|
|
|
|
|
>> dataBytePtr
|
|
|
|
|
>> mDataByte
|
|
|
|
|
>> dataShortPtr
|
|
|
|
|
>> mDataShort
|
|
|
|
|
>> dataIntPtr
|
|
|
|
|
>> mDataInt
|
|
|
|
|
>> randomDataShortPtr
|
|
|
|
|
>> mRandomDataShort
|
|
|
|
|
>> randomDataBytePtr
|
|
|
|
|
>> mRandomDataByte
|
|
|
|
|
>> randomDataIntPtr
|
|
|
|
|
>> mRandomDataInt;
|
2025-08-17 13:14:17 -04:00
|
|
|
|
|
|
|
|
// Parse indices
|
|
|
|
|
mIndices.ParseData(aStream);
|
2025-09-05 18:35:17 -04:00
|
|
|
mNotify.ParsePtr(aStream, false);
|
|
|
|
|
mDeltaPart.ParsePtr(aStream, false);
|
2025-08-17 13:14:17 -04:00
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
mName.ParseData(aStream);
|
|
|
|
|
if (namesPtr)
|
|
|
|
|
{
|
2025-08-17 13:14:17 -04:00
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
}
|
|
|
|
|
mNotify.ParseData(aStream);
|
2025-08-17 13:14:17 -04:00
|
|
|
mDeltaPart.ParseData(aStream);
|
2025-09-05 18:35:17 -04:00
|
|
|
if (dataBytePtr)
|
|
|
|
|
{
|
|
|
|
|
*aStream >> mDataByte;
|
|
|
|
|
}
|
|
|
|
|
if (dataShortPtr)
|
|
|
|
|
{
|
|
|
|
|
*aStream >> mDataShort;
|
|
|
|
|
}
|
|
|
|
|
if (dataIntPtr)
|
|
|
|
|
{
|
|
|
|
|
*aStream >> mDataInt;
|
|
|
|
|
}
|
|
|
|
|
if (randomDataShortPtr)
|
|
|
|
|
{
|
|
|
|
|
*aStream >> mDataInt;
|
|
|
|
|
}
|
|
|
|
|
if (randomDataBytePtr)
|
|
|
|
|
{
|
|
|
|
|
*aStream >> mRandomDataByte;
|
|
|
|
|
}
|
|
|
|
|
if (randomDataIntPtr)
|
|
|
|
|
{
|
|
|
|
|
*aStream >> mRandomDataInt;
|
|
|
|
|
}
|
|
|
|
|
mIndices.ParseData(aStream);
|
2025-08-17 13:14:17 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
void XAnimParts::Clear()
|
|
|
|
|
{
|
2025-08-17 13:14:17 -04:00
|
|
|
|
|
|
|
|
}
|