2025-09-03 13:04:54 -04:00
|
|
|
#include "xfxelemdef.h"
|
|
|
|
|
|
|
|
|
|
XFxElemDef::XFxElemDef()
|
|
|
|
|
: XAsset()
|
|
|
|
|
, mFlags(0)
|
|
|
|
|
, mSpawn()
|
|
|
|
|
, mSpawnRange()
|
|
|
|
|
, mFadeInRange()
|
|
|
|
|
, mFadeOutRange()
|
|
|
|
|
, mSpawnFrustumCullRadius(0)
|
|
|
|
|
, mSpawnDelayMsec()
|
|
|
|
|
, mLifeSpanMsec()
|
2025-09-07 23:12:05 -04:00
|
|
|
, mSpawnOrigin(3)
|
2025-09-03 13:04:54 -04:00
|
|
|
, mSpawnOffsetRadius()
|
|
|
|
|
, mSpawnOffsetHeight()
|
2025-09-07 23:12:05 -04:00
|
|
|
, mSpawnAngles(3)
|
|
|
|
|
, mAngularVelocity(3)
|
2025-09-03 13:04:54 -04:00
|
|
|
, mInitialRotation()
|
|
|
|
|
, mGravity()
|
|
|
|
|
, mReflectionFactor()
|
|
|
|
|
, mAtlas()
|
|
|
|
|
, mElemType(0)
|
|
|
|
|
, mVisualCount(0)
|
|
|
|
|
, mVelIntervalCount(0)
|
|
|
|
|
, mVisStateIntervalCount(0)
|
|
|
|
|
, mVelSamplesPtr(0)
|
|
|
|
|
, mVelSamples()
|
|
|
|
|
, mVisSamplesPtr(0)
|
|
|
|
|
, mVisSamples()
|
|
|
|
|
, mVisuals()
|
|
|
|
|
, mCollMins()
|
|
|
|
|
, mCollMaxs()
|
|
|
|
|
, mEffectOnImpact()
|
|
|
|
|
, mEffectOnDeath()
|
|
|
|
|
, mEffectEmitted()
|
|
|
|
|
, mEmitDist()
|
|
|
|
|
, mEmitDistVariance()
|
2025-09-07 23:12:05 -04:00
|
|
|
, mTrailDef()
|
2025-09-03 13:04:54 -04:00
|
|
|
, mSortOrder(0)
|
|
|
|
|
, mLightingFrac(0)
|
|
|
|
|
, mUseItemClip(0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
XFxElemDef::~XFxElemDef()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XFxElemDef::Clear()
|
|
|
|
|
{
|
|
|
|
|
mFlags = 0;
|
|
|
|
|
mSpawn.Clear();
|
2025-09-05 18:35:17 -04:00
|
|
|
mSpawnRange.Clear();
|
|
|
|
|
mFadeInRange.Clear();
|
|
|
|
|
mFadeOutRange.Clear();
|
2025-09-03 13:04:54 -04:00
|
|
|
mSpawnFrustumCullRadius = 0;
|
2025-09-05 18:35:17 -04:00
|
|
|
mSpawnDelayMsec.Clear();
|
|
|
|
|
mLifeSpanMsec.Clear();
|
|
|
|
|
mSpawnOrigin.clear();
|
|
|
|
|
mSpawnOffsetRadius.Clear();
|
|
|
|
|
mSpawnOffsetHeight.Clear();
|
|
|
|
|
mSpawnAngles.clear();
|
|
|
|
|
mAngularVelocity.clear();
|
|
|
|
|
mInitialRotation.Clear();
|
|
|
|
|
mGravity.Clear();
|
|
|
|
|
mReflectionFactor.Clear();
|
|
|
|
|
mAtlas.Clear();
|
2025-09-03 13:04:54 -04:00
|
|
|
mElemType = 0;
|
|
|
|
|
mVisualCount = 0;
|
|
|
|
|
mVelIntervalCount = 0;
|
|
|
|
|
mVisStateIntervalCount = 0;
|
|
|
|
|
mVelSamplesPtr = 0;
|
2025-09-05 18:35:17 -04:00
|
|
|
mVelSamples.clear();
|
2025-09-03 13:04:54 -04:00
|
|
|
mVisSamplesPtr = 0;
|
2025-09-05 18:35:17 -04:00
|
|
|
mVisSamples.clear();
|
|
|
|
|
mVisuals.Clear();
|
2025-09-03 13:04:54 -04:00
|
|
|
mCollMins = QVector3D();
|
|
|
|
|
mCollMaxs = QVector3D();
|
2025-09-05 18:35:17 -04:00
|
|
|
mEffectOnImpact.Clear();
|
|
|
|
|
mEffectOnDeath.Clear();
|
|
|
|
|
mEffectEmitted.Clear();
|
|
|
|
|
mEmitDist.Clear();
|
|
|
|
|
mEmitDistVariance.Clear();
|
2025-09-07 23:12:05 -04:00
|
|
|
mTrailDef.Clear();
|
2025-09-03 13:04:54 -04:00
|
|
|
mSortOrder = 0;
|
|
|
|
|
mLightingFrac = 0;
|
|
|
|
|
mUseItemClip = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XFxElemDef::ParseData(QDataStream *aStream)
|
|
|
|
|
{
|
2025-09-07 23:12:05 -04:00
|
|
|
*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
|
2025-09-03 13:04:54 -04:00
|
|
|
}
|