XPlor/libs/xassets/xaudiochannelmap.cpp
2025-09-10 21:56:33 -04:00

63 lines
1.3 KiB
C++

#include "xaudiochannelmap.h"
XAudioChannelMap::XAudioChannelMap()
: XAsset()
, mEntryCount(0)
, mEntries(QVector<XAudioChannelMapEntry*>())
{
SetName("Audio Channel Map");
}
XAudioChannelMap::~XAudioChannelMap()
{
for (int i = 0; i < mEntries.size(); i++)
{
delete mEntries[i];
}
mEntries.clear();
}
quint8 XAudioChannelMap::GetEntryCount() const
{
return mEntryCount;
}
XAudioChannelMapEntry *XAudioChannelMap::GetMapEntry(int aIndex) const
{
return mEntries[aIndex];
}
void XAudioChannelMap::SetMapEntry(int aIndex, XAudioChannelMapEntry *aEntry)
{
mEntries[aIndex] = aEntry;
}
void XAudioChannelMap::ParseData(XDataStream *aStream)
{
mEntryCount = aStream->ParseUInt8(QString("%1 entry count").arg(GetName()));
aStream->skipRawData(3);
quint32 entriesPtr = aStream->ParseInt32(QString("%1 entries ptr").arg(GetName()));
if (entriesPtr)
{
mEntries.resize(mEntryCount);
for (int i = 0; i < mEntryCount; i++)
{
mEntries[i] = new XAudioChannelMapEntry();
mEntries[i]->ParseData(aStream);
}
}
}
void XAudioChannelMap::Clear()
{
mEntryCount = 0;
for (int i = 0; i < mEntries.size(); i++)
{
delete mEntries[i];
}
mEntries.clear();
}