Update XClipMap parsing logic

This commit is contained in:
njohnson 2025-09-07 23:11:48 -04:00
parent 1545a92c27
commit 84314df7cb

View File

@ -70,7 +70,7 @@ void XClipMap::ParseData(QDataStream *aStream)
qint32 planePtr, staticModelPtr, materialsPtr, brushSidesPtr, qint32 planePtr, staticModelPtr, materialsPtr, brushSidesPtr,
brushEdgesPtr, nodesPtr, leafsPtr, leafsBrushNodesPtr, brushEdgesPtr, nodesPtr, leafsPtr, leafsBrushNodesPtr,
leafBrushesPtr, leafSurfacesPtr, vertPtr1, vertPtr2, vertPtr3, leafBrushesPtr, leafSurfacesPtr, vertPtr,
triIndicesPtr, triEdgeWalkablePtr, bordersPtr, partitionsPtr, aabbTreesPtr, triIndicesPtr, triEdgeWalkablePtr, bordersPtr, partitionsPtr, aabbTreesPtr,
cModelsPtr; cModelsPtr;
*aStream *aStream
@ -96,9 +96,7 @@ void XClipMap::ParseData(QDataStream *aStream)
>> mNumLeafSurfaces >> mNumLeafSurfaces
>> leafSurfacesPtr >> leafSurfacesPtr
>> mVertCount >> mVertCount
>> vertPtr1 >> vertPtr
>> vertPtr2
>> vertPtr3
>> mTriCount >> mTriCount
>> triIndicesPtr >> triIndicesPtr
>> triEdgeWalkablePtr >> triEdgeWalkablePtr
@ -114,15 +112,17 @@ void XClipMap::ParseData(QDataStream *aStream)
aStream->skipRawData(2); aStream->skipRawData(2);
qint32 brushesPtr, visibilityPtr, mapEntsPtr, boxBrushPtr; qint32 brushesPtr, visibilityPtr, mapEntsPtr;
*aStream *aStream
>> brushesPtr >> brushesPtr
>> mNumClusters >> mNumClusters
>> mClusterBytes >> mClusterBytes
>> visibilityPtr >> visibilityPtr
>> mVised >> mVised
>> mapEntsPtr >> mapEntsPtr;
>> boxBrushPtr;
mMapEnts.ParsePtr(aStream, false);
mBoxBrush.ParsePtr(aStream, false);
mBoxModel.ParseData(aStream); mBoxModel.ParseData(aStream);
@ -236,24 +236,117 @@ void XClipMap::ParseData(QDataStream *aStream)
} }
} }
// mLeafsurfaces() if (leafSurfacesPtr)
// mVerts() {
// mTriIndices() for (int i = 0; i < mNumLeafBrushes; i++)
// mTriEdgeIsWalkable() {
// mBorders() quint32 newBrush;
// mPartitions() *aStream >> newBrush;
// mAabbTrees() mLeafSurfaces.append(newBrush);
// mCodels() }
// mBrushes() }
// mVisibility()
// mMapEnts() if (vertPtr)
// mBoxBrush() {
// mBoxModel() for (int i = 0; i < mVertCount; i++)
// mDynEntCount(0) {
// mDynEntDefList() QVector3D newVert;
// mDynEntPoseList() *aStream
// mDynEntClientList() >> newVert[0]
// mDynEntCollList() >> newVert[1]
>> newVert[2];
mVerts.append(newVert);
}
}
if (triIndicesPtr)
{
for (int i = 0; i < mTriCount; i++)
{
quint32 newTri;
*aStream >> newTri;
mTriIndices.append(newTri);
}
}
if (triEdgeWalkablePtr)
{
aStream->readRawData(mTriEdgeIsWalkable.data(), ((3 * mTriCount + 31) >> 3) & 0xFFFFFFFC);
}
if (bordersPtr)
{
for (int i = 0; i < mBorderCount; i++)
{
XCollisionBorder newBorder;
newBorder.ParseData(aStream);
mBorders.append(newBorder);
}
}
if (partitionsPtr)
{
for (int i = 0; i < mPartitionCount; i++)
{
XCollisionPartition newPartition;
newPartition.ParseData(aStream);
mPartitions.append(newPartition);
}
}
if (aabbTreesPtr)
{
for (int i = 0; i < mAabbTreeCount; i++)
{
XCollisionAabbTree newTree;
newTree.ParseData(aStream);
mAabbTrees.append(newTree);
}
}
if (cModelsPtr)
{
for (int i = 0; i < mNumSubModels; i++)
{
XCModel newCModel;
newCModel.ParseData(aStream);
mCModels.append(newCModel);
}
}
if (brushesPtr)
{
for (int i = 0; i < mNumBrushes; i++)
{
XCBrush newCBrush;
newCBrush.ParseData(aStream);
mBrushes.append(newCBrush);
}
}
if (visibilityPtr)
{
aStream->readRawData(mVisibility.data(), mClusterBytes * mNumClusters);
}
if (mapEntsPtr)
{
mMapEnts.ParseData(aStream);
}
mBoxBrush.ParseData(aStream);
mDynEntDefList[0].ParseData(aStream);
mDynEntDefList[0].ParseData(aStream);
mDynEntPoseList[0].ParseData(aStream);
mDynEntPoseList[0].ParseData(aStream);
mDynEntClientList[0].ParseData(aStream);
mDynEntClientList[0].ParseData(aStream);
mDynEntCollList[0].ParseData(aStream);
mDynEntCollList[0].ParseData(aStream);
} }
} }