Update XClipMap parsing logic
This commit is contained in:
parent
1545a92c27
commit
84314df7cb
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user