XPlor/libs/xassets/xfxelemdef.cpp

181 lines
4.0 KiB
C++
Raw Normal View History

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
}