64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
#include "xsurfacecollisiontree.h"
|
|
|
|
XSurfaceCollisionTree::XSurfaceCollisionTree()
|
|
: XAsset()
|
|
, mTrans()
|
|
, mScale()
|
|
, mNodeCount(0)
|
|
, mNodes()
|
|
, mLeafCount(0)
|
|
, mLeafs()
|
|
{
|
|
SetName("Surface Collision Tree");
|
|
}
|
|
|
|
void XSurfaceCollisionTree::ParseData(XDataStream *aStream)
|
|
{
|
|
quint32 rawTrans;
|
|
*aStream >> rawTrans;
|
|
memcpy(&mTrans[0], &rawTrans, sizeof(mTrans[0]));
|
|
*aStream >> rawTrans;
|
|
memcpy(&mTrans[1], &rawTrans, sizeof(mTrans[1]));
|
|
*aStream >> rawTrans;
|
|
memcpy(&mTrans[2], &rawTrans, sizeof(mTrans[2]));
|
|
|
|
quint32 rawScale;
|
|
*aStream >> rawScale;
|
|
memcpy(&mScale[0], &rawScale, sizeof(mScale[0]));
|
|
*aStream >> rawScale;
|
|
memcpy(&mScale[1], &rawScale, sizeof(mScale[1]));
|
|
*aStream >> rawScale;
|
|
memcpy(&mScale[2], &rawScale, sizeof(mScale[2]));
|
|
|
|
qint32 nodesPtr, leafsPtr;
|
|
*aStream
|
|
>> mNodeCount
|
|
>> nodesPtr
|
|
>> mLeafCount
|
|
>> leafsPtr;
|
|
|
|
if (nodesPtr)
|
|
{
|
|
for (quint32 i = 0; i < mNodeCount; i++)
|
|
{
|
|
XSurfaceCollisionNode newNode;
|
|
newNode.ParseData(aStream);
|
|
mNodes.append(newNode);
|
|
}
|
|
}
|
|
if (leafsPtr)
|
|
{
|
|
for (quint32 i = 0; i < mLeafCount; i++)
|
|
{
|
|
XSurfaceCollisionLeaf newLeaf;
|
|
newLeaf.ParseData(aStream);
|
|
mLeafs.append(newLeaf);
|
|
}
|
|
}
|
|
}
|
|
|
|
void XSurfaceCollisionTree::Clear()
|
|
{
|
|
|
|
}
|