diff --git a/libs/xassets/xfxelemdef.cpp b/libs/xassets/xfxelemdef.cpp index f2b0e10..f58cdc6 100644 --- a/libs/xassets/xfxelemdef.cpp +++ b/libs/xassets/xfxelemdef.cpp @@ -1,5 +1,4 @@ #include "xfxelemdef.h" -#include "xfxtraildef.h" XFxElemDef::XFxElemDef() : XAsset() @@ -11,11 +10,11 @@ XFxElemDef::XFxElemDef() , mSpawnFrustumCullRadius(0) , mSpawnDelayMsec() , mLifeSpanMsec() - , mSpawnOrigin() + , mSpawnOrigin(3) , mSpawnOffsetRadius() , mSpawnOffsetHeight() - , mSpawnAngles() - , mAngularVelocity() + , mSpawnAngles(3) + , mAngularVelocity(3) , mInitialRotation() , mGravity() , mReflectionFactor() @@ -36,8 +35,7 @@ XFxElemDef::XFxElemDef() , mEffectEmitted() , mEmitDist() , mEmitDistVariance() - , mTrailDefPtr(0) - , mTrailDef(new XFxTrailDef()) + , mTrailDef() , mSortOrder(0) , mLightingFrac(0) , mUseItemClip(0) @@ -85,8 +83,7 @@ void XFxElemDef::Clear() mEffectEmitted.Clear(); mEmitDist.Clear(); mEmitDistVariance.Clear(); - mTrailDefPtr = 0; - mTrailDef->Clear(); + mTrailDef.Clear(); mSortOrder = 0; mLightingFrac = 0; mUseItemClip = 0; @@ -94,5 +91,90 @@ void XFxElemDef::Clear() void XFxElemDef::ParseData(QDataStream *aStream) { - + *aStream >> mFlags; + + mSpawn.ParseData(aStream); + mSpawnRange.ParseData(aStream); + mFadeInRange.ParseData(aStream); + mFadeOutRange.ParseData(aStream); + + *aStream >> mSpawnFrustumCullRadius; + + mSpawnDelayMsec.ParseData(aStream); + mLifeSpanMsec.ParseData(aStream); + for (int i = 0; i < 3; i++) + { + mSpawnOrigin[i].ParseData(aStream); + } + mSpawnOffsetRadius.ParseData(aStream); + mSpawnOffsetHeight.ParseData(aStream); + for (int i = 0; i < 3; i++) + { + mSpawnAngles[i].ParseData(aStream); + } + for (int i = 0; i < 3; i++) + { + mAngularVelocity[i].ParseData(aStream); + } + mInitialRotation.ParseData(aStream); + mGravity.ParseData(aStream); + mReflectionFactor.ParseData(aStream); + mAtlas.ParseData(aStream); + + qint32 velSamplesPtr, visSamplesPtr; + *aStream + >> mElemType + >> mVisualCount + >> mVelIntervalCount + >> mVisStateIntervalCount + >> velSamplesPtr + >> visSamplesPtr; + + mVisuals.ParseData(aStream); + + *aStream + >> mCollMins[0] + >> mCollMins[1] + >> mCollMins[2] + >> mCollMaxs[0] + >> mCollMaxs[1] + >> mCollMaxs[2]; + + mEffectOnImpact.ParseData(aStream); + mEffectOnDeath.ParseData(aStream); + mEffectEmitted.ParseData(aStream); + mEmitDist.ParseData(aStream); + mEmitDistVariance.ParseData(aStream); + mEffectOnImpact.ParseData(aStream); + + qint32 trailDefPtr; + *aStream + >> trailDefPtr + >> mSortOrder + >> mLightingFrac + >> mUseItemClip; + + aStream->skipRawData(1); + + if (velSamplesPtr) + { + for (int i = 0; i < mVelIntervalCount + 1; i++) + { + XFxElemVelStateSample newVelSample; + newVelSample.ParseData(aStream); + mVelSamples.append(newVelSample); + } + } + + if (visSamplesPtr) + { + for (int i = 0; i < mVisStateIntervalCount + 1; i++) + { + XFxElemVisStateSample newVisSample; + newVisSample.ParseData(aStream); + mVisSamples.append(newVisSample); + } + } + + // TODO: Finish this ugh }