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()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|