From d92098571e1a8d3fe6bee95f1f4065814db701c3 Mon Sep 17 00:00:00 2001 From: njohnson Date: Sun, 7 Sep 2025 23:06:04 -0400 Subject: [PATCH] =?UTF-8?q?Implement=20XcBrush=20=E2=80=93=20brush=20geome?= =?UTF-8?q?try=20utilities?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/xassets/xcbrush.cpp | 58 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/libs/xassets/xcbrush.cpp b/libs/xassets/xcbrush.cpp index 7b0c3ee..eacfab3 100644 --- a/libs/xassets/xcbrush.cpp +++ b/libs/xassets/xcbrush.cpp @@ -6,10 +6,8 @@ XCBrush::XCBrush() , mContents(0) , mMaxs() , mNumsides() - , mSidesPtr() , mSides() , mAxialMaterialNum() - , mBaseAdjacentSidePtr() , mBaseAdjacentSide() , mFirstAdjacentSideOffsets() , mEdgeCount() @@ -24,7 +22,59 @@ XCBrush::~XCBrush() void XCBrush::ParseData(QDataStream *aStream) { - + if (GetPtr() == -1) + { + qint32 sidesPtr, baseAdjacentSidePtr; + *aStream + >> mMins[0] + >> mMins[1] + >> mMins[2] + >> mContents + >> mMaxs[0] + >> mMaxs[1] + >> mMaxs[2] + >> mNumsides + >> sidesPtr; + + for (int i = 0; i < 3; i++) + { + *aStream + >> mAxialMaterialNum[i][0] + >> mAxialMaterialNum[i][1] + >> mAxialMaterialNum[i][2]; + } + + *aStream >> baseAdjacentSidePtr; + + for (int i = 0; i < 3; i++) + { + *aStream + >> mFirstAdjacentSideOffsets[i][0] + >> mFirstAdjacentSideOffsets[i][1] + >> mFirstAdjacentSideOffsets[i][2]; + } + for (int i = 0; i < 3; i++) + { + *aStream + >> mEdgeCount[i][0] + >> mEdgeCount[i][1] + >> mEdgeCount[i][2]; + } + + aStream->skipRawData(10); + + if (sidesPtr == -1) + { + XCBrushSide newSize; + newSize.ParseData(aStream); + } + + if (baseAdjacentSidePtr == -1) + { + XCBrushSide newSize; + newSize.ParseData(aStream); + } + } } void XCBrush::Clear() @@ -33,10 +83,8 @@ void XCBrush::Clear() mContents = 0; mMaxs = QVector3D(); mNumsides = 0; - mSidesPtr = 0; mSides = QVector(); mAxialMaterialNum = QVector(); - mBaseAdjacentSidePtr = 0; mBaseAdjacentSide = 0; mFirstAdjacentSideOffsets = QVector(); mEdgeCount = QVector();