XPlor/libs/xassets/xclipmap.cpp
2025-09-07 12:36:08 -04:00

266 lines
6.3 KiB
C++

#include "xclipmap.h"
XClipMap::XClipMap()
: XAsset()
, mName()
, mIsInUse(false)
, mPlaneCount(0)
, mPlanes()
, mNumStaticModels(0)
, mStaticModelList()
, mNumMaterials(0)
, mMaterials()
, mNumBrushSides(0)
, mBrushsides()
, mNumBrushEdges(0)
, mBrushEdges()
, mNumNodes(0)
, mNodes()
, mNumLeafs(0)
, mLeafs()
, mLeafBrushNodesCount(0)
, mLeafBrushNodes()
, mNumLeafBrushes(0)
, mLeafBrushes()
, mNumLeafSurfaces(0)
, mLeafSurfaces()
, mVertCount(0)
, mVerts()
, mTriCount(0)
, mTriIndices()
, mTriEdgeIsWalkable()
, mBorderCount(0)
, mBorders()
, mPartitionCount(0)
, mPartitions()
, mAabbTreeCount(0)
, mAabbTrees()
, mNumSubModels(0)
, mCModels()
, mNumBrushes(0)
, mBrushes()
, mNumClusters(0)
, mClusterBytes(0)
, mVisibility()
, mVised(0)
, mMapEnts()
, mBoxBrush()
, mBoxModel()
, mDynEntCounts(0)
, mDynEntDefList(2)
, mDynEntPoseList(2)
, mDynEntClientList(2)
, mDynEntCollList(2)
, mChecksum(0)
{
SetType(ASSET_TYPE_CLIPMAP);
SetName("ClipMap");
}
XClipMap::~XClipMap()
{
}
void XClipMap::ParseData(QDataStream *aStream)
{
if (GetPtr() == -1)
{
mName.ParsePtr(aStream, false);
qint32 planePtr, staticModelPtr, materialsPtr, brushSidesPtr,
brushEdgesPtr, nodesPtr, leafsPtr, leafsBrushNodesPtr,
leafBrushesPtr, leafSurfacesPtr, vertPtr1, vertPtr2, vertPtr3,
triIndicesPtr, triEdgeWalkablePtr, bordersPtr, partitionsPtr, aabbTreesPtr,
cModelsPtr;
*aStream
>> mIsInUse
>> mPlaneCount
>> planePtr
>> mNumStaticModels
>> staticModelPtr
>> mNumMaterials
>> materialsPtr
>> mNumBrushSides
>> brushSidesPtr
>> mNumBrushEdges
>> brushEdgesPtr
>> mNumNodes
>> nodesPtr
>> mNumLeafs
>> leafsPtr
>> mLeafBrushNodesCount
>> leafsBrushNodesPtr
>> mNumLeafBrushes
>> leafBrushesPtr
>> mNumLeafSurfaces
>> leafSurfacesPtr
>> mVertCount
>> vertPtr1
>> vertPtr2
>> vertPtr3
>> mTriCount
>> triIndicesPtr
>> triEdgeWalkablePtr
>> mBorderCount
>> bordersPtr
>> mPartitionCount
>> partitionsPtr
>> mAabbTreeCount
>> aabbTreesPtr
>> mNumSubModels
>> cModelsPtr
>> mNumBrushes;
aStream->skipRawData(2);
qint32 brushesPtr, visibilityPtr, mapEntsPtr, boxBrushPtr;
*aStream
>> brushesPtr
>> mNumClusters
>> mClusterBytes
>> visibilityPtr
>> mVised
>> mapEntsPtr
>> boxBrushPtr;
mBoxModel.ParseData(aStream);
quint16 dynEntCount;
*aStream >> dynEntCount;
mDynEntCounts.append(dynEntCount);
*aStream >> dynEntCount;
mDynEntCounts.append(dynEntCount);
mDynEntDefList[0].ParsePtr(aStream, false);
mDynEntDefList[0].ParsePtr(aStream, false);
mDynEntPoseList[0].ParsePtr(aStream, false);
mDynEntPoseList[0].ParsePtr(aStream, false);
mDynEntClientList[0].ParsePtr(aStream, false);
mDynEntClientList[0].ParsePtr(aStream, false);
mDynEntCollList[0].ParsePtr(aStream, false);
mDynEntCollList[0].ParsePtr(aStream, false);
*aStream >> mChecksum;
if (planePtr)
{
for (int i = 0; i < mPlaneCount; i++)
{
XCPlane newCPlane;
newCPlane.ParseData(aStream);
mPlanes.append(newCPlane);
}
}
if (staticModelPtr)
{
for (int i = 0; i < mNumStaticModels; i++)
{
XCStaticModel newModel;
newModel.ParseData(aStream);
mStaticModelList.append(newModel);
}
}
if (materialsPtr)
{
for (int i = 0; i < mNumMaterials; i++)
{
XDMaterial newDMaterial;
newDMaterial.ParseData(aStream);
mMaterials.append(newDMaterial);
}
}
if (brushSidesPtr)
{
for (int i = 0; i < mNumBrushSides; i++)
{
XCBrushSide newBrushSide;
newBrushSide.ParseData(aStream);
mBrushsides.append(newBrushSide);
}
}
if (brushEdgesPtr)
{
for (int i = 0; i < mNumBrushEdges; i++)
{
quint8 newBrushEdge;
*aStream >> newBrushEdge;
mBrushEdges.append(newBrushEdge);
}
}
if (nodesPtr)
{
for (int i = 0; i < mNumNodes; i++)
{
XCNode newNode;
newNode.ParseData(aStream);
mNodes.append(newNode);
}
}
if (leafsPtr)
{
for (int i = 0; i < mNumLeafs; i++)
{
XCLeaf newLeaf;
newLeaf.ParseData(aStream);
mLeafs.append(newLeaf);
}
}
if (leafBrushesPtr)
{
for (int i = 0; i < mNumLeafBrushes; i++)
{
quint32 newBrush;
*aStream >> newBrush;
mLeafBrushes.append(newBrush);
}
}
if (leafsBrushNodesPtr)
{
for (int i = 0; i < mNumLeafBrushes; i++)
{
XCLeafBrushNode newBrushNode;
newBrushNode.ParseData(aStream);
mLeafBrushNodes.append(newBrushNode);
}
}
mLeafbrushNodes()
mLeafsurfaces()
mVerts()
mTriIndices()
mTriEdgeIsWalkable()
mBorders()
mPartitions()
mAabbTrees()
mCodels()
mBrushes()
mVisibility()
mMapEnts()
mBoxBrush()
mBoxModel()
mDynEntCount(0)
mDynEntDefList()
mDynEntPoseList()
mDynEntClientList()
mDynEntCollList()
(0)
}
}
void XClipMap::Clear()
{
}