XPlor/libs/xassets/xsurface.cpp

109 lines
2.5 KiB
C++
Raw Normal View History

2025-09-03 13:25:58 -04:00
#include "xsurface.h"
XSurface::XSurface()
: XAsset()
, mTileMode(0)
, mDeformed(false)
, mVertCount(0)
, mTriCount(0)
, mTriIndices(0)
, mVertInfo()
2025-09-07 23:16:14 -04:00
, mVert()
, mVertBuffer()
2025-09-03 13:25:58 -04:00
, mVertListCount(0)
, mVertList()
, mIndexBuffer()
2025-09-10 21:58:26 -04:00
, mPartBits(4)
2025-09-03 13:25:58 -04:00
{
2025-09-10 21:58:26 -04:00
SetName("Surface");
2025-09-03 13:25:58 -04:00
}
2025-09-07 23:16:14 -04:00
XSurface::~XSurface()
{
}
2025-09-10 21:58:26 -04:00
void XSurface::ParseData(XDataStream *aStream)
2025-09-03 13:25:58 -04:00
{
2025-09-10 21:58:26 -04:00
*aStream >> mTileMode;
if (IsDebug())
{
qDebug() << QString("[%1] mTileMode = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mTileMode);
}
*aStream >> mDeformed;
if (IsDebug())
{
qDebug() << QString("[%1] mDeformed = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mDeformed);
}
*aStream >> mVertCount;
if (IsDebug())
{
qDebug() << QString("[%1] mVertCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mVertCount);
}
*aStream >> mTriCount;
if (IsDebug())
{
qDebug() << QString("[%1] mTriCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mTriCount);
}
2025-09-07 23:16:14 -04:00
aStream->skipRawData(2);
qint32 triIndicesPtr;
2025-09-10 21:58:26 -04:00
*aStream >> triIndicesPtr;
if (IsDebug())
{
qDebug() << QString("[%1] triIndicesPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(triIndicesPtr);
}
2025-09-07 23:16:14 -04:00
2025-09-10 21:58:26 -04:00
mVertInfo.SetPtr(-1);
mVertInfo.ParseData(aStream);
2025-09-07 23:16:14 -04:00
mVert.ParsePtr(aStream, false);
2025-09-10 21:58:26 -04:00
mVertBuffer.ParseData(aStream);
2025-09-07 23:16:14 -04:00
2025-09-10 21:58:26 -04:00
*aStream >> mVertListCount;
if (IsDebug())
{
qDebug() << QString("[%1] mVertListCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mVertListCount);
}
2025-09-07 23:16:14 -04:00
2025-09-10 21:58:26 -04:00
mVertList.ParseData(aStream);
2025-09-07 23:16:14 -04:00
mIndexBuffer.ParseData(aStream);
*aStream
>> mPartBits[0]
>> mPartBits[1]
>> mPartBits[2]
>> mPartBits[3];
2025-09-10 21:58:26 -04:00
if (IsDebug())
{
qDebug() << QString("[%1] mPartBits = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(*mPartBits.data());
}
2025-09-07 23:16:14 -04:00
2025-09-10 21:58:26 -04:00
//mVertInfo.ParseData(aStream);
2025-09-07 23:16:14 -04:00
mVert.ParseData(aStream);
2025-09-10 21:58:26 -04:00
mVertBuffer.ParseData(aStream);
//mVertList.ParseData(aStream);
2025-09-07 23:16:14 -04:00
2025-09-10 21:58:26 -04:00
if (triIndicesPtr == -1)
{
for (int i = 0; i < mTriCount; i++)
{
quint16 newTri;
*aStream >> newTri;
if (IsDebug())
{
qDebug() << QString("[%1] newTri = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(newTri);
}
mTriIndices.append(newTri);
}
}
2025-09-03 13:25:58 -04:00
}
void XSurface::Clear()
{
}