#include "xanimparts.h" XAnimParts::XAnimParts() : XAsset() , mName() , mDataByteCount(0) , mDataShortCount(0) , mDataIntCount(0) , mRandomDataByteCount(0) , mRandomDataIntCount(0) , mNumFrames(0) , mIsLoop(false) , mIsDelta(false) , mBoneCount(12) , mNotifyCount(0) , mAssetType(0) , mIsDefault(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("Animation Parts"); } void XAnimParts::ParseData(XDataStream *aStream) { mName.ParsePtr(aStream, false); // Parse all fields mDataByteCount = aStream->ParseUInt16(QString("%1 data byte count").arg(GetName())); mDataShortCount = aStream->ParseUInt16(QString("%1 data short count").arg(GetName())); mDataIntCount = aStream->ParseUInt16(QString("%1 data int count").arg(GetName())); mRandomDataByteCount = aStream->ParseUInt16(QString("%1 random date byte count").arg(GetName())); mRandomDataIntCount = aStream->ParseUInt16(QString("%1 random data int count").arg(GetName())); mNumFrames = aStream->ParseUInt16(QString("%1 # frames").arg(GetName())); mIsLoop = aStream->ParseUInt8(QString("%1 loop").arg(GetName())); mIsDelta = aStream->ParseUInt8(QString("%1 delta").arg(GetName())); aStream->skipRawData(2); for (int i = 0; i < 10; i++) { mBoneCount[i] = aStream->ParseUInt8(QString("%1 bone count %2").arg(GetName()).arg(i)); } aStream->skipRawData(2); mNotifyCount = aStream->ParseUInt8(QString("%1 notify count").arg(GetName())); mAssetType = aStream->ParseUInt8(QString("%1 asset type").arg(GetName())); mIsDefault = aStream->ParseUInt8(QString("%1 pad").arg(GetName())); aStream->skipRawData(1); qint32 namesPtr, dataBytePtr, dataShortPtr, dataIntPtr, randomDataShortPtr, randomDataBytePtr, randomDataIntPtr; mRandomDataShortCount = aStream->ParseUInt32(QString("%1 random data short count").arg(GetName())); mIndexCount = aStream->ParseUInt32(QString("%1 index count").arg(GetName())); mFramerate = aStream->ParseSingle(QString("%1 frame rate").arg(GetName())); mFrequency = aStream->ParseSingle(QString("%1 frequency").arg(GetName())); namesPtr = aStream->ParseInt32(QString("%1 names ptr").arg(GetName())); dataBytePtr = aStream->ParseInt32(QString("%1 data byte ptr").arg(GetName())); dataShortPtr = aStream->ParseInt32(QString("%1 data short ptr").arg(GetName())); dataIntPtr = aStream->ParseInt32(QString("%1 data int ptr").arg(GetName())); randomDataShortPtr = aStream->ParseInt32(QString("%1 random data short ptr").arg(GetName())); randomDataBytePtr = aStream->ParseInt32(QString("%1 random data byte ptr").arg(GetName())); randomDataIntPtr = aStream->ParseInt32(QString("%1 random data int ptr").arg(GetName())); // Parse indices mIndices.ParsePtr(aStream, false); mNotify.ParsePtr(aStream, false); mDeltaPart.ParsePtr(aStream, false); mName.ParseDataSafe(aStream); SetDisplayName(mName.GetString()); if (namesPtr) { mNames = aStream->ParseInt32(QString("%1 names").arg(GetName())); } mNotify.ParseDataSafe(aStream); mDeltaPart.ParseDataSafe(aStream); if (dataBytePtr) { mDataByte = aStream->ParseUInt8(QString("%1 data byte").arg(GetName())); } if (dataShortPtr) { mDataShort = aStream->ParseInt16(QString("%1 data short").arg(GetName())); } if (dataIntPtr) { mDataInt = aStream->ParseInt32(QString("%1 data int").arg(GetName())); } if (randomDataShortPtr) { mRandomDataShort = aStream->ParseInt16(QString("%1 random data short").arg(GetName())); } if (randomDataBytePtr) { mRandomDataByte = aStream->ParseUInt8(QString("%1 random data byte").arg(GetName())); } if (randomDataIntPtr) { mRandomDataInt = aStream->ParseInt32(QString("%1 random data int").arg(GetName())); } mIndices.ParseDataSafe(aStream); } void XAnimParts::Clear() { }