Compare commits
No commits in common. "2f044a8d94e9270add1be8fb5ea5f2687b77d701" and "1eb340aaeae188dead61b08a661001948dec443a" have entirely different histories.
2f044a8d94
...
1eb340aaea
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
XBoneInfo::XBoneInfo()
|
XBoneInfo::XBoneInfo()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mBounds(3)
|
, mBounds()
|
||||||
, mOffset()
|
, mOffset()
|
||||||
, mRadiusSquared(0)
|
, mRadiusSquared(0)
|
||||||
{
|
{
|
||||||
@ -16,25 +16,12 @@ XBoneInfo::~XBoneInfo()
|
|||||||
|
|
||||||
void XBoneInfo::ParseData(QDataStream *aStream)
|
void XBoneInfo::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
*aStream
|
|
||||||
>> mBounds[0][0]
|
|
||||||
>> mBounds[0][1]
|
|
||||||
>> mBounds[0][2]
|
|
||||||
>> mBounds[1][0]
|
|
||||||
>> mBounds[1][1]
|
|
||||||
>> mBounds[1][2]
|
|
||||||
>> mOffset[0]
|
|
||||||
>> mOffset[1]
|
|
||||||
>> mOffset[2]
|
|
||||||
>> mRadiusSquared;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XBoneInfo::Clear()
|
void XBoneInfo::Clear()
|
||||||
{
|
{
|
||||||
mBounds.clear();
|
mBounds = QVector<QVector3D>();
|
||||||
mOffset = QVector3D();
|
mOffset = QVector3D();
|
||||||
mRadiusSquared = 0;
|
mRadiusSquared = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,8 +6,10 @@ XCBrush::XCBrush()
|
|||||||
, mContents(0)
|
, mContents(0)
|
||||||
, mMaxs()
|
, mMaxs()
|
||||||
, mNumsides()
|
, mNumsides()
|
||||||
|
, mSidesPtr()
|
||||||
, mSides()
|
, mSides()
|
||||||
, mAxialMaterialNum()
|
, mAxialMaterialNum()
|
||||||
|
, mBaseAdjacentSidePtr()
|
||||||
, mBaseAdjacentSide()
|
, mBaseAdjacentSide()
|
||||||
, mFirstAdjacentSideOffsets()
|
, mFirstAdjacentSideOffsets()
|
||||||
, mEdgeCount()
|
, mEdgeCount()
|
||||||
@ -22,59 +24,7 @@ XCBrush::~XCBrush()
|
|||||||
|
|
||||||
void XCBrush::ParseData(QDataStream *aStream)
|
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()
|
void XCBrush::Clear()
|
||||||
@ -83,8 +33,10 @@ void XCBrush::Clear()
|
|||||||
mContents = 0;
|
mContents = 0;
|
||||||
mMaxs = QVector3D();
|
mMaxs = QVector3D();
|
||||||
mNumsides = 0;
|
mNumsides = 0;
|
||||||
|
mSidesPtr = 0;
|
||||||
mSides = QVector<XCBrushSide>();
|
mSides = QVector<XCBrushSide>();
|
||||||
mAxialMaterialNum = QVector<QVector3D>();
|
mAxialMaterialNum = QVector<QVector3D>();
|
||||||
|
mBaseAdjacentSidePtr = 0;
|
||||||
mBaseAdjacentSide = 0;
|
mBaseAdjacentSide = 0;
|
||||||
mFirstAdjacentSideOffsets = QVector<QVector3D>();
|
mFirstAdjacentSideOffsets = QVector<QVector3D>();
|
||||||
mEdgeCount = QVector<QVector3D>();
|
mEdgeCount = QVector<QVector3D>();
|
||||||
|
|||||||
@ -20,8 +20,10 @@ private:
|
|||||||
int mContents;
|
int mContents;
|
||||||
QVector3D mMaxs;
|
QVector3D mMaxs;
|
||||||
uint mNumsides;
|
uint mNumsides;
|
||||||
|
qint32 mSidesPtr;
|
||||||
QVector<XCBrushSide> mSides;
|
QVector<XCBrushSide> mSides;
|
||||||
QVector<QVector3D> mAxialMaterialNum;
|
QVector<QVector3D> mAxialMaterialNum;
|
||||||
|
qint32 mBaseAdjacentSidePtr;
|
||||||
quint8 mBaseAdjacentSide;
|
quint8 mBaseAdjacentSide;
|
||||||
QVector<QVector3D> mFirstAdjacentSideOffsets;
|
QVector<QVector3D> mFirstAdjacentSideOffsets;
|
||||||
QVector<QVector3D> mEdgeCount;
|
QVector<QVector3D> mEdgeCount;
|
||||||
|
|||||||
@ -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, vertPtr,
|
leafBrushesPtr, leafSurfacesPtr, vertPtr1, vertPtr2, vertPtr3,
|
||||||
triIndicesPtr, triEdgeWalkablePtr, bordersPtr, partitionsPtr, aabbTreesPtr,
|
triIndicesPtr, triEdgeWalkablePtr, bordersPtr, partitionsPtr, aabbTreesPtr,
|
||||||
cModelsPtr;
|
cModelsPtr;
|
||||||
*aStream
|
*aStream
|
||||||
@ -96,7 +96,9 @@ void XClipMap::ParseData(QDataStream *aStream)
|
|||||||
>> mNumLeafSurfaces
|
>> mNumLeafSurfaces
|
||||||
>> leafSurfacesPtr
|
>> leafSurfacesPtr
|
||||||
>> mVertCount
|
>> mVertCount
|
||||||
>> vertPtr
|
>> vertPtr1
|
||||||
|
>> vertPtr2
|
||||||
|
>> vertPtr3
|
||||||
>> mTriCount
|
>> mTriCount
|
||||||
>> triIndicesPtr
|
>> triIndicesPtr
|
||||||
>> triEdgeWalkablePtr
|
>> triEdgeWalkablePtr
|
||||||
@ -112,17 +114,15 @@ void XClipMap::ParseData(QDataStream *aStream)
|
|||||||
|
|
||||||
aStream->skipRawData(2);
|
aStream->skipRawData(2);
|
||||||
|
|
||||||
qint32 brushesPtr, visibilityPtr, mapEntsPtr;
|
qint32 brushesPtr, visibilityPtr, mapEntsPtr, boxBrushPtr;
|
||||||
*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,117 +236,24 @@ void XClipMap::ParseData(QDataStream *aStream)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (leafSurfacesPtr)
|
// mLeafsurfaces()
|
||||||
{
|
// mVerts()
|
||||||
for (int i = 0; i < mNumLeafBrushes; i++)
|
// mTriIndices()
|
||||||
{
|
// mTriEdgeIsWalkable()
|
||||||
quint32 newBrush;
|
// mBorders()
|
||||||
*aStream >> newBrush;
|
// mPartitions()
|
||||||
mLeafSurfaces.append(newBrush);
|
// mAabbTrees()
|
||||||
}
|
// mCodels()
|
||||||
}
|
// mBrushes()
|
||||||
|
// mVisibility()
|
||||||
if (vertPtr)
|
// mMapEnts()
|
||||||
{
|
// mBoxBrush()
|
||||||
for (int i = 0; i < mVertCount; i++)
|
// mBoxModel()
|
||||||
{
|
// mDynEntCount(0)
|
||||||
QVector3D newVert;
|
// mDynEntDefList()
|
||||||
*aStream
|
// mDynEntPoseList()
|
||||||
>> newVert[0]
|
// mDynEntClientList()
|
||||||
>> newVert[1]
|
// mDynEntCollList()
|
||||||
>> 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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -61,14 +61,14 @@ private:
|
|||||||
QVector<quint32> mLeafBrushes;
|
QVector<quint32> mLeafBrushes;
|
||||||
|
|
||||||
quint32 mNumLeafSurfaces;
|
quint32 mNumLeafSurfaces;
|
||||||
QVector<quint32> mLeafSurfaces;
|
QVector<uint> mLeafSurfaces;
|
||||||
|
|
||||||
quint32 mVertCount;
|
quint32 mVertCount;
|
||||||
QVector<QVector3D> mVerts;
|
QVector<float> mVerts;
|
||||||
|
|
||||||
int mTriCount;
|
int mTriCount;
|
||||||
QVector<quint32> mTriIndices;
|
QVector<quint32> mTriIndices;
|
||||||
QByteArray mTriEdgeIsWalkable;
|
QVector<quint8> mTriEdgeIsWalkable;
|
||||||
|
|
||||||
int mBorderCount;
|
int mBorderCount;
|
||||||
QVector<XCollisionBorder> mBorders;
|
QVector<XCollisionBorder> mBorders;
|
||||||
@ -89,9 +89,9 @@ private:
|
|||||||
int mClusterBytes;
|
int mClusterBytes;
|
||||||
|
|
||||||
qint32 mVisibilityPtr;
|
qint32 mVisibilityPtr;
|
||||||
QByteArray mVisibility;
|
QVector<quint8> mVisibility;
|
||||||
int mVised;
|
int mVised;
|
||||||
XMapEnts mMapEnts;
|
QVector<XMapEnts> mMapEnts;
|
||||||
XCBrush mBoxBrush;
|
XCBrush mBoxBrush;
|
||||||
XCModel mBoxModel;
|
XCModel mBoxModel;
|
||||||
QVector<quint32> mDynEntCounts;
|
QVector<quint32> mDynEntCounts;
|
||||||
|
|||||||
@ -17,16 +17,7 @@ XCModel::~XCModel()
|
|||||||
|
|
||||||
void XCModel::ParseData(QDataStream *aStream)
|
void XCModel::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream
|
|
||||||
>> mMins[0]
|
|
||||||
>> mMins[1]
|
|
||||||
>> mMins[2]
|
|
||||||
>> mMaxs[0]
|
|
||||||
>> mMaxs[1]
|
|
||||||
>> mMaxs[2]
|
|
||||||
>> mRadius;
|
|
||||||
|
|
||||||
mLeaf.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XCModel::Clear()
|
void XCModel::Clear()
|
||||||
|
|||||||
@ -15,9 +15,7 @@ XCollisionAabbTreeIndex::~XCollisionAabbTreeIndex()
|
|||||||
|
|
||||||
void XCollisionAabbTreeIndex::ParseData(QDataStream *aStream) {
|
void XCollisionAabbTreeIndex::ParseData(QDataStream *aStream) {
|
||||||
if (GetPtr() == -1) {
|
if (GetPtr() == -1) {
|
||||||
*aStream
|
*aStream >> mFirstChildIndex;
|
||||||
>> mFirstChildIndex
|
|
||||||
>> mPartitionIndex;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
XCollisionBorder::XCollisionBorder()
|
XCollisionBorder::XCollisionBorder()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mDistEq(3)
|
, mDistEq()
|
||||||
, mZBase(0.0f)
|
, mZBase(0.0f)
|
||||||
, mZSlope(0.0f)
|
, mZSlope(0.0f)
|
||||||
, mStart(0.0f)
|
, mStart(0.0f)
|
||||||
@ -18,9 +18,7 @@ XCollisionBorder::~XCollisionBorder()
|
|||||||
void XCollisionBorder::ParseData(QDataStream *aStream) {
|
void XCollisionBorder::ParseData(QDataStream *aStream) {
|
||||||
if (GetPtr() == -1) {
|
if (GetPtr() == -1) {
|
||||||
*aStream
|
*aStream
|
||||||
>> mDistEq[0]
|
>> mDistEq
|
||||||
>> mDistEq[1]
|
|
||||||
>> mDistEq[2]
|
|
||||||
>> mZBase
|
>> mZBase
|
||||||
>> mZSlope
|
>> mZSlope
|
||||||
>> mStart
|
>> mStart
|
||||||
@ -30,7 +28,7 @@ void XCollisionBorder::ParseData(QDataStream *aStream) {
|
|||||||
|
|
||||||
void XCollisionBorder::Clear()
|
void XCollisionBorder::Clear()
|
||||||
{
|
{
|
||||||
mDistEq.clear();
|
mDistEq = QVector3D();
|
||||||
mZBase = 0.0f;
|
mZBase = 0.0f;
|
||||||
mZSlope = 0.0f;
|
mZSlope = 0.0f;
|
||||||
mStart = 0.0f;
|
mStart = 0.0f;
|
||||||
|
|||||||
@ -15,7 +15,7 @@ public:
|
|||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector<float> mDistEq;
|
QVector3D mDistEq;
|
||||||
float mZBase;
|
float mZBase;
|
||||||
float mZSlope;
|
float mZSlope;
|
||||||
float mStart;
|
float mStart;
|
||||||
|
|||||||
@ -17,25 +17,9 @@ XCollisionPartition::~XCollisionPartition()
|
|||||||
void XCollisionPartition::ParseData(QDataStream *aStream) {
|
void XCollisionPartition::ParseData(QDataStream *aStream) {
|
||||||
if (GetPtr() == -1) {
|
if (GetPtr() == -1) {
|
||||||
*aStream
|
*aStream
|
||||||
>> mTriCount
|
>>mTriCount
|
||||||
>> mBorderCount;
|
>>mBorderCount
|
||||||
|
>>mFirstTri;
|
||||||
aStream->skipRawData(2);
|
|
||||||
|
|
||||||
qint32 bordersPtr;
|
|
||||||
*aStream
|
|
||||||
>> mFirstTri
|
|
||||||
>> bordersPtr;
|
|
||||||
|
|
||||||
if (bordersPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mBorderCount; i++)
|
|
||||||
{
|
|
||||||
XCollisionBorder newBorder;
|
|
||||||
newBorder.ParseData(aStream);
|
|
||||||
mBorders.append(newBorder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,15 +10,10 @@ XD3DIndexBuffer::XD3DIndexBuffer()
|
|||||||
|
|
||||||
void XD3DIndexBuffer::ParseData(QDataStream *aStream)
|
void XD3DIndexBuffer::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
XD3DResource::ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mAddress
|
|
||||||
>> mSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XD3DIndexBuffer::Clear()
|
void XD3DIndexBuffer::Clear()
|
||||||
{
|
{
|
||||||
mAddress = 0;
|
|
||||||
mSize = 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,23 +16,12 @@ XDObjAnimMat::~XDObjAnimMat()
|
|||||||
|
|
||||||
void XDObjAnimMat::ParseData(QDataStream *aStream)
|
void XDObjAnimMat::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
*aStream
|
|
||||||
>> mQuat[0]
|
|
||||||
>> mQuat[1]
|
|
||||||
>> mQuat[2]
|
|
||||||
>> mQuat[3]
|
|
||||||
>> mTrans[0]
|
|
||||||
>> mTrans[1]
|
|
||||||
>> mTrans[2]
|
|
||||||
>> mTransWeight;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XDObjAnimMat::Clear()
|
void XDObjAnimMat::Clear()
|
||||||
{
|
{
|
||||||
mQuat.clear();
|
mQuat = QVector<float>();
|
||||||
mTrans.clear();
|
mTrans = QVector<float>();
|
||||||
mTransWeight = 0;
|
mTransWeight = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,14 +17,7 @@ XDynEntityClient::~XDynEntityClient()
|
|||||||
|
|
||||||
void XDynEntityClient::ParseData(QDataStream *aStream)
|
void XDynEntityClient::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr())
|
|
||||||
{
|
|
||||||
*aStream
|
|
||||||
>> mPhysObjId
|
|
||||||
>> mFlags
|
|
||||||
>> mLightingHandle
|
|
||||||
>> mHealth;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XDynEntityClient::Clear()
|
void XDynEntityClient::Clear()
|
||||||
|
|||||||
@ -17,23 +17,13 @@ XDynEntityColl::~XDynEntityColl()
|
|||||||
|
|
||||||
void XDynEntityColl::ParseData(QDataStream *aStream)
|
void XDynEntityColl::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (GetPtr())
|
|
||||||
{
|
|
||||||
*aStream
|
|
||||||
>> mSector
|
|
||||||
>> mNextEntInSector
|
|
||||||
>> mLinkMins[0]
|
|
||||||
>> mLinkMins[1]
|
|
||||||
>> mLinkMaxs[0]
|
|
||||||
>> mLinkMaxs[1];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XDynEntityColl::Clear()
|
void XDynEntityColl::Clear()
|
||||||
{
|
{
|
||||||
mSector = 0;
|
mSector = 0;
|
||||||
mNextEntInSector = 0;
|
mNextEntInSector = 0;
|
||||||
mLinkMins = QVector2D();
|
mLinkMins.clear();
|
||||||
mLinkMaxs = QVector2D();
|
mLinkMaxs.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
|
|
||||||
#include <QVector2D>
|
#include <QVector>
|
||||||
|
|
||||||
class XDynEntityColl : public XAsset
|
class XDynEntityColl : public XAsset
|
||||||
{
|
{
|
||||||
@ -17,8 +17,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
quint32 mSector;
|
quint32 mSector;
|
||||||
quint32 mNextEntInSector;
|
quint32 mNextEntInSector;
|
||||||
QVector2D mLinkMins;
|
QVector<float> mLinkMins;
|
||||||
QVector2D mLinkMaxs;
|
QVector<float> mLinkMaxs;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XDYNENTITYCOLL_H
|
#endif // XDYNENTITYCOLL_H
|
||||||
|
|||||||
@ -4,11 +4,15 @@ XDynEntityDef::XDynEntityDef()
|
|||||||
: XAsset()
|
: XAsset()
|
||||||
, mType()
|
, mType()
|
||||||
, mPose()
|
, mPose()
|
||||||
|
, mModelPtr(0)
|
||||||
, mModel()
|
, mModel()
|
||||||
, mBrushModel(0)
|
, mBrushModel(0)
|
||||||
, mPhysicsBrushModel(0)
|
, mPhysicsBrushModel(0)
|
||||||
|
, mBestroyFxPtr(0)
|
||||||
, mDestroyFx()
|
, mDestroyFx()
|
||||||
|
, mDestroyPiecesPtr(0)
|
||||||
, mDestroyPieces()
|
, mDestroyPieces()
|
||||||
|
, mPhysPresetPtr(0)
|
||||||
, mPhysPreset()
|
, mPhysPreset()
|
||||||
, mHealth(0)
|
, mHealth(0)
|
||||||
, mMass()
|
, mMass()
|
||||||
@ -24,32 +28,7 @@ XDynEntityDef::~XDynEntityDef()
|
|||||||
|
|
||||||
void XDynEntityDef::ParseData(QDataStream *aStream)
|
void XDynEntityDef::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr())
|
|
||||||
{
|
|
||||||
*aStream >> mType;
|
|
||||||
|
|
||||||
mPose.ParseData(aStream);
|
|
||||||
mModel.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mBrushModel
|
|
||||||
>> mPhysicsBrushModel;
|
|
||||||
|
|
||||||
mDestroyFx.ParsePtr(aStream, false);
|
|
||||||
mDestroyPieces.ParsePtr(aStream, false);
|
|
||||||
mPhysPreset.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream >> mHealth;
|
|
||||||
|
|
||||||
mMass.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream >> mContents;
|
|
||||||
|
|
||||||
mModel.ParseData(aStream);
|
|
||||||
mDestroyFx.ParseData(aStream);
|
|
||||||
mDestroyPieces.ParseData(aStream);
|
|
||||||
mPhysPreset.ParseData(aStream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XDynEntityDef::Clear()
|
void XDynEntityDef::Clear()
|
||||||
|
|||||||
@ -27,11 +27,15 @@ public:
|
|||||||
private:
|
private:
|
||||||
XDynEntityType mType;
|
XDynEntityType mType;
|
||||||
XGfxPlacement mPose;
|
XGfxPlacement mPose;
|
||||||
|
qint32 mModelPtr;
|
||||||
XModel mModel;
|
XModel mModel;
|
||||||
quint32 mBrushModel;
|
quint32 mBrushModel;
|
||||||
quint32 mPhysicsBrushModel;
|
quint32 mPhysicsBrushModel;
|
||||||
|
qint32 mBestroyFxPtr;
|
||||||
XFxEffectDef mDestroyFx;
|
XFxEffectDef mDestroyFx;
|
||||||
|
qint32 mDestroyPiecesPtr;
|
||||||
XModelPieces mDestroyPieces;
|
XModelPieces mDestroyPieces;
|
||||||
|
qint32 mPhysPresetPtr;
|
||||||
XPhysPreset mPhysPreset;
|
XPhysPreset mPhysPreset;
|
||||||
int mHealth;
|
int mHealth;
|
||||||
XPhysMass mMass;
|
XPhysMass mMass;
|
||||||
|
|||||||
@ -15,16 +15,11 @@ XDynEntityPose::~XDynEntityPose()
|
|||||||
|
|
||||||
void XDynEntityPose::ParseData(QDataStream *aStream)
|
void XDynEntityPose::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr())
|
mPose = XGfxPlacement();
|
||||||
{
|
mRadius = 0.0f;
|
||||||
mPose.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream >> mRadius;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XDynEntityPose::Clear()
|
void XDynEntityPose::Clear()
|
||||||
{
|
{
|
||||||
mPose.Clear();
|
|
||||||
mRadius = 0.0f;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
XFont::XFont()
|
XFont::XFont()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mFontName()
|
, mFontName("")
|
||||||
, mPixelHeight(0)
|
, mPixelHeight(0)
|
||||||
, mGlyphCount(0)
|
, mGlyphCount(0)
|
||||||
, mMaterial()
|
, mMaterial(new XMaterial())
|
||||||
, mGlowMaterial()
|
, mGlowMaterial(new XMaterial())
|
||||||
, mGlyphs()
|
, mGlyphs()
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_FONT);
|
SetType(ASSET_TYPE_FONT);
|
||||||
@ -20,42 +20,15 @@ XFont::~XFont()
|
|||||||
|
|
||||||
void XFont::Clear()
|
void XFont::Clear()
|
||||||
{
|
{
|
||||||
mFontName.Clear();
|
mFontName = "";
|
||||||
mPixelHeight = 0;
|
mPixelHeight = 0;
|
||||||
mGlyphCount = 0;
|
mGlyphCount = 0;
|
||||||
mMaterial.Clear();
|
delete mMaterial;
|
||||||
mGlowMaterial.Clear();
|
delete mGlowMaterial;
|
||||||
mGlyphs.clear();
|
mGlyphs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void XFont::ParseData(QDataStream *aStream)
|
void XFont::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
mFontName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 glyphsPtr;
|
|
||||||
*aStream
|
|
||||||
>> mPixelHeight
|
|
||||||
>> mGlyphCount;
|
|
||||||
|
|
||||||
mMaterial.ParsePtr(aStream, false);
|
|
||||||
mGlowMaterial.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream >> glyphsPtr;
|
|
||||||
|
|
||||||
mFontName.ParseData(aStream);
|
|
||||||
mMaterial.ParseData(aStream);
|
|
||||||
mGlowMaterial.ParseData(aStream);
|
|
||||||
|
|
||||||
if (glyphsPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mGlyphCount; i++)
|
|
||||||
{
|
|
||||||
XGlyph newGlyph;
|
|
||||||
newGlyph.ParseData(aStream);
|
|
||||||
mGlyphs.append(newGlyph);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,11 +15,11 @@ public:
|
|||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mFontName;
|
QString mFontName;
|
||||||
int mPixelHeight;
|
int mPixelHeight;
|
||||||
int mGlyphCount;
|
int mGlyphCount;
|
||||||
XMaterial mMaterial;
|
XMaterial *mMaterial;
|
||||||
XMaterial mGlowMaterial;
|
XMaterial *mGlowMaterial;
|
||||||
QVector<XGlyph> mGlyphs;
|
QVector<XGlyph> mGlyphs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
XFxEffectDef::XFxEffectDef()
|
XFxEffectDef::XFxEffectDef()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName("")
|
||||||
, mFlags(0)
|
, mFlags(0)
|
||||||
, mTotalSize(0)
|
, mTotalSize(0)
|
||||||
, mMsecLoopingLife(0)
|
, mMsecLoopingLife(0)
|
||||||
@ -27,27 +27,5 @@ void XFxEffectDef::Clear()
|
|||||||
|
|
||||||
void XFxEffectDef::ParseData(QDataStream *aStream)
|
void XFxEffectDef::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 elemDefsPtr;
|
|
||||||
*aStream
|
|
||||||
>> mFlags
|
|
||||||
>> mTotalSize
|
|
||||||
>> mMsecLoopingLife
|
|
||||||
>> mElemDefCountLooping
|
|
||||||
>> mElemDefCountOneShot
|
|
||||||
>> mElemDefCountEmission
|
|
||||||
>> elemDefsPtr;
|
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
|
||||||
|
|
||||||
if (elemDefsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mElemDefCountEmission + mElemDefCountOneShot + mElemDefCountLooping; i++)
|
|
||||||
{
|
|
||||||
XFxElemDef newElemDef;
|
|
||||||
newElemDef.ParseData(aStream);
|
|
||||||
mElemDefs.append(newElemDef);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ public:
|
|||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
QString mName;
|
||||||
int mFlags;
|
int mFlags;
|
||||||
int mTotalSize;
|
int mTotalSize;
|
||||||
int mMsecLoopingLife;
|
int mMsecLoopingLife;
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
#include "xfxelemdef.h"
|
#include "xfxelemdef.h"
|
||||||
|
#include "xfxtraildef.h"
|
||||||
|
|
||||||
XFxElemDef::XFxElemDef()
|
XFxElemDef::XFxElemDef()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
@ -10,11 +11,11 @@ XFxElemDef::XFxElemDef()
|
|||||||
, mSpawnFrustumCullRadius(0)
|
, mSpawnFrustumCullRadius(0)
|
||||||
, mSpawnDelayMsec()
|
, mSpawnDelayMsec()
|
||||||
, mLifeSpanMsec()
|
, mLifeSpanMsec()
|
||||||
, mSpawnOrigin(3)
|
, mSpawnOrigin()
|
||||||
, mSpawnOffsetRadius()
|
, mSpawnOffsetRadius()
|
||||||
, mSpawnOffsetHeight()
|
, mSpawnOffsetHeight()
|
||||||
, mSpawnAngles(3)
|
, mSpawnAngles()
|
||||||
, mAngularVelocity(3)
|
, mAngularVelocity()
|
||||||
, mInitialRotation()
|
, mInitialRotation()
|
||||||
, mGravity()
|
, mGravity()
|
||||||
, mReflectionFactor()
|
, mReflectionFactor()
|
||||||
@ -35,7 +36,8 @@ XFxElemDef::XFxElemDef()
|
|||||||
, mEffectEmitted()
|
, mEffectEmitted()
|
||||||
, mEmitDist()
|
, mEmitDist()
|
||||||
, mEmitDistVariance()
|
, mEmitDistVariance()
|
||||||
, mTrailDef()
|
, mTrailDefPtr(0)
|
||||||
|
, mTrailDef(new XFxTrailDef())
|
||||||
, mSortOrder(0)
|
, mSortOrder(0)
|
||||||
, mLightingFrac(0)
|
, mLightingFrac(0)
|
||||||
, mUseItemClip(0)
|
, mUseItemClip(0)
|
||||||
@ -83,7 +85,8 @@ void XFxElemDef::Clear()
|
|||||||
mEffectEmitted.Clear();
|
mEffectEmitted.Clear();
|
||||||
mEmitDist.Clear();
|
mEmitDist.Clear();
|
||||||
mEmitDistVariance.Clear();
|
mEmitDistVariance.Clear();
|
||||||
mTrailDef.Clear();
|
mTrailDefPtr = 0;
|
||||||
|
mTrailDef->Clear();
|
||||||
mSortOrder = 0;
|
mSortOrder = 0;
|
||||||
mLightingFrac = 0;
|
mLightingFrac = 0;
|
||||||
mUseItemClip = 0;
|
mUseItemClip = 0;
|
||||||
@ -91,90 +94,5 @@ void XFxElemDef::Clear()
|
|||||||
|
|
||||||
void XFxElemDef::ParseData(QDataStream *aStream)
|
void XFxElemDef::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream >> mFlags;
|
|
||||||
|
|
||||||
mSpawn.ParseData(aStream);
|
|
||||||
mSpawnRange.ParseData(aStream);
|
|
||||||
mFadeInRange.ParseData(aStream);
|
|
||||||
mFadeOutRange.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream >> mSpawnFrustumCullRadius;
|
|
||||||
|
|
||||||
mSpawnDelayMsec.ParseData(aStream);
|
|
||||||
mLifeSpanMsec.ParseData(aStream);
|
|
||||||
for (int i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
mSpawnOrigin[i].ParseData(aStream);
|
|
||||||
}
|
|
||||||
mSpawnOffsetRadius.ParseData(aStream);
|
|
||||||
mSpawnOffsetHeight.ParseData(aStream);
|
|
||||||
for (int i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
mSpawnAngles[i].ParseData(aStream);
|
|
||||||
}
|
|
||||||
for (int i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
mAngularVelocity[i].ParseData(aStream);
|
|
||||||
}
|
|
||||||
mInitialRotation.ParseData(aStream);
|
|
||||||
mGravity.ParseData(aStream);
|
|
||||||
mReflectionFactor.ParseData(aStream);
|
|
||||||
mAtlas.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 velSamplesPtr, visSamplesPtr;
|
|
||||||
*aStream
|
|
||||||
>> mElemType
|
|
||||||
>> mVisualCount
|
|
||||||
>> mVelIntervalCount
|
|
||||||
>> mVisStateIntervalCount
|
|
||||||
>> velSamplesPtr
|
|
||||||
>> visSamplesPtr;
|
|
||||||
|
|
||||||
mVisuals.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mCollMins[0]
|
|
||||||
>> mCollMins[1]
|
|
||||||
>> mCollMins[2]
|
|
||||||
>> mCollMaxs[0]
|
|
||||||
>> mCollMaxs[1]
|
|
||||||
>> mCollMaxs[2];
|
|
||||||
|
|
||||||
mEffectOnImpact.ParseData(aStream);
|
|
||||||
mEffectOnDeath.ParseData(aStream);
|
|
||||||
mEffectEmitted.ParseData(aStream);
|
|
||||||
mEmitDist.ParseData(aStream);
|
|
||||||
mEmitDistVariance.ParseData(aStream);
|
|
||||||
mEffectOnImpact.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 trailDefPtr;
|
|
||||||
*aStream
|
|
||||||
>> trailDefPtr
|
|
||||||
>> mSortOrder
|
|
||||||
>> mLightingFrac
|
|
||||||
>> mUseItemClip;
|
|
||||||
|
|
||||||
aStream->skipRawData(1);
|
|
||||||
|
|
||||||
if (velSamplesPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mVelIntervalCount + 1; i++)
|
|
||||||
{
|
|
||||||
XFxElemVelStateSample newVelSample;
|
|
||||||
newVelSample.ParseData(aStream);
|
|
||||||
mVelSamples.append(newVelSample);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (visSamplesPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mVisStateIntervalCount + 1; i++)
|
|
||||||
{
|
|
||||||
XFxElemVisStateSample newVisSample;
|
|
||||||
newVisSample.ParseData(aStream);
|
|
||||||
mVisSamples.append(newVisSample);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Finish this ugh
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,8 @@
|
|||||||
#include "xfxelemvisstatesample.h"
|
#include "xfxelemvisstatesample.h"
|
||||||
#include "xeffectdefref.h"
|
#include "xeffectdefref.h"
|
||||||
#include "xfxelemdefvisuals.h"
|
#include "xfxelemdefvisuals.h"
|
||||||
#include "xfxtraildef.h"
|
|
||||||
|
class XFxTrailDef;
|
||||||
|
|
||||||
class XFxElemDef : public XAsset
|
class XFxElemDef : public XAsset
|
||||||
{
|
{
|
||||||
@ -56,7 +57,8 @@ private:
|
|||||||
XFxFloatRange mEmitDist;
|
XFxFloatRange mEmitDist;
|
||||||
XFxFloatRange mEmitDistVariance;
|
XFxFloatRange mEmitDistVariance;
|
||||||
|
|
||||||
XFxTrailDef mTrailDef;
|
qint32 mTrailDefPtr;
|
||||||
|
XFxTrailDef* mTrailDef;
|
||||||
|
|
||||||
quint8 mSortOrder;
|
quint8 mSortOrder;
|
||||||
quint8 mLightingFrac;
|
quint8 mLightingFrac;
|
||||||
|
|||||||
@ -21,11 +21,5 @@ void XFxElemVec3Range::Clear()
|
|||||||
|
|
||||||
void XFxElemVec3Range::ParseData(QDataStream *aStream)
|
void XFxElemVec3Range::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream
|
|
||||||
>> mBase[0]
|
|
||||||
>> mBase[1]
|
|
||||||
>> mBase[2]
|
|
||||||
>> mAmplitude[0]
|
|
||||||
>> mAmplitude[1]
|
|
||||||
>> mAmplitude[2];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,5 @@ void XFxElemVelStateInFrame::Clear()
|
|||||||
|
|
||||||
void XFxElemVelStateInFrame::ParseData(QDataStream *aStream)
|
void XFxElemVelStateInFrame::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mVelocity.ParseData(aStream);
|
|
||||||
mTotalDelta.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,5 @@ void XFxElemVelStateSample::Clear()
|
|||||||
|
|
||||||
void XFxElemVelStateSample::ParseData(QDataStream *aStream)
|
void XFxElemVelStateSample::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mLocal.ParseData(aStream);
|
|
||||||
mWorld.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,5 @@ void XFxElemVisStateSample::Clear()
|
|||||||
|
|
||||||
void XFxElemVisStateSample::ParseData(QDataStream *aStream)
|
void XFxElemVisStateSample::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mBase.ParseData(aStream);
|
|
||||||
mAmplitude.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,23 +27,5 @@ void XFxElemVisualState::Clear()
|
|||||||
|
|
||||||
void XFxElemVisualState::ParseData(QDataStream *aStream)
|
void XFxElemVisualState::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
quint8 r, g, b, a;
|
|
||||||
*aStream
|
|
||||||
>> r
|
|
||||||
>> g
|
|
||||||
>> b
|
|
||||||
>> a;
|
|
||||||
mColor = QColor(r, g, b, a);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mRotationDelta
|
|
||||||
>> mRotationTotal;
|
|
||||||
|
|
||||||
float width, height;
|
|
||||||
*aStream
|
|
||||||
>> width
|
|
||||||
>> height;
|
|
||||||
mSize = QSize(width, height);
|
|
||||||
|
|
||||||
*aStream >> mScale;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
XGameWorldMp::XGameWorldMp()
|
XGameWorldMp::XGameWorldMp()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName("")
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_GAMEWORLD_MP);
|
SetType(ASSET_TYPE_GAMEWORLD_MP);
|
||||||
SetName("GameWorld MP");
|
SetName("GameWorld MP");
|
||||||
@ -17,11 +17,19 @@ XGameWorldMp::~XGameWorldMp()
|
|||||||
void XGameWorldMp::ParseData(QDataStream *aStream) {
|
void XGameWorldMp::ParseData(QDataStream *aStream) {
|
||||||
// Parse the name string
|
// Parse the name string
|
||||||
if (GetPtr() == -1) {
|
if (GetPtr() == -1) {
|
||||||
mName.ParsePtr(aStream);
|
mName = XString::ParseCustom(aStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGameWorldMp::Clear()
|
void XGameWorldMp::Clear()
|
||||||
{
|
{
|
||||||
mName.Clear();
|
mName.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString XGameWorldMp::GetName() const {
|
||||||
|
return mName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void XGameWorldMp::SetName(const QString& name) {
|
||||||
|
mName = name;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
#define XGAMEWORLDMP_H
|
#define XGAMEWORLDMP_H
|
||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xstring.h"
|
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
@ -15,8 +14,11 @@ public:
|
|||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
|
QString GetName() const;
|
||||||
|
void SetName(const QString& name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
QString mName;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XGAMEWORLDMP_H
|
#endif // XGAMEWORLDMP_H
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
XGameWorldSp::XGameWorldSp()
|
XGameWorldSp::XGameWorldSp()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName("")
|
||||||
, mPath()
|
, mPath()
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_GAMEWORLD_SP);
|
SetType(ASSET_TYPE_GAMEWORLD_SP);
|
||||||
@ -18,14 +18,24 @@ XGameWorldSp::~XGameWorldSp()
|
|||||||
void XGameWorldSp::ParseData(QDataStream *aStream) {
|
void XGameWorldSp::ParseData(QDataStream *aStream) {
|
||||||
// Parse the name string
|
// Parse the name string
|
||||||
if (GetPtr() == -1) {
|
if (GetPtr() == -1) {
|
||||||
mName.ParsePtr(aStream, false);
|
mName = XString::ParseCustom(aStream);
|
||||||
|
|
||||||
|
// Parse the path data using our new XPathData class
|
||||||
mPath.ParseData(aStream);
|
mPath.ParseData(aStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGameWorldSp::Clear()
|
void XGameWorldSp::Clear()
|
||||||
{
|
{
|
||||||
mName.Clear();
|
mName.clear();
|
||||||
mPath.Clear();
|
mPath.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString XGameWorldSp::GetName() const {
|
||||||
|
return mName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void XGameWorldSp::SetName(const QString& name) {
|
||||||
|
mName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xpathdata.h"
|
#include "xpathdata.h"
|
||||||
#include "xstring.h"
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
class XGameWorldSp : public XAsset
|
class XGameWorldSp : public XAsset
|
||||||
{
|
{
|
||||||
@ -14,8 +15,11 @@ public:
|
|||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
|
QString GetName() const;
|
||||||
|
void SetName(const QString& name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
QString mName;
|
||||||
XPathData mPath;
|
XPathData mPath;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -23,62 +23,7 @@ XGfxCell::~XGfxCell()
|
|||||||
|
|
||||||
void XGfxCell::ParseData(QDataStream *aStream)
|
void XGfxCell::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
qint32 aabbTreePtr, portalsPtr, cullGroupsPtr, reflectionProbesPtr;
|
|
||||||
*aStream
|
|
||||||
>> mMins[0]
|
|
||||||
>> mMins[1]
|
|
||||||
>> mMins[2]
|
|
||||||
>> mMaxs[0]
|
|
||||||
>> mMaxs[1]
|
|
||||||
>> mMaxs[2]
|
|
||||||
>> mAabbTreeCount
|
|
||||||
>> aabbTreePtr
|
|
||||||
>> mPortalCount
|
|
||||||
>> portalsPtr
|
|
||||||
>> mCullGroupCount
|
|
||||||
>> cullGroupsPtr
|
|
||||||
>> mReflectionProbeCount
|
|
||||||
>> reflectionProbesPtr;
|
|
||||||
|
|
||||||
if (aabbTreePtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mAabbTreeCount; i++)
|
|
||||||
{
|
|
||||||
XGfxAabbTree newTree;
|
|
||||||
newTree.ParseData(aStream);
|
|
||||||
mAabbTree.append(newTree);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (portalsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mPortalCount; i++)
|
|
||||||
{
|
|
||||||
XGfxPortal newPortal;
|
|
||||||
newPortal.ParseData(aStream);
|
|
||||||
mPortals.append(newPortal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cullGroupsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mCullGroupCount; i++)
|
|
||||||
{
|
|
||||||
qint32 newCullGroup;
|
|
||||||
*aStream >> newCullGroup;
|
|
||||||
mCullGroups.append(newCullGroup);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reflectionProbesPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mReflectionProbeCount; i++)
|
|
||||||
{
|
|
||||||
quint8 newReflectionProbe;
|
|
||||||
*aStream >> newReflectionProbe;
|
|
||||||
mReflectionProbes.append(newReflectionProbe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxCell::Clear()
|
void XGfxCell::Clear()
|
||||||
|
|||||||
@ -28,7 +28,7 @@ private:
|
|||||||
QVector<XGfxPortal> mPortals;
|
QVector<XGfxPortal> mPortals;
|
||||||
|
|
||||||
int mCullGroupCount;
|
int mCullGroupCount;
|
||||||
QVector<qint32> mCullGroups;
|
QVector<int> mCullGroups;
|
||||||
|
|
||||||
quint8 mReflectionProbeCount;
|
quint8 mReflectionProbeCount;
|
||||||
QVector<quint8> mReflectionProbes;
|
QVector<quint8> mReflectionProbes;
|
||||||
|
|||||||
@ -2,18 +2,15 @@
|
|||||||
|
|
||||||
XGfxColor::XGfxColor()
|
XGfxColor::XGfxColor()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mArray(4)
|
, mPacked(0)
|
||||||
|
, mArray()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxColor::ParseData(QDataStream *aStream)
|
void XGfxColor::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream
|
|
||||||
>> mArray[0]
|
|
||||||
>> mArray[1]
|
|
||||||
>> mArray[2]
|
|
||||||
>> mArray[3];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxColor::Clear()
|
void XGfxColor::Clear()
|
||||||
|
|||||||
@ -14,7 +14,8 @@ public:
|
|||||||
void SetColor(quint8 r, quint8 g, quint8 b, quint8 a);
|
void SetColor(quint8 r, quint8 g, quint8 b, quint8 a);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector<quint8> mArray;
|
quint32 mPacked;
|
||||||
|
quint8 mArray[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XGFXCOLOR_H
|
#endif // XGFXCOLOR_H
|
||||||
|
|||||||
@ -3,21 +3,18 @@
|
|||||||
XGfxDrawSurf::XGfxDrawSurf()
|
XGfxDrawSurf::XGfxDrawSurf()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mFields()
|
, mFields()
|
||||||
|
, mPacked(0)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XGfxDrawSurf::~XGfxDrawSurf()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void XGfxDrawSurf::ParseData(QDataStream *aStream)
|
void XGfxDrawSurf::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mFields.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxDrawSurf::Clear()
|
void XGfxDrawSurf::Clear()
|
||||||
{
|
{
|
||||||
mFields.Clear();
|
mFields = XGfxDrawSurfFields();
|
||||||
|
mPacked = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,13 +8,13 @@ class XGfxDrawSurf : public XAsset
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XGfxDrawSurf();
|
explicit XGfxDrawSurf();
|
||||||
~XGfxDrawSurf();
|
|
||||||
|
|
||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XGfxDrawSurfFields mFields;
|
XGfxDrawSurfFields mFields;
|
||||||
|
quint64 mPacked;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XGFXDRAWSURF_H
|
#endif // XGFXDRAWSURF_H
|
||||||
|
|||||||
@ -17,20 +17,7 @@ XGfxDrawSurfFields::XGfxDrawSurfFields()
|
|||||||
|
|
||||||
void XGfxDrawSurfFields::ParseData(QDataStream *aStream)
|
void XGfxDrawSurfFields::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
// Read the raw 64-bit value from the stream
|
|
||||||
quint64 raw = 0;
|
|
||||||
*aStream >> raw;
|
|
||||||
|
|
||||||
// Decode bitfields from the 64-bit packed value
|
|
||||||
mObjectId = raw & 0xFFFF; // bits 0-15
|
|
||||||
mReflectionProbeIndex = (raw >> 16) & 0xFF; // bits 16-23
|
|
||||||
mCustomIndex = (raw >> 24) & 0x1F; // bits 24-28
|
|
||||||
mMaterialSortedIndex = (raw >> 29) & 0x7FF; // bits 29-39
|
|
||||||
mPrepass = (raw >> 40) & 0x3; // bits 40-41
|
|
||||||
mPrimaryLightIndex = (raw >> 42) & 0xFF; // bits 42-49
|
|
||||||
mSurfType = (raw >> 50) & 0xF; // bits 50-53
|
|
||||||
mPrimarySortKey = (raw >> 54) & 0x3F; // bits 54-59
|
|
||||||
mUnused = (raw >> 60) & 0xF; // bits 60-63
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxDrawSurfFields::Clear()
|
void XGfxDrawSurfFields::Clear()
|
||||||
|
|||||||
@ -28,47 +28,44 @@ XGfxImage::~XGfxImage()
|
|||||||
|
|
||||||
void XGfxImage::ParseData(QDataStream *aStream)
|
void XGfxImage::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
*aStream >> mMapType;
|
||||||
|
|
||||||
|
mTexture.ParseData(aStream);
|
||||||
|
|
||||||
|
*aStream >> mSemantic;
|
||||||
|
|
||||||
|
aStream->skipRawData(3);
|
||||||
|
|
||||||
|
mCardMemory.ParseData(aStream);
|
||||||
|
|
||||||
|
qint32 pixelsPtr;
|
||||||
|
*aStream
|
||||||
|
>> mWidth
|
||||||
|
>> mHeight
|
||||||
|
>> mDepth
|
||||||
|
>> mCategory
|
||||||
|
>> mDelayLoadPixels
|
||||||
|
>> pixelsPtr
|
||||||
|
>> mBaseSize
|
||||||
|
>> mStreamSlot
|
||||||
|
>> mStreaming;
|
||||||
|
|
||||||
|
aStream->skipRawData(1);
|
||||||
|
|
||||||
|
mName.ParsePtr(aStream);
|
||||||
|
|
||||||
|
int variableSkip = 5;
|
||||||
|
if (mDelayLoadPixels)
|
||||||
{
|
{
|
||||||
*aStream >> mMapType;
|
variableSkip = 2;
|
||||||
|
|
||||||
mTexture.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream >> mSemantic;
|
|
||||||
|
|
||||||
aStream->skipRawData(3);
|
|
||||||
|
|
||||||
mCardMemory.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 pixelsPtr;
|
|
||||||
*aStream
|
|
||||||
>> mWidth
|
|
||||||
>> mHeight
|
|
||||||
>> mDepth
|
|
||||||
>> mCategory
|
|
||||||
>> mDelayLoadPixels
|
|
||||||
>> pixelsPtr
|
|
||||||
>> mBaseSize
|
|
||||||
>> mStreamSlot
|
|
||||||
>> mStreaming;
|
|
||||||
|
|
||||||
aStream->skipRawData(1);
|
|
||||||
|
|
||||||
mName.ParsePtr(aStream);
|
|
||||||
|
|
||||||
int variableSkip = 5;
|
|
||||||
if (mDelayLoadPixels)
|
|
||||||
{
|
|
||||||
variableSkip = 2;
|
|
||||||
}
|
|
||||||
aStream->skipRawData(variableSkip);
|
|
||||||
if (pixelsPtr)
|
|
||||||
{
|
|
||||||
aStream->readRawData(mPixels.data(), mCardMemory.GetPlatform());
|
|
||||||
}
|
|
||||||
// TODO: This is wrong
|
|
||||||
mTexture.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
aStream->skipRawData(variableSkip);
|
||||||
|
if (pixelsPtr)
|
||||||
|
{
|
||||||
|
aStream->readRawData(mPixels.data(), mCardMemory.GetPlatform());
|
||||||
|
}
|
||||||
|
// TODO: This is wrong
|
||||||
|
mTexture.ParseData(aStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxImage::Clear()
|
void XGfxImage::Clear()
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
XGfxLightDef::XGfxLightDef()
|
XGfxLightDef::XGfxLightDef()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName(new XString())
|
||||||
, mAttenuation()
|
, mAttenuation(new XGfxLightImage())
|
||||||
, mLmapLookupStart(0)
|
, mLmapLookupStart(0)
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_LIGHT_DEF);
|
SetType(ASSET_TYPE_LIGHT_DEF);
|
||||||
@ -12,22 +12,24 @@ XGfxLightDef::XGfxLightDef()
|
|||||||
|
|
||||||
XGfxLightDef::~XGfxLightDef()
|
XGfxLightDef::~XGfxLightDef()
|
||||||
{
|
{
|
||||||
|
delete mName;
|
||||||
|
delete mAttenuation;
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxLightDef::Clear()
|
void XGfxLightDef::Clear()
|
||||||
{
|
{
|
||||||
mName.Clear();
|
mName->Clear();
|
||||||
mAttenuation.Clear();
|
mAttenuation->Clear();
|
||||||
mLmapLookupStart = 0;
|
mLmapLookupStart = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxLightDef::ParseData(QDataStream *aStream)
|
void XGfxLightDef::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mName.ParsePtr(aStream, false);
|
mName->ParsePtr(aStream, false);
|
||||||
mAttenuation.ParseData(aStream);
|
mAttenuation->ParseData(aStream);
|
||||||
*aStream >> mLmapLookupStart;
|
*aStream >> mLmapLookupStart;
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
mName->ParseData(aStream);
|
||||||
mAttenuation.ParseData(aStream);
|
|
||||||
|
//mAttenuation->
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,15 +8,15 @@
|
|||||||
struct XGfxLightDef : public XAsset
|
struct XGfxLightDef : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XGfxLightDef();
|
XGfxLightDef();
|
||||||
~XGfxLightDef();
|
~XGfxLightDef();
|
||||||
|
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
virtual void ParseData(QDataStream *aStream) override;
|
virtual void ParseData(QDataStream *aStream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
XString* mName;
|
||||||
XGfxLightImage mAttenuation;
|
XGfxLightImage* mAttenuation;
|
||||||
int mLmapLookupStart;
|
int mLmapLookupStart;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -14,19 +14,7 @@ XGfxPackedVertex::XGfxPackedVertex()
|
|||||||
|
|
||||||
void XGfxPackedVertex::ParseData(QDataStream *aStream)
|
void XGfxPackedVertex::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
*aStream
|
|
||||||
>> mXYZ[0]
|
|
||||||
>> mXYZ[1]
|
|
||||||
>> mXYZ[2]
|
|
||||||
>> mBinormalSign;
|
|
||||||
|
|
||||||
mColor.ParseData(aStream);
|
|
||||||
mTexCoord.ParseData(aStream);
|
|
||||||
mNormal.ParseData(aStream);
|
|
||||||
mTangent.ParseData(aStream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxPackedVertex::Clear()
|
void XGfxPackedVertex::Clear()
|
||||||
|
|||||||
@ -6,8 +6,6 @@
|
|||||||
#include "xpackedtexcoords.h"
|
#include "xpackedtexcoords.h"
|
||||||
#include "xpackedunitvec.h"
|
#include "xpackedunitvec.h"
|
||||||
|
|
||||||
#include <QVector3D>
|
|
||||||
|
|
||||||
class XGfxPackedVertex : public XAsset
|
class XGfxPackedVertex : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -17,7 +15,7 @@ public:
|
|||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector3D mXYZ;
|
float mXYZ[3];
|
||||||
float mBinormalSign;
|
float mBinormalSign;
|
||||||
XGfxColor mColor;
|
XGfxColor mColor;
|
||||||
XPackedTexCoords mTexCoord;
|
XPackedTexCoords mTexCoord;
|
||||||
|
|||||||
@ -15,14 +15,7 @@ XGfxPlacement::~XGfxPlacement()
|
|||||||
|
|
||||||
void XGfxPlacement::ParseData(QDataStream *aStream)
|
void XGfxPlacement::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream
|
|
||||||
>> mQuat[0]
|
|
||||||
>> mQuat[1]
|
|
||||||
>> mQuat[2]
|
|
||||||
>> mQuat[3]
|
|
||||||
>> mOrigin[0]
|
|
||||||
>> mOrigin[2]
|
|
||||||
>> mOrigin[3];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxPlacement::Clear()
|
void XGfxPlacement::Clear()
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
XGfxStateBits::XGfxStateBits()
|
XGfxStateBits::XGfxStateBits()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mLoadBits(2)
|
, mLoadBits()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -14,15 +14,10 @@ XGfxStateBits::~XGfxStateBits()
|
|||||||
|
|
||||||
void XGfxStateBits::ParseData(QDataStream *aStream)
|
void XGfxStateBits::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
*aStream
|
|
||||||
>> mLoadBits[0]
|
|
||||||
>> mLoadBits[1];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxStateBits::Clear()
|
void XGfxStateBits::Clear()
|
||||||
{
|
{
|
||||||
mLoadBits.clear();
|
mLoadBits = QVector<quint32>();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,60 +3,12 @@
|
|||||||
|
|
||||||
XGfxWorld::XGfxWorld()
|
XGfxWorld::XGfxWorld()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName("")
|
||||||
, mBaseName()
|
, mStreamingInfo()
|
||||||
, mPlaneCount(0)
|
|
||||||
, mNodeCount(0)
|
|
||||||
, mIndexCount(0)
|
|
||||||
, mIndices(0)
|
|
||||||
, mIndexBuffer()
|
|
||||||
, mSurfaceCount(0)
|
|
||||||
, mStreamInfo()
|
|
||||||
, mSkySurfCount(0)
|
|
||||||
, mSkyStartSurfs()
|
|
||||||
, mSkyImage()
|
|
||||||
, mSkySamplerState(0)
|
|
||||||
, mVertexCount(0)
|
|
||||||
, mVertexData()
|
, mVertexData()
|
||||||
, mVertexLayerDataSize(0)
|
, mSunLightParams()
|
||||||
, mVertexLayerData()
|
, mLights()
|
||||||
, mSunParse()
|
|
||||||
, mSunLight()
|
|
||||||
, mSunColorFromBsp()
|
|
||||||
, mSunPrimaryLightIndex(0)
|
|
||||||
, mPrimaryLightCount(0)
|
|
||||||
, mCullGroupCount(0)
|
|
||||||
, mReflectionProbeCount(0)
|
|
||||||
, mReflectionProbes()
|
, mReflectionProbes()
|
||||||
, mReflectionProbeTextures()
|
|
||||||
, mDpvsPlanes()
|
|
||||||
, mCellBitsCount(0)
|
|
||||||
, mCells()
|
|
||||||
, mLightmapCount(0)
|
|
||||||
, mLightmaps()
|
|
||||||
, mLightGrid()
|
|
||||||
, mLightmapPrimaryTextures()
|
|
||||||
, mLightmapSecondaryTextures()
|
|
||||||
, mModelCount(0)
|
|
||||||
, mModels()
|
|
||||||
, mMins()
|
|
||||||
, mMaxs()
|
|
||||||
, mChecksum(0)
|
|
||||||
, mMaterialMemoryCount(0)
|
|
||||||
, mMaterialMemory()
|
|
||||||
, mSun()
|
|
||||||
, mOutdoorLookupMatrix()
|
|
||||||
, mOutdoorImage()
|
|
||||||
, mCellCasterBits()
|
|
||||||
, mSceneDynModel()
|
|
||||||
, mSceneDynBrush()
|
|
||||||
, mPrimaryLightEntityShadowVis()
|
|
||||||
, mPrimaryLightDynEntShadowVis()
|
|
||||||
, mNonSunPrimaryLightForModelDynEnt()
|
|
||||||
, mShadowGeom()
|
|
||||||
, mLightRegion()
|
|
||||||
, mDpvs()
|
|
||||||
, mDpvsDyn()
|
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_GFXWORLD);
|
SetType(ASSET_TYPE_GFXWORLD);
|
||||||
SetName("GFXWorld");
|
SetName("GFXWorld");
|
||||||
@ -69,252 +21,35 @@ XGfxWorld::~XGfxWorld()
|
|||||||
|
|
||||||
void XGfxWorld::ParseData(QDataStream *aStream) {
|
void XGfxWorld::ParseData(QDataStream *aStream) {
|
||||||
if (GetPtr() == -1) {
|
if (GetPtr() == -1) {
|
||||||
mName.ParsePtr(aStream, false);
|
mName = XString::ParseCustom(aStream);
|
||||||
mBaseName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 indicesPtr;
|
// Parse streaming info
|
||||||
*aStream
|
mStreamingInfo.ParseData(aStream);
|
||||||
>> mPlaneCount
|
|
||||||
>> mNodeCount
|
|
||||||
>> mIndexCount
|
|
||||||
>> indicesPtr;
|
|
||||||
|
|
||||||
mIndexBuffer.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream >> mSurfaceCount;
|
|
||||||
|
|
||||||
mStreamInfo.SetPtr(-1);
|
|
||||||
mStreamInfo.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 skyStartSurfPtr, skyImagePtr;
|
|
||||||
*aStream
|
|
||||||
>> mSkySurfCount
|
|
||||||
>> skyStartSurfPtr
|
|
||||||
>> skyImagePtr
|
|
||||||
>> mSkySamplerState;
|
|
||||||
|
|
||||||
aStream->skipRawData(3);
|
|
||||||
|
|
||||||
*aStream >> mVertexCount;
|
|
||||||
|
|
||||||
|
// Parse vertex data
|
||||||
mVertexData.ParseData(aStream);
|
mVertexData.ParseData(aStream);
|
||||||
|
|
||||||
*aStream >> mVertexLayerDataSize;
|
// Parse sun light params
|
||||||
|
mSunLightParams.ParseData(aStream);
|
||||||
|
|
||||||
mVertexLayerData.ParseData(aStream);
|
// Parse lights count and array
|
||||||
mSunParse.ParseData(aStream);
|
int lightCount;
|
||||||
|
*aStream >> lightCount;
|
||||||
mSunLight.ParsePtr(aStream, false);
|
for (int i = 0; i < lightCount; ++i) {
|
||||||
|
XGfxLight light;
|
||||||
float r, g, b;
|
light.ParseData(aStream);
|
||||||
*aStream
|
mLights.append(light);
|
||||||
>> r
|
|
||||||
>> g
|
|
||||||
>> b;
|
|
||||||
mSunColorFromBsp = QColor(r, g, b);
|
|
||||||
|
|
||||||
qint32 reflectionProbesPtr, reflectionProbeTexturesPtr;
|
|
||||||
*aStream
|
|
||||||
>> mSunPrimaryLightIndex
|
|
||||||
>> mPrimaryLightCount
|
|
||||||
>> mCullGroupCount
|
|
||||||
>> mReflectionProbeCount
|
|
||||||
>> reflectionProbesPtr
|
|
||||||
>> reflectionProbeTexturesPtr;
|
|
||||||
|
|
||||||
mDpvsPlanes.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 cellsPtr, lightmapsPtr;
|
|
||||||
*aStream
|
|
||||||
>> mCellBitsCount
|
|
||||||
>> cellsPtr
|
|
||||||
>> mLightmapCount
|
|
||||||
>> lightmapsPtr;
|
|
||||||
|
|
||||||
mLightGrid.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 lightMapsPrimaryPtr, lightmapSecondaryPtr, modelsPtr, materialMemoryPtr;
|
|
||||||
*aStream
|
|
||||||
>> lightMapsPrimaryPtr
|
|
||||||
>> lightmapSecondaryPtr
|
|
||||||
>> mModelCount
|
|
||||||
>> modelsPtr
|
|
||||||
>> mMins[0]
|
|
||||||
>> mMins[1]
|
|
||||||
>> mMins[2]
|
|
||||||
>> mMaxs[0]
|
|
||||||
>> mMaxs[1]
|
|
||||||
>> mMaxs[2]
|
|
||||||
>> mChecksum
|
|
||||||
>> mMaterialMemoryCount
|
|
||||||
>> materialMemoryPtr;
|
|
||||||
|
|
||||||
mSun.ParseData(aStream);
|
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < 4; j++)
|
|
||||||
{
|
|
||||||
mOutdoorLookupMatrix[i][j];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qint32 outdoorImagePtr, cellCasterBitsPtr, sceneDynModelPtr, sceneDynBrushPtr,
|
// Parse reflection probes count and array
|
||||||
primaryLightEntPtr, primaryLightDynPtr, nonSunPrimaryPtr, shadowGeomPtr, lightRegionPtr;
|
int probeCount;
|
||||||
*aStream
|
*aStream >> probeCount;
|
||||||
>> outdoorImagePtr
|
for (int i = 0; i < probeCount; ++i) {
|
||||||
>> cellCasterBitsPtr
|
XGfxReflectionProbe probe;
|
||||||
>> sceneDynModelPtr
|
probe.ParseData(aStream);
|
||||||
>> sceneDynBrushPtr
|
mReflectionProbes.append(probe);
|
||||||
>> primaryLightEntPtr
|
|
||||||
>> primaryLightDynPtr
|
|
||||||
>> nonSunPrimaryPtr
|
|
||||||
>> shadowGeomPtr
|
|
||||||
>> lightRegionPtr;
|
|
||||||
|
|
||||||
mDpvs.ParseData(aStream);
|
|
||||||
mDpvsDyn.ParseData(aStream);
|
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
|
||||||
mBaseName.ParseData(aStream);
|
|
||||||
|
|
||||||
if (indicesPtr)
|
|
||||||
{
|
|
||||||
aStream->readRawData(mIndices.data(), 2 * mIndexCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
//mIndexBuffer.ParseData(aStream);
|
|
||||||
|
|
||||||
if (skyStartSurfPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mSkySurfCount; i++)
|
|
||||||
{
|
|
||||||
qint32 newSurface;
|
|
||||||
*aStream >> newSurface;
|
|
||||||
mSkyStartSurfs.append(newSurface);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mSkyImage.ParseData(aStream);
|
|
||||||
mSunLight.ParseData(aStream);
|
|
||||||
|
|
||||||
if (reflectionProbesPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mReflectionProbeCount; i++)
|
|
||||||
{
|
|
||||||
XGfxReflectionProbe newProbe;
|
|
||||||
newProbe.ParseData(aStream);
|
|
||||||
mReflectionProbes.append(newProbe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reflectionProbeTexturesPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mReflectionProbeCount; i++)
|
|
||||||
{
|
|
||||||
XGfxTexture newProbeTexture;
|
|
||||||
newProbeTexture.ParseData(aStream);
|
|
||||||
mReflectionProbeTextures.append(newProbeTexture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mDpvsPlanes.ParseData(aStream);
|
|
||||||
|
|
||||||
if (cellsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mDpvsPlanes.GetCellCount(); i++)
|
|
||||||
{
|
|
||||||
XGfxCell newCell;
|
|
||||||
newCell.ParseData(aStream);
|
|
||||||
mCells.append(newCell);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lightmapsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mLightmapCount; i++)
|
|
||||||
{
|
|
||||||
XGfxLightmapArray lightMapArray;
|
|
||||||
lightMapArray.ParseData(aStream);
|
|
||||||
mLightmaps.append(lightMapArray);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mLightGrid.ParseData(aStream);
|
|
||||||
|
|
||||||
if (lightMapsPrimaryPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mLightmapCount; i++)
|
|
||||||
{
|
|
||||||
XGfxTexture primaryTexture;
|
|
||||||
primaryTexture.ParseData(aStream);
|
|
||||||
mLightmapPrimaryTextures.append(primaryTexture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (lightmapSecondaryPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mLightmapCount; i++)
|
|
||||||
{
|
|
||||||
XGfxTexture secondaryTexture;
|
|
||||||
secondaryTexture.ParseData(aStream);
|
|
||||||
mLightmapSecondaryTextures.append(secondaryTexture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (modelsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mModelCount; i++)
|
|
||||||
{
|
|
||||||
XGfxBrushModel newModel;
|
|
||||||
newModel.ParseData(aStream);
|
|
||||||
mModels.append(newModel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (materialMemoryPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mMaterialMemoryCount; i++)
|
|
||||||
{
|
|
||||||
XMaterialMemory newMaterialMemory;
|
|
||||||
newMaterialMemory.ParseData(aStream);
|
|
||||||
mMaterialMemory.append(newMaterialMemory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//mVertexData.ParseData(aStream);
|
|
||||||
//mVertexLayerData.ParseData(aStream);
|
|
||||||
|
|
||||||
mSun.ParseData(aStream);
|
|
||||||
mOutdoorImage.ParseData(aStream);
|
|
||||||
|
|
||||||
if (cellCasterBitsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < ((mDpvsPlanes.GetCellCount() + 31) >> 5) * mDpvsPlanes.GetCellCount(); i++)
|
|
||||||
{
|
|
||||||
quint32 casterBit;
|
|
||||||
*aStream >> casterBit;
|
|
||||||
mCellCasterBits.append(casterBit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sceneDynModelPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mDpvsDyn.GetClientCount(1); i++)
|
|
||||||
{
|
|
||||||
XGfxSceneDynModel dynModel;
|
|
||||||
dynModel.ParseData(aStream);
|
|
||||||
mSceneDynModel.append(dynModel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (sceneDynBrushPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mDpvsDyn.GetClientCount(1); i++)
|
|
||||||
{
|
|
||||||
XGfxSceneDynBrush dynBrush;
|
|
||||||
dynBrush.ParseData(aStream);
|
|
||||||
mSceneDynBrush.append(dynBrush);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: Finish this... Double ugh
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxWorld::Clear()
|
void XGfxWorld::Clear()
|
||||||
|
|||||||
@ -2,25 +2,10 @@
|
|||||||
#define XGFXWORLD_H
|
#define XGFXWORLD_H
|
||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xd3dindexbuffer.h"
|
|
||||||
#include "xgfxbrushmodel.h"
|
|
||||||
#include "xgfxcell.h"
|
|
||||||
#include "xgfxlightgrid.h"
|
|
||||||
#include "xgfxlightmaparray.h"
|
|
||||||
#include "xgfxlightregion.h"
|
|
||||||
#include "xgfxscenedynmodel.h"
|
|
||||||
#include "xgfxscenedynbrush.h"
|
|
||||||
#include "xgfxshadowgeometry.h"
|
|
||||||
#include "xgfxworlddpvsdynamic.h"
|
|
||||||
#include "xgfxworlddpvsplanes.h"
|
|
||||||
#include "xgfxworlddpvsstatic.h"
|
|
||||||
#include "xgfxworldstreaminfo.h"
|
#include "xgfxworldstreaminfo.h"
|
||||||
#include "xgfxworldvertexdata.h"
|
#include "xgfxworldvertexdata.h"
|
||||||
#include "xgfxworldvertexlayerdata.h"
|
|
||||||
#include "xmaterialmemory.h"
|
|
||||||
#include "xsunlightparseparams.h"
|
#include "xsunlightparseparams.h"
|
||||||
#include "xgfxlight.h"
|
#include "xgfxlight.h"
|
||||||
#include "xsunflare.h"
|
|
||||||
#include "xgfxreflectionprobe.h"
|
#include "xgfxreflectionprobe.h"
|
||||||
|
|
||||||
class XGfxWorld : public XAsset
|
class XGfxWorld : public XAsset
|
||||||
@ -33,60 +18,12 @@ public:
|
|||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
QString mName;
|
||||||
XString mBaseName;
|
XGfxWorldStreamInfo mStreamingInfo;
|
||||||
qint32 mPlaneCount;
|
|
||||||
qint32 mNodeCount;
|
|
||||||
qint32 mIndexCount;
|
|
||||||
QByteArray mIndices;
|
|
||||||
XD3DIndexBuffer mIndexBuffer;
|
|
||||||
qint32 mSurfaceCount;
|
|
||||||
XGfxWorldStreamInfo mStreamInfo;
|
|
||||||
qint32 mSkySurfCount;
|
|
||||||
QVector<qint32> mSkyStartSurfs;
|
|
||||||
XGfxImage mSkyImage;
|
|
||||||
quint8 mSkySamplerState;
|
|
||||||
quint32 mVertexCount;
|
|
||||||
XGfxWorldVertexData mVertexData;
|
XGfxWorldVertexData mVertexData;
|
||||||
quint32 mVertexLayerDataSize;
|
XSunLightParseParams mSunLightParams;
|
||||||
XGfxWorldVertexLayerData mVertexLayerData;
|
QVector<XGfxLight> mLights;
|
||||||
XSunLightParseParams mSunParse;
|
|
||||||
XGfxLight mSunLight;
|
|
||||||
QColor mSunColorFromBsp;
|
|
||||||
quint32 mSunPrimaryLightIndex;
|
|
||||||
quint32 mPrimaryLightCount;
|
|
||||||
qint32 mCullGroupCount;
|
|
||||||
quint32 mReflectionProbeCount;
|
|
||||||
QVector<XGfxReflectionProbe> mReflectionProbes;
|
QVector<XGfxReflectionProbe> mReflectionProbes;
|
||||||
QVector<XGfxTexture> mReflectionProbeTextures;
|
|
||||||
XGfxWorldDpvsPlanes mDpvsPlanes;
|
|
||||||
qint32 mCellBitsCount;
|
|
||||||
QVector<XGfxCell> mCells;
|
|
||||||
qint32 mLightmapCount;
|
|
||||||
QVector<XGfxLightmapArray> mLightmaps;
|
|
||||||
XGfxLightGrid mLightGrid;
|
|
||||||
QVector<XGfxTexture> mLightmapPrimaryTextures;
|
|
||||||
QVector<XGfxTexture> mLightmapSecondaryTextures;
|
|
||||||
qint32 mModelCount;
|
|
||||||
QVector<XGfxBrushModel> mModels;
|
|
||||||
QVector3D mMins;
|
|
||||||
QVector3D mMaxs;
|
|
||||||
quint32 mChecksum;
|
|
||||||
qint32 mMaterialMemoryCount;
|
|
||||||
QVector<XMaterialMemory> mMaterialMemory;
|
|
||||||
XSunFlare mSun;
|
|
||||||
QVector<QVector<float>> mOutdoorLookupMatrix;
|
|
||||||
XGfxImage mOutdoorImage;
|
|
||||||
QVector<quint32> mCellCasterBits;
|
|
||||||
QVector<XGfxSceneDynModel> mSceneDynModel;
|
|
||||||
QVector<XGfxSceneDynBrush> mSceneDynBrush;
|
|
||||||
quint32 mPrimaryLightEntityShadowVis;
|
|
||||||
quint32 mPrimaryLightDynEntShadowVis[2];
|
|
||||||
quint8 mNonSunPrimaryLightForModelDynEnt;
|
|
||||||
XGfxShadowGeometry mShadowGeom;
|
|
||||||
XGfxLightRegion mLightRegion;
|
|
||||||
XGfxWorldDpvsStatic mDpvs;
|
|
||||||
XGfxWorldDpvsDynamic mDpvsDyn;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XGFXWORLD_H
|
#endif // XGFXWORLD_H
|
||||||
|
|||||||
@ -17,11 +17,6 @@ XGfxWorldDpvsDynamic::~XGfxWorldDpvsDynamic()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint XGfxWorldDpvsDynamic::GetClientCount(int aIndex) const
|
|
||||||
{
|
|
||||||
return mDynEntClientCount[aIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
void XGfxWorldDpvsDynamic::ParseData(QDataStream *aStream)
|
void XGfxWorldDpvsDynamic::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@ -11,8 +11,6 @@ public:
|
|||||||
XGfxWorldDpvsDynamic();
|
XGfxWorldDpvsDynamic();
|
||||||
~XGfxWorldDpvsDynamic();
|
~XGfxWorldDpvsDynamic();
|
||||||
|
|
||||||
uint GetClientCount(int aIndex) const;
|
|
||||||
|
|
||||||
virtual void ParseData(QDataStream* aStream) override;
|
virtual void ParseData(QDataStream* aStream) override;
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
|
|||||||
@ -18,11 +18,6 @@ XGfxWorldDpvsPlanes::~XGfxWorldDpvsPlanes()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int XGfxWorldDpvsPlanes::GetCellCount() const
|
|
||||||
{
|
|
||||||
return aCellCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
void XGfxWorldDpvsPlanes::ParseData(QDataStream *aStream)
|
void XGfxWorldDpvsPlanes::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@ -12,8 +12,6 @@ public:
|
|||||||
explicit XGfxWorldDpvsPlanes();
|
explicit XGfxWorldDpvsPlanes();
|
||||||
~XGfxWorldDpvsPlanes();
|
~XGfxWorldDpvsPlanes();
|
||||||
|
|
||||||
int GetCellCount() const;
|
|
||||||
|
|
||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
|
|||||||
@ -1,30 +1,51 @@
|
|||||||
#include "xgfxworldvertexdata.h"
|
#include "xgfxworldvertexdata.h"
|
||||||
|
|
||||||
XGfxWorldVertexData::XGfxWorldVertexData()
|
XGfxWorldVertexData::XGfxWorldVertexData()
|
||||||
: XAsset()
|
: XAsset() {
|
||||||
, mVertices()
|
|
||||||
, mWorldVertexBuffer()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
XGfxWorldVertexData::~XGfxWorldVertexData()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void XGfxWorldVertexData::Clear()
|
|
||||||
{
|
|
||||||
mVertices.clear();
|
|
||||||
mWorldVertexBuffer.Clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XGfxWorldVertexData::ParseData(QDataStream *aStream) {
|
void XGfxWorldVertexData::ParseData(QDataStream *aStream) {
|
||||||
if (GetPtr() == -1) {
|
if (GetPtr() == -1) {
|
||||||
|
// Parse vertex count
|
||||||
|
int vertexCount;
|
||||||
|
*aStream >> vertexCount;
|
||||||
|
|
||||||
qint32 worldVertexPtr;
|
// Clear existing data before parsing new data
|
||||||
*aStream >> worldVertexPtr;
|
mVertices.clear();
|
||||||
|
|
||||||
mWorldVertexBuffer.ParseData(aStream);
|
// Parse vertices
|
||||||
|
for (int i = 0; i < vertexCount; ++i) {
|
||||||
|
XGfxWorldVertex vertex;
|
||||||
|
vertex.ParseData(aStream);
|
||||||
|
mVertices.append(vertex);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip D3DVertexBuffer pointer - we'll handle this appropriately later
|
||||||
|
qint32 bufferPtr;
|
||||||
|
*aStream >> bufferPtr;
|
||||||
|
if (bufferPtr == -1)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVector<XGfxWorldVertex>& XGfxWorldVertexData::GetVertices() {
|
||||||
|
return mVertices;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QVector<XGfxWorldVertex>& XGfxWorldVertexData::GetVertices() const {
|
||||||
|
return mVertices;
|
||||||
|
}
|
||||||
|
|
||||||
|
void XGfxWorldVertexData::SetVertices(const QVector<XGfxWorldVertex>& vertices) {
|
||||||
|
mVertices = vertices;
|
||||||
|
}
|
||||||
|
|
||||||
|
int XGfxWorldVertexData::GetVertexBufferPtr() const {
|
||||||
|
return mVertexBufferPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void XGfxWorldVertexData::SetVertexBufferPtr(int ptr) {
|
||||||
|
mVertexBufferPtr = ptr;
|
||||||
|
}
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
#define XGFXWORLDVERTEXDATA_H
|
#define XGFXWORLDVERTEXDATA_H
|
||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xd3dvertexbuffer.h"
|
|
||||||
#include "xgfxworldvertex.h"
|
#include "xgfxworldvertex.h"
|
||||||
|
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
@ -11,14 +10,20 @@ class XGfxWorldVertexData : public XAsset
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XGfxWorldVertexData();
|
explicit XGfxWorldVertexData();
|
||||||
~XGfxWorldVertexData();
|
|
||||||
|
|
||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
void Clear() override;
|
|
||||||
|
QVector<XGfxWorldVertex>& GetVertices();
|
||||||
|
const QVector<XGfxWorldVertex>& GetVertices() const;
|
||||||
|
void SetVertices(const QVector<XGfxWorldVertex>& vertices);
|
||||||
|
|
||||||
|
// Note: D3DVertexBuffer is a placeholder - we need to handle this appropriately
|
||||||
|
int GetVertexBufferPtr() const;
|
||||||
|
void SetVertexBufferPtr(int ptr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector<XGfxWorldVertex> mVertices;
|
QVector<XGfxWorldVertex> mVertices; // Using QVector for automatic memory management
|
||||||
XD3DVertexBuffer mWorldVertexBuffer;
|
int mVertexBufferPtr = 0; // Placeholder for D3DVertexBuffer pointer
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XGFXWORLDVERTEXDATA_H
|
#endif // XGFXWORLDVERTEXDATA_H
|
||||||
|
|||||||
@ -53,11 +53,6 @@ XItemDef::~XItemDef()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int XItemDef::GetType() const
|
|
||||||
{
|
|
||||||
return mType;
|
|
||||||
}
|
|
||||||
|
|
||||||
void XItemDef::Clear()
|
void XItemDef::Clear()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@ -15,8 +15,6 @@ public:
|
|||||||
explicit XItemDef();
|
explicit XItemDef();
|
||||||
~XItemDef();
|
~XItemDef();
|
||||||
|
|
||||||
int GetType() const;
|
|
||||||
|
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
|
|
||||||
|
|||||||
@ -1,78 +1,41 @@
|
|||||||
#include "xitemdefdata.h"
|
#include "xglyph.h"
|
||||||
#include "xitemdef.h"
|
|
||||||
|
|
||||||
XItemDefData::XItemDefData()
|
XGlyph::XGlyph()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mListBox()
|
, mLetter(0)
|
||||||
, mEditField()
|
, mX0(0)
|
||||||
, mMulti()
|
, mY0(0)
|
||||||
, mEnumDvarName()
|
, mDx(0)
|
||||||
, mParent(nullptr)
|
, mPixelWidth(0)
|
||||||
|
, mPixelHeight(0)
|
||||||
|
, mS0(0)
|
||||||
|
, mT0(0)
|
||||||
|
, mS1(0)
|
||||||
|
, mT1(0)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XItemDefData::XItemDefData(XItemDef &aParent)
|
XGlyph::~XGlyph()
|
||||||
: XAsset()
|
|
||||||
, mListBox()
|
|
||||||
, mEditField()
|
|
||||||
, mMulti()
|
|
||||||
, mEnumDvarName()
|
|
||||||
, mParent(&aParent)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XItemDefData::~XItemDefData()
|
void XGlyph::Clear()
|
||||||
{
|
{
|
||||||
delete mParent;
|
mLetter = 0;
|
||||||
|
mX0 = 0;
|
||||||
|
mY0 = 0;
|
||||||
|
mDx = 0;
|
||||||
|
mPixelWidth = 0;
|
||||||
|
mPixelHeight = 0;
|
||||||
|
mS0 = 0;
|
||||||
|
mT0 = 0;
|
||||||
|
mS1 = 0;
|
||||||
|
mT1 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void XItemDefData::Clear()
|
void XGlyph::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mListBox.Clear();
|
|
||||||
mEditField.Clear();
|
|
||||||
mMulti.Clear();
|
|
||||||
mEnumDvarName.Clear();
|
|
||||||
mParent = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void XItemDefData::ParseData(QDataStream *aStream)
|
|
||||||
{
|
|
||||||
if (!mParent)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
mListBox.ParsePtr(aStream, false);
|
|
||||||
mEditField.ParsePtr(aStream, false);
|
|
||||||
mMulti.ParsePtr(aStream, false);
|
|
||||||
mEnumDvarName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 dataPtr;
|
|
||||||
*aStream >> dataPtr;
|
|
||||||
|
|
||||||
switch (mParent->GetType())
|
|
||||||
{
|
|
||||||
case 6:
|
|
||||||
mListBox.ParseData(aStream);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
case 4:
|
|
||||||
case 9:
|
|
||||||
case 10:
|
|
||||||
case 11:
|
|
||||||
case 14:
|
|
||||||
case 16:
|
|
||||||
case 17:
|
|
||||||
case 18:
|
|
||||||
mListBox.ParseData(aStream);
|
|
||||||
break;
|
|
||||||
case 12:
|
|
||||||
mMulti.ParseData(aStream);
|
|
||||||
break;
|
|
||||||
case 13:
|
|
||||||
mEnumDvarName.ParseData(aStream);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,24 +6,21 @@
|
|||||||
#include "xeditfielddefinition.h"
|
#include "xeditfielddefinition.h"
|
||||||
#include "xmultidef.h"
|
#include "xmultidef.h"
|
||||||
|
|
||||||
class XItemDef;
|
|
||||||
|
|
||||||
class XItemDefData : public XAsset
|
class XItemDefData : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XItemDefData();
|
explicit XItemDefData();
|
||||||
XItemDefData(XItemDef& aParent);
|
|
||||||
~XItemDefData();
|
~XItemDefData();
|
||||||
|
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XListBoxDef mListBox;
|
XListBoxDef *listBox;
|
||||||
XEditFieldDefinition mEditField;
|
XEditFieldDefinition *editField;
|
||||||
XMultiDef mMulti;
|
XMultiDef *multi;
|
||||||
XString mEnumDvarName;
|
const char *enumDvarName;
|
||||||
XItemDef* mParent;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XITEMDEFDATA_H
|
#endif // XITEMDEFDATA_H
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
XItemKeyHandler::XItemKeyHandler()
|
XItemKeyHandler::XItemKeyHandler()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mKey(0)
|
, mKey(0)
|
||||||
, mAction()
|
, mAction("")
|
||||||
, mNext(nullptr)
|
, mNext(new XItemKeyHandler())
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -16,28 +16,13 @@ XItemKeyHandler::~XItemKeyHandler()
|
|||||||
|
|
||||||
void XItemKeyHandler::ParseData(QDataStream *aStream)
|
void XItemKeyHandler::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
*aStream >> mKey;
|
|
||||||
|
|
||||||
mAction.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 nextPtr;
|
|
||||||
*aStream >> nextPtr;
|
|
||||||
|
|
||||||
mAction.ParseData(aStream);
|
|
||||||
|
|
||||||
if (nextPtr)
|
|
||||||
{
|
|
||||||
mNext = new XItemKeyHandler();
|
|
||||||
mNext->ParseData(aStream);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XItemKeyHandler::Clear()
|
void XItemKeyHandler::Clear()
|
||||||
{
|
{
|
||||||
mKey = 0;
|
mKey = 0;
|
||||||
mAction.Clear();
|
mAction = "";
|
||||||
mNext = nullptr;
|
delete mNext;
|
||||||
|
mNext = new XItemKeyHandler();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
#define XITEMKEYHANDLER_H
|
#define XITEMKEYHANDLER_H
|
||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xstring.h"
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
class XItemKeyHandler : public XAsset
|
class XItemKeyHandler : public XAsset
|
||||||
{
|
{
|
||||||
@ -15,7 +16,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int mKey;
|
int mKey;
|
||||||
XString mAction;
|
QString mAction;
|
||||||
XItemKeyHandler *mNext;
|
XItemKeyHandler *mNext;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -33,14 +33,11 @@ void XLocalizeEntry::Clear()
|
|||||||
|
|
||||||
void XLocalizeEntry::ParseData(QDataStream *aStream)
|
void XLocalizeEntry::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
mValue->ParsePtr(aStream, false);
|
||||||
{
|
mName->ParsePtr(aStream, false);
|
||||||
mValue->ParsePtr(aStream, false);
|
|
||||||
mName->ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
mValue->ParseData(aStream);
|
mValue->ParseData(aStream);
|
||||||
mName->ParseData(aStream);
|
mName->ParseData(aStream);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XLocalizeEntry::SetValue(XString* aValue)
|
void XLocalizeEntry::SetValue(XString* aValue)
|
||||||
|
|||||||
@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
XMapEnts::XMapEnts()
|
XMapEnts::XMapEnts()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
|
||||||
, mEntityString()
|
|
||||||
, mNumEntityChars()
|
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_MAP_ENTS);
|
SetType(ASSET_TYPE_MAP_ENTS);
|
||||||
SetName("Map Ents");
|
SetName("Map Ents");
|
||||||
@ -17,20 +14,10 @@ XMapEnts::~XMapEnts()
|
|||||||
|
|
||||||
void XMapEnts::Clear()
|
void XMapEnts::Clear()
|
||||||
{
|
{
|
||||||
mName.Clear();
|
|
||||||
mEntityString.Clear();
|
|
||||||
mNumEntityChars = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XMapEnts::ParseData(QDataStream *aStream)
|
void XMapEnts::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mName.ParsePtr(aStream, false);
|
|
||||||
mEntityString.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream >> mNumEntityChars;
|
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
|
||||||
|
|
||||||
mEntityString.SetContentLength(mNumEntityChars);
|
|
||||||
mEntityString.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,15 +7,15 @@
|
|||||||
class XMapEnts : public XAsset
|
class XMapEnts : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XMapEnts();
|
XMapEnts();
|
||||||
~XMapEnts();
|
~XMapEnts();
|
||||||
|
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
virtual void ParseData(QDataStream *aStream) override;
|
virtual void ParseData(QDataStream *aStream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
XString* mName;
|
||||||
XString mEntityString;
|
XString* mEntityString;
|
||||||
int mNumEntityChars;
|
int mNumEntityChars;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
XMaterial::XMaterial()
|
XMaterial::XMaterial()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mInfo()
|
, mInfo()
|
||||||
, mStateBitsEntry(26)
|
, mStateBitsEntry()
|
||||||
, mTextureCount(0)
|
, mTextureCount(0)
|
||||||
, mConstantCount(0)
|
, mConstantCount(0)
|
||||||
, mStateBitsCount(0)
|
, mStateBitsCount(0)
|
||||||
@ -25,31 +25,7 @@ XMaterial::~XMaterial()
|
|||||||
|
|
||||||
void XMaterial::ParseData(QDataStream *aStream)
|
void XMaterial::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mInfo.ParseData(aStream);
|
|
||||||
|
|
||||||
for (int i = 0; i < 26; i++)
|
|
||||||
{
|
|
||||||
*aStream >> mStateBitsEntry[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mTextureCount
|
|
||||||
>> mConstantCount
|
|
||||||
>> mStateBitsCount
|
|
||||||
>> mStateFlags
|
|
||||||
>> mCameraRegion;
|
|
||||||
|
|
||||||
aStream->skipRawData(1);
|
|
||||||
|
|
||||||
mTechniqueSet.ParsePtr(aStream, false);
|
|
||||||
mTextureTable.ParsePtr(aStream, false);
|
|
||||||
mConstantTable.ParsePtr(aStream, false);
|
|
||||||
mStateBitsTable.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
mTechniqueSet.ParseData(aStream);
|
|
||||||
mTextureTable.ParseData(aStream);
|
|
||||||
mConstantTable.ParseData(aStream);
|
|
||||||
mStateBitsTable.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XMaterial::Clear()
|
void XMaterial::Clear()
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
XMaterialConstantDef::XMaterialConstantDef()
|
XMaterialConstantDef::XMaterialConstantDef()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mNameHash(0)
|
, mNameHash(0)
|
||||||
, mName()
|
, mName("")
|
||||||
, mLiteral()
|
, mLiteral()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -16,26 +16,12 @@ XMaterialConstantDef::~XMaterialConstantDef()
|
|||||||
|
|
||||||
void XMaterialConstantDef::ParseData(QDataStream *aStream)
|
void XMaterialConstantDef::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
*aStream >> mNameHash;
|
|
||||||
|
|
||||||
QByteArray rawName(12, Qt::Uninitialized);
|
|
||||||
aStream->readRawData(rawName.data(), 12);
|
|
||||||
|
|
||||||
mName.SetString(QString::fromUtf8(rawName));
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mLiteral[0]
|
|
||||||
>> mLiteral[1]
|
|
||||||
>> mLiteral[2]
|
|
||||||
>> mLiteral[3];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XMaterialConstantDef::Clear()
|
void XMaterialConstantDef::Clear()
|
||||||
{
|
{
|
||||||
mNameHash = 0;
|
mNameHash = 0;
|
||||||
mName.Clear();
|
mName = "";
|
||||||
mLiteral.clear();
|
mLiteral.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,14 +2,13 @@
|
|||||||
#define XMATERIALCONSTANTDEF_H
|
#define XMATERIALCONSTANTDEF_H
|
||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xstring.h"
|
|
||||||
|
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
class XMaterialConstantDef : public XAsset
|
class XMaterialConstantDef : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XMaterialConstantDef();
|
XMaterialConstantDef();
|
||||||
~XMaterialConstantDef();
|
~XMaterialConstantDef();
|
||||||
|
|
||||||
virtual void ParseData(QDataStream* aStream) override;
|
virtual void ParseData(QDataStream* aStream) override;
|
||||||
@ -17,7 +16,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
quint32 mNameHash;
|
quint32 mNameHash;
|
||||||
XString mName;
|
QString mName;
|
||||||
QVector<float> mLiteral;
|
QVector<float> mLiteral;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
XMaterialInfo::XMaterialInfo()
|
XMaterialInfo::XMaterialInfo()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName("")
|
||||||
, mGameFlags(0)
|
, mGameFlags(0)
|
||||||
, mSortKey(0)
|
, mSortKey(0)
|
||||||
, mTextureAtlasRowCount(0)
|
, mTextureAtlasRowCount(0)
|
||||||
@ -20,20 +20,7 @@ XMaterialInfo::~XMaterialInfo()
|
|||||||
|
|
||||||
void XMaterialInfo::ParseData(QDataStream *aStream)
|
void XMaterialInfo::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mGameFlags
|
|
||||||
>> mSortKey
|
|
||||||
>> mTextureAtlasRowCount
|
|
||||||
>> mTextureAtlasColumnCount;
|
|
||||||
|
|
||||||
mDrawSurf.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream >> mSurfaceTypeBits;
|
|
||||||
aStream->skipRawData(4);
|
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XMaterialInfo::Clear()
|
void XMaterialInfo::Clear()
|
||||||
|
|||||||
@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xgfxdrawsurf.h"
|
#include "xgfxdrawsurf.h"
|
||||||
#include "xstring.h"
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
class XMaterialInfo : public XAsset
|
class XMaterialInfo : public XAsset
|
||||||
{
|
{
|
||||||
@ -15,7 +16,7 @@ public:
|
|||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
QString mName;
|
||||||
quint8 mGameFlags;
|
quint8 mGameFlags;
|
||||||
quint8 mSortKey;
|
quint8 mSortKey;
|
||||||
quint8 mTextureAtlasRowCount;
|
quint8 mTextureAtlasRowCount;
|
||||||
|
|||||||
@ -18,44 +18,40 @@ XMaterialTechniqueSet::~XMaterialTechniqueSet()
|
|||||||
|
|
||||||
void XMaterialTechniqueSet::ParseData(QDataStream *aStream)
|
void XMaterialTechniqueSet::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
if (IsDebug())
|
||||||
{
|
{
|
||||||
if (IsDebug())
|
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
|
||||||
{
|
}
|
||||||
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
|
mName.ParsePtr(aStream, false);
|
||||||
}
|
|
||||||
mName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream >> mWorldVertFormat;
|
*aStream >> mWorldVertFormat;
|
||||||
if (IsDebug())
|
if (IsDebug())
|
||||||
{
|
{
|
||||||
qDebug() << QString("[%1] mWorldVertFormat = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mWorldVertFormat);
|
qDebug() << QString("[%1] mWorldVertFormat = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mWorldVertFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
aStream->skipRawData(3);
|
aStream->skipRawData(3);
|
||||||
|
|
||||||
qint32 remappedPtr;
|
qint32 remappedPtr;
|
||||||
*aStream >> remappedPtr;
|
*aStream >> remappedPtr;
|
||||||
if (IsDebug())
|
if (IsDebug())
|
||||||
{
|
{
|
||||||
qDebug() << QString("[%1] remappedPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(remappedPtr);
|
qDebug() << QString("[%1] remappedPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(remappedPtr);
|
||||||
|
|
||||||
qDebug() << QString("Parsing techniques.");
|
qDebug() << QString("Parsing techniques.");
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 26; i++)
|
for (int i = 0; i < 26; i++)
|
||||||
{
|
{
|
||||||
XMaterialTechnique newTechnique;
|
XMaterialTechnique newTechnique;
|
||||||
newTechnique.ParsePtr(aStream, false);
|
newTechnique.ParsePtr(aStream, false);
|
||||||
mTechniques.append(newTechnique);
|
mTechniques.append(newTechnique);
|
||||||
}
|
}
|
||||||
|
|
||||||
mName.SetRemoveString(",");
|
mName.ParseData(aStream, ",");
|
||||||
mName.ParseData(aStream);
|
|
||||||
|
|
||||||
for (int i = 0; i < 26; i++)
|
for (int i = 0; i < 26; i++)
|
||||||
{
|
{
|
||||||
mTechniques[i].ParseData(aStream);
|
mTechniques[i].ParseData(aStream);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ XMaterialTextureDef::XMaterialTextureDef()
|
|||||||
, mNameEnd(0)
|
, mNameEnd(0)
|
||||||
, mSamplerState(0)
|
, mSamplerState(0)
|
||||||
, mSemantic(0)
|
, mSemantic(0)
|
||||||
, mDefInfo(*this)
|
, mDefInfo()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -17,33 +17,9 @@ XMaterialTextureDef::~XMaterialTextureDef()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
quint8 XMaterialTextureDef::GetSemantic() const
|
|
||||||
{
|
|
||||||
return mSemantic;
|
|
||||||
}
|
|
||||||
|
|
||||||
void XMaterialTextureDef::ParseData(QDataStream *aStream)
|
void XMaterialTextureDef::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
*aStream
|
|
||||||
>> mNameHash
|
|
||||||
>> mNameStart
|
|
||||||
>> mNameEnd
|
|
||||||
>> mSamplerState
|
|
||||||
>> mSemantic;
|
|
||||||
|
|
||||||
mDefInfo.ParseData(aStream);
|
|
||||||
|
|
||||||
if (mSemantic == 11)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XMaterialTextureDef::Clear()
|
void XMaterialTextureDef::Clear()
|
||||||
|
|||||||
@ -10,8 +10,6 @@ public:
|
|||||||
XMaterialTextureDef();
|
XMaterialTextureDef();
|
||||||
~XMaterialTextureDef();
|
~XMaterialTextureDef();
|
||||||
|
|
||||||
quint8 GetSemantic() const;
|
|
||||||
|
|
||||||
virtual void ParseData(QDataStream* aStream) override;
|
virtual void ParseData(QDataStream* aStream) override;
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
|
|||||||
@ -1,24 +1,13 @@
|
|||||||
#include "xmaterialtexturedefinfo.h"
|
#include "xmaterialtexturedefinfo.h"
|
||||||
#include "xmaterialtexturedef.h"
|
|
||||||
|
|
||||||
XMaterialTextureDefInfo::XMaterialTextureDefInfo()
|
XMaterialTextureDefInfo::XMaterialTextureDefInfo()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mImage()
|
, mImage()
|
||||||
, mWater()
|
, mWater()
|
||||||
, aParent(nullptr)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XMaterialTextureDefInfo::XMaterialTextureDefInfo(XMaterialTextureDef &aParent)
|
|
||||||
: XAsset()
|
|
||||||
, mImage()
|
|
||||||
, mWater()
|
|
||||||
, aParent(&aParent)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
XMaterialTextureDefInfo::~XMaterialTextureDefInfo()
|
XMaterialTextureDefInfo::~XMaterialTextureDefInfo()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -26,18 +15,7 @@ XMaterialTextureDefInfo::~XMaterialTextureDefInfo()
|
|||||||
|
|
||||||
void XMaterialTextureDefInfo::ParseData(QDataStream *aStream)
|
void XMaterialTextureDefInfo::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mImage.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
if (aParent->GetSemantic() == 11) {
|
|
||||||
if (mImage.GetPtr() == -1)
|
|
||||||
{
|
|
||||||
mWater.ParseData(aStream);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mImage.ParseData(aStream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XMaterialTextureDefInfo::Clear()
|
void XMaterialTextureDefInfo::Clear()
|
||||||
|
|||||||
@ -5,13 +5,10 @@
|
|||||||
#include "xgfximage.h"
|
#include "xgfximage.h"
|
||||||
#include "xwater.h"
|
#include "xwater.h"
|
||||||
|
|
||||||
class XMaterialTextureDef;
|
|
||||||
|
|
||||||
class XMaterialTextureDefInfo : public XAsset
|
class XMaterialTextureDefInfo : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XMaterialTextureDefInfo();
|
XMaterialTextureDefInfo();
|
||||||
XMaterialTextureDefInfo(XMaterialTextureDef& aParent);
|
|
||||||
~XMaterialTextureDefInfo();
|
~XMaterialTextureDefInfo();
|
||||||
|
|
||||||
virtual void ParseData(QDataStream* aStream) override;
|
virtual void ParseData(QDataStream* aStream) override;
|
||||||
@ -20,7 +17,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
XGfxImage mImage;
|
XGfxImage mImage;
|
||||||
XWater mWater;
|
XWater mWater;
|
||||||
XMaterialTextureDef* aParent;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XMATERIALTEXTUREDEFINFO_H
|
#endif // XMATERIALTEXTUREDEFINFO_H
|
||||||
|
|||||||
@ -5,15 +5,15 @@ XMenuDef::XMenuDef()
|
|||||||
: XAsset()
|
: XAsset()
|
||||||
, mWindow()
|
, mWindow()
|
||||||
, mFont()
|
, mFont()
|
||||||
, mFullScreen(0)
|
, mFullScreen()
|
||||||
, mItemCount(0)
|
, mItemCount()
|
||||||
, mFontIndex(0)
|
, mFontIndex()
|
||||||
, mCursorItem(4)
|
, mCursorItem()
|
||||||
, mFadeCycle(0)
|
, mFadeCycle()
|
||||||
, mFadeClamp(0.0f)
|
, mFadeClamp()
|
||||||
, mFadeAmount(0.0f)
|
, mFadeAmount()
|
||||||
, mFadeInAmount(0.0f)
|
, mFadeInAmount()
|
||||||
, mBlurRadius(0.0f)
|
, mBlurRadius()
|
||||||
, mOnOpen()
|
, mOnOpen()
|
||||||
, mOnClose()
|
, mOnClose()
|
||||||
, mOnESC()
|
, mOnESC()
|
||||||
@ -21,7 +21,7 @@ XMenuDef::XMenuDef()
|
|||||||
, mVisibleExp()
|
, mVisibleExp()
|
||||||
, mAllowedBinding()
|
, mAllowedBinding()
|
||||||
, mSoundName()
|
, mSoundName()
|
||||||
, mImageTrack(0)
|
, mImageTrack()
|
||||||
, mFocusColor()
|
, mFocusColor()
|
||||||
, mDisableColor()
|
, mDisableColor()
|
||||||
, mRectXExp()
|
, mRectXExp()
|
||||||
@ -44,76 +44,5 @@ void XMenuDef::Clear()
|
|||||||
|
|
||||||
void XMenuDef::ParseData(QDataStream *aStream)
|
void XMenuDef::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mWindow.ParseData(aStream);
|
|
||||||
|
|
||||||
mFont.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mFullScreen
|
|
||||||
>> mItemCount
|
|
||||||
>> mFontIndex;
|
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
|
||||||
{
|
|
||||||
*aStream >> mCursorItem[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mFadeCycle
|
|
||||||
>> mFadeClamp
|
|
||||||
>> mFadeAmount
|
|
||||||
>> mFadeInAmount
|
|
||||||
>> mBlurRadius;
|
|
||||||
|
|
||||||
mOnOpen.ParsePtr(aStream, false);
|
|
||||||
mOnClose.ParsePtr(aStream, false);
|
|
||||||
mOnESC.ParsePtr(aStream, false);
|
|
||||||
mOnKey.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
mVisibleExp.ParseData(aStream);
|
|
||||||
|
|
||||||
mAllowedBinding.ParsePtr(aStream, false);
|
|
||||||
mSoundName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream >> mImageTrack;
|
|
||||||
|
|
||||||
float focusR, focusG, focusB, focusA,
|
|
||||||
disableR, disableG, disableB, disableA;
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> focusR
|
|
||||||
>> focusG
|
|
||||||
>> focusB
|
|
||||||
>> focusA
|
|
||||||
>> disableR
|
|
||||||
>> disableG
|
|
||||||
>> disableB
|
|
||||||
>> disableA;
|
|
||||||
|
|
||||||
mRectXExp.ParseData(aStream);
|
|
||||||
mRectYExp.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 itemsPtr;
|
|
||||||
*aStream >> itemsPtr;
|
|
||||||
|
|
||||||
mFont.ParseData(aStream);
|
|
||||||
mOnOpen.ParseData(aStream);
|
|
||||||
mOnClose.ParseData(aStream);
|
|
||||||
mOnESC.ParseData(aStream);
|
|
||||||
mOnKey.ParseData(aStream);
|
|
||||||
mVisibleExp.ParseData(aStream);
|
|
||||||
mAllowedBinding.ParseData(aStream);
|
|
||||||
mSoundName.ParseData(aStream);
|
|
||||||
mRectXExp.ParseData(aStream);
|
|
||||||
mRectYExp.ParseData(aStream);
|
|
||||||
|
|
||||||
if (itemsPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mItemCount; i++)
|
|
||||||
{
|
|
||||||
XItemDef newItemDef;
|
|
||||||
newItemDef.ParsePtr(aStream);
|
|
||||||
mItems.append(newItemDef);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ class XItemDef;
|
|||||||
class XMenuDef : public XAsset
|
class XMenuDef : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XMenuDef();
|
XMenuDef();
|
||||||
~XMenuDef();
|
~XMenuDef();
|
||||||
|
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
@ -21,29 +21,29 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
XWindowDef mWindow;
|
XWindowDef mWindow;
|
||||||
XString mFont;
|
XString* mFont;
|
||||||
qint32 mFullScreen;
|
int mFullScreen;
|
||||||
qint32 mItemCount;
|
int mItemCount;
|
||||||
qint32 mFontIndex;
|
int mFontIndex;
|
||||||
QVector<qint32> mCursorItem;
|
int mCursorItem[4];
|
||||||
qint32 mFadeCycle;
|
int mFadeCycle;
|
||||||
float mFadeClamp;
|
float mFadeClamp;
|
||||||
float mFadeAmount;
|
float mFadeAmount;
|
||||||
float mFadeInAmount;
|
float mFadeInAmount;
|
||||||
float mBlurRadius;
|
float mBlurRadius;
|
||||||
XString mOnOpen;
|
XString* mOnOpen;
|
||||||
XString mOnClose;
|
XString* mOnClose;
|
||||||
XString mOnESC;
|
XString* mOnESC;
|
||||||
XItemKeyHandler mOnKey;
|
XItemKeyHandler *mOnKey;
|
||||||
XStatement mVisibleExp;
|
XStatement mVisibleExp;
|
||||||
XString mAllowedBinding;
|
XString* mAllowedBinding;
|
||||||
XString mSoundName;
|
XString* mSoundName;
|
||||||
qint32 mImageTrack;
|
int mImageTrack;
|
||||||
QColor mFocusColor;
|
QColor mFocusColor;
|
||||||
QColor mDisableColor;
|
QColor mDisableColor;
|
||||||
XStatement mRectXExp;
|
XStatement mRectXExp;
|
||||||
XStatement mRectYExp;
|
XStatement mRectYExp;
|
||||||
QVector<XItemDef> mItems;
|
QVector<XItemDef*> mItems;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XMENUDEF_H
|
#endif // XMENUDEF_H
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
XModel::XModel()
|
XModel::XModel()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName("")
|
||||||
, mNumBones(0)
|
, mNumBones(0)
|
||||||
, mNumRootBones(0)
|
, mNumRootBones(0)
|
||||||
, mNumSurfs(0)
|
, mNumSurfs(0)
|
||||||
@ -12,15 +12,15 @@ XModel::XModel()
|
|||||||
, mParentList()
|
, mParentList()
|
||||||
, mQuats()
|
, mQuats()
|
||||||
, mTrans(0)
|
, mTrans(0)
|
||||||
, mPartClassification()
|
, mPartClassification(0)
|
||||||
, mBaseMat()
|
, mBaseMat(0)
|
||||||
, mSurfs()
|
, mSurfs()
|
||||||
, mMaterialHandles()
|
, mMaterialHandles()
|
||||||
, mLodInfo()
|
, mLodInfo()
|
||||||
, mCollSurfs()
|
, mCollSurfs()
|
||||||
, mNumCollSurfs(0)
|
, mNumCollSurfs(0)
|
||||||
, mContents(0)
|
, mContents(0)
|
||||||
, mBoneInfo()
|
, mBoneInfo(new XBoneInfo())
|
||||||
, mRadius(0)
|
, mRadius(0)
|
||||||
, mMins()
|
, mMins()
|
||||||
, mMaxs()
|
, mMaxs()
|
||||||
@ -29,8 +29,8 @@ XModel::XModel()
|
|||||||
, mStreamInfo()
|
, mStreamInfo()
|
||||||
, mMemUsage(0)
|
, mMemUsage(0)
|
||||||
, mFlags(0)
|
, mFlags(0)
|
||||||
, mPhysPreset()
|
, mPhysPreset(new XPhysPreset)
|
||||||
, mPhysGeoms()
|
, mPhysGeoms(new XPhysGeomList)
|
||||||
{
|
{
|
||||||
SetType(ASSET_TYPE_XMODEL);
|
SetType(ASSET_TYPE_XMODEL);
|
||||||
}
|
}
|
||||||
@ -41,142 +41,13 @@ XModel::~XModel()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void XModel::ParseData(QDataStream *aStream) {
|
void XModel::ParseData(QDataStream *aStream) {
|
||||||
|
qint32 namePtr, boneNamesPtr;
|
||||||
mName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
*aStream
|
||||||
>> mNumBones
|
>> namePtr;
|
||||||
>> mNumRootBones
|
|
||||||
>> mNumSurfs
|
|
||||||
>> mLodRampType;
|
|
||||||
|
|
||||||
qint32 boneNamesPtr, parentListPtr, quatsPtr, transPtr, partClassPtr;
|
mName = XString::ParseCustom(aStream);
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> boneNamesPtr
|
|
||||||
>> parentListPtr
|
|
||||||
>> quatsPtr
|
|
||||||
>> transPtr
|
|
||||||
>> partClassPtr;
|
|
||||||
|
|
||||||
mBaseMat.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 surfsPtr, matHandlesPtr, lodInfoPtr, collSurfsPtr;
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> surfsPtr
|
|
||||||
>> matHandlesPtr
|
|
||||||
>> lodInfoPtr
|
|
||||||
>> collSurfsPtr
|
|
||||||
>> mNumCollSurfs
|
|
||||||
>> mContents;
|
|
||||||
|
|
||||||
mBoneInfo.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mRadius
|
|
||||||
>> mMins
|
|
||||||
>> mMaxs
|
|
||||||
>> mNumLods
|
|
||||||
>> mCollLod;
|
|
||||||
|
|
||||||
mStreamInfo.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mMemUsage
|
|
||||||
>> mFlags;
|
|
||||||
aStream->skipRawData(3);
|
|
||||||
|
|
||||||
mPhysPreset.ParsePtr(aStream, false);
|
|
||||||
mPhysGeoms.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
|
||||||
|
|
||||||
if (boneNamesPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mNumBones; i++)
|
|
||||||
{
|
|
||||||
quint16 bone;
|
|
||||||
*aStream >> bone;
|
|
||||||
mBoneNames.append(bone);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parentListPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mNumBones - mNumRootBones; i++)
|
|
||||||
{
|
|
||||||
quint8 parent;
|
|
||||||
*aStream >> parent;
|
|
||||||
mParentList.append(parent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (quatsPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 8 * (mNumBones - mNumRootBones); i++)
|
|
||||||
{
|
|
||||||
quint8 quat;
|
|
||||||
*aStream >> quat;
|
|
||||||
mQuats.append(quat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (transPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 16 * (mNumBones - mNumRootBones); i++)
|
|
||||||
{
|
|
||||||
quint8 trans;
|
|
||||||
*aStream >> trans;
|
|
||||||
mTrans.append(trans);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (partClassPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mNumBones; i++)
|
|
||||||
{
|
|
||||||
quint8 partClass;
|
|
||||||
*aStream >> partClass;
|
|
||||||
mPartClassification.append(partClass);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mBaseMat.ParseData(aStream);
|
|
||||||
|
|
||||||
if (surfsPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mNumSurfs; i++)
|
|
||||||
{
|
|
||||||
XSurface newSurf;
|
|
||||||
newSurf.ParseData(aStream);
|
|
||||||
mSurfs.append(newSurf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (matHandlesPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mNumSurfs; i++)
|
|
||||||
{
|
|
||||||
XMaterial newMaterial;
|
|
||||||
newMaterial.ParseData(aStream);
|
|
||||||
mMaterialHandles.append(newMaterial);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (collSurfsPtr == -1)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mNumCollSurfs; i++)
|
|
||||||
{
|
|
||||||
XModelCollSurf newCollSurf;
|
|
||||||
newCollSurf.ParseData(aStream);
|
|
||||||
mCollSurfs.append(newCollSurf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mBoneInfo.ParseData(aStream);
|
|
||||||
|
|
||||||
// TODO: Fill out rest of this
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XModel::Clear()
|
void XModel::Clear()
|
||||||
|
|||||||
@ -23,24 +23,24 @@ public:
|
|||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
QString mName;
|
||||||
quint8 mNumBones;
|
quint8 mNumBones;
|
||||||
quint8 mNumRootBones;
|
quint8 mNumRootBones;
|
||||||
quint8 mNumSurfs;
|
quint8 mNumSurfs;
|
||||||
quint8 mLodRampType;
|
quint8 mLodRampType;
|
||||||
QVector<quint16> mBoneNames;
|
XScriptStringList mBoneNames;
|
||||||
QVector<quint8> mParentList;
|
QVector<quint8> mParentList;
|
||||||
QVector<quint8> mQuats;
|
QVector<quint8> mQuats;
|
||||||
QVector<float> mTrans;
|
float *mTrans;
|
||||||
QVector<quint8> mPartClassification;
|
quint8 *mPartClassification;
|
||||||
XDObjAnimMat mBaseMat;
|
XDObjAnimMat *mBaseMat;
|
||||||
QVector<XSurface> mSurfs;
|
QVector<XSurface> mSurfs;
|
||||||
QVector<XMaterial> mMaterialHandles;
|
QVector<XMaterial*> mMaterialHandles;
|
||||||
QVector<XModelLodInfo> mLodInfo;
|
QVector<XModelLodInfo> mLodInfo;
|
||||||
QVector<XModelCollSurf> mCollSurfs;
|
QVector<XModelCollSurf> mCollSurfs;
|
||||||
int mNumCollSurfs;
|
int mNumCollSurfs;
|
||||||
int mContents;
|
int mContents;
|
||||||
XBoneInfo mBoneInfo;
|
XBoneInfo* mBoneInfo;
|
||||||
float mRadius;
|
float mRadius;
|
||||||
QVector3D mMins;
|
QVector3D mMins;
|
||||||
QVector3D mMaxs;
|
QVector3D mMaxs;
|
||||||
@ -49,8 +49,8 @@ private:
|
|||||||
XModelStreamInfo mStreamInfo;
|
XModelStreamInfo mStreamInfo;
|
||||||
int mMemUsage;
|
int mMemUsage;
|
||||||
quint8 mFlags;
|
quint8 mFlags;
|
||||||
XPhysPreset mPhysPreset;
|
XPhysPreset* mPhysPreset;
|
||||||
XPhysGeomList mPhysGeoms;
|
XPhysGeomList* mPhysGeoms;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XMODEL_H
|
#endif // XMODEL_H
|
||||||
|
|||||||
@ -18,16 +18,7 @@ XModelCollSurf::~XModelCollSurf()
|
|||||||
|
|
||||||
void XModelCollSurf::ParseData(QDataStream *aStream)
|
void XModelCollSurf::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream
|
|
||||||
>> mMins[0]
|
|
||||||
>> mMins[1]
|
|
||||||
>> mMins[2]
|
|
||||||
>> mMaxs[0]
|
|
||||||
>> mMaxs[1]
|
|
||||||
>> mMaxs[2]
|
|
||||||
>> mBoneIdx
|
|
||||||
>> mContents
|
|
||||||
>> mSurfFlags;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XModelCollSurf::Clear()
|
void XModelCollSurf::Clear()
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
XModelPiece::XModelPiece()
|
XModelPiece::XModelPiece()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mModel()
|
, mModel(new XModel())
|
||||||
, mOffset()
|
, mOffset()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -10,23 +10,16 @@ XModelPiece::XModelPiece()
|
|||||||
|
|
||||||
XModelPiece::~XModelPiece()
|
XModelPiece::~XModelPiece()
|
||||||
{
|
{
|
||||||
|
delete mModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void XModelPiece::ParseData(QDataStream *aStream)
|
void XModelPiece::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mModel.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mOffset[0]
|
|
||||||
>> mOffset[1]
|
|
||||||
>> mOffset[2];
|
|
||||||
|
|
||||||
mModel.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XModelPiece::Clear()
|
void XModelPiece::Clear()
|
||||||
{
|
{
|
||||||
mModel.Clear();
|
mModel->Clear();
|
||||||
mOffset = QVector3D();
|
mOffset = QVector3D();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ public:
|
|||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XModel mModel;
|
XModel *mModel;
|
||||||
QVector3D mOffset;
|
QVector3D mOffset;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
XModelPieces::XModelPieces()
|
XModelPieces::XModelPieces()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mName("")
|
||||||
, mNumPieces(0)
|
, mNumPieces(0)
|
||||||
, mPieces()
|
, mPieces()
|
||||||
{
|
{
|
||||||
@ -17,32 +17,12 @@ XModelPieces::~XModelPieces()
|
|||||||
|
|
||||||
void XModelPieces::ParseData(QDataStream *aStream)
|
void XModelPieces::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
mName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 piecesPtr;
|
|
||||||
*aStream
|
|
||||||
>> mNumPieces
|
|
||||||
>> piecesPtr;
|
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
|
||||||
|
|
||||||
if (piecesPtr)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < mNumPieces; i++)
|
|
||||||
{
|
|
||||||
XModelPiece newPiece;
|
|
||||||
newPiece.ParseData(aStream);
|
|
||||||
mPieces.append(newPiece);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XModelPieces::Clear()
|
void XModelPieces::Clear()
|
||||||
{
|
{
|
||||||
mName.Clear();
|
mName.clear();
|
||||||
mNumPieces = 0;
|
mNumPieces = 0;
|
||||||
mPieces.clear();
|
mPieces.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ public:
|
|||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
QString mName;
|
||||||
int mNumPieces;
|
int mNumPieces;
|
||||||
QVector<XModelPiece> mPieces;
|
QVector<XModelPiece> mPieces;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -9,7 +9,7 @@ XPackedTexCoords::XPackedTexCoords()
|
|||||||
|
|
||||||
void XPackedTexCoords::ParseData(QDataStream *aStream)
|
void XPackedTexCoords::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream >> mPacked;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XPackedTexCoords::Clear()
|
void XPackedTexCoords::Clear()
|
||||||
|
|||||||
@ -9,7 +9,7 @@ XPackedUnitVec::XPackedUnitVec()
|
|||||||
|
|
||||||
void XPackedUnitVec::ParseData(QDataStream *aStream)
|
void XPackedUnitVec::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream >> mPacked;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XPackedUnitVec::Clear()
|
void XPackedUnitVec::Clear()
|
||||||
|
|||||||
@ -2,14 +2,16 @@
|
|||||||
|
|
||||||
XPhysPreset::XPhysPreset()
|
XPhysPreset::XPhysPreset()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mName()
|
, mNamePtr(0)
|
||||||
|
, mName("")
|
||||||
, mType(0)
|
, mType(0)
|
||||||
, mMass(0)
|
, mMass(0)
|
||||||
, mBounce(0)
|
, mBounce(0)
|
||||||
, mFriction(0)
|
, mFriction(0)
|
||||||
, mBulletForceScale(0)
|
, mBulletForceScale(0)
|
||||||
, mExplosiveForceScale(0)
|
, mExplosiveForceScale(0)
|
||||||
, mSndAliasPrefix()
|
, mSndAliasPrefixPtr(0)
|
||||||
|
, mSndAliasPrefix("")
|
||||||
, mPiecesSpreadFraction(0)
|
, mPiecesSpreadFraction(0)
|
||||||
, mPiecesUpwardVelocity(0)
|
, mPiecesUpwardVelocity(0)
|
||||||
, mTempDefaultToCylinder(false)
|
, mTempDefaultToCylinder(false)
|
||||||
@ -25,40 +27,21 @@ XPhysPreset::~XPhysPreset()
|
|||||||
|
|
||||||
void XPhysPreset::ParseData(QDataStream *aStream)
|
void XPhysPreset::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
mName.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mType
|
|
||||||
>> mMass
|
|
||||||
>> mBounce
|
|
||||||
>> mFriction
|
|
||||||
>> mBulletForceScale
|
|
||||||
>> mExplosiveForceScale;
|
|
||||||
|
|
||||||
mSndAliasPrefix.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mPiecesSpreadFraction
|
|
||||||
>> mPiecesUpwardVelocity
|
|
||||||
>> mTempDefaultToCylinder;
|
|
||||||
|
|
||||||
mName.ParseData(aStream);
|
|
||||||
mSndAliasPrefix.ParseData(aStream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XPhysPreset::Clear()
|
void XPhysPreset::Clear()
|
||||||
{
|
{
|
||||||
mName.Clear();
|
mNamePtr = 0;
|
||||||
|
mName.clear();
|
||||||
mType = 0;
|
mType = 0;
|
||||||
mMass = 0;
|
mMass = 0;
|
||||||
mBounce = 0;
|
mBounce = 0;
|
||||||
mFriction = 0;
|
mFriction = 0;
|
||||||
mBulletForceScale = 0;
|
mBulletForceScale = 0;
|
||||||
mExplosiveForceScale = 0;
|
mExplosiveForceScale = 0;
|
||||||
mSndAliasPrefix.Clear();
|
mSndAliasPrefixPtr = 0;
|
||||||
|
mSndAliasPrefix.clear();
|
||||||
mPiecesSpreadFraction = 0;
|
mPiecesSpreadFraction = 0;
|
||||||
mPiecesUpwardVelocity = 0;
|
mPiecesUpwardVelocity = 0;
|
||||||
mTempDefaultToCylinder = false;
|
mTempDefaultToCylinder = false;
|
||||||
|
|||||||
@ -2,28 +2,36 @@
|
|||||||
#define XPHYSPRESET_H
|
#define XPHYSPRESET_H
|
||||||
|
|
||||||
#include "xasset.h"
|
#include "xasset.h"
|
||||||
#include "xstring.h"
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
class XPhysPreset : public XAsset
|
class XPhysPreset : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XPhysPreset();
|
XPhysPreset();
|
||||||
~XPhysPreset();
|
~XPhysPreset();
|
||||||
|
|
||||||
virtual void ParseData(QDataStream* aStream) override;
|
virtual void ParseData(QDataStream* aStream) override;
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XString mName;
|
qint32 mNamePtr;
|
||||||
|
QString mName;
|
||||||
|
|
||||||
int mType;
|
int mType;
|
||||||
|
|
||||||
float mMass;
|
float mMass;
|
||||||
float mBounce;
|
float mBounce;
|
||||||
float mFriction;
|
float mFriction;
|
||||||
float mBulletForceScale;
|
float mBulletForceScale;
|
||||||
float mExplosiveForceScale;
|
float mExplosiveForceScale;
|
||||||
XString mSndAliasPrefix;
|
|
||||||
|
qint32 mSndAliasPrefixPtr;
|
||||||
|
QString mSndAliasPrefix;
|
||||||
|
|
||||||
float mPiecesSpreadFraction;
|
float mPiecesSpreadFraction;
|
||||||
float mPiecesUpwardVelocity;
|
float mPiecesUpwardVelocity;
|
||||||
|
|
||||||
bool mTempDefaultToCylinder;
|
bool mTempDefaultToCylinder;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -6,8 +6,6 @@
|
|||||||
XString::XString()
|
XString::XString()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mString("")
|
, mString("")
|
||||||
, mRemoveString("")
|
|
||||||
, mContentLength(-1)
|
|
||||||
{
|
{
|
||||||
SetName("String");
|
SetName("String");
|
||||||
}
|
}
|
||||||
@ -15,8 +13,6 @@ XString::XString()
|
|||||||
XString::XString(const QString aString)
|
XString::XString(const QString aString)
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mString(aString)
|
, mString(aString)
|
||||||
, mRemoveString("")
|
|
||||||
, mContentLength(-1)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -31,16 +27,6 @@ QString XString::GetString() const
|
|||||||
return mString;
|
return mString;
|
||||||
}
|
}
|
||||||
|
|
||||||
void XString::SetRemoveString(const QString aRemoveString)
|
|
||||||
{
|
|
||||||
mRemoveString = aRemoveString;
|
|
||||||
}
|
|
||||||
|
|
||||||
void XString::SetContentLength(int aContentLength)
|
|
||||||
{
|
|
||||||
mContentLength = aContentLength;
|
|
||||||
}
|
|
||||||
|
|
||||||
void XString::SetString(const QString& aString)
|
void XString::SetString(const QString& aString)
|
||||||
{
|
{
|
||||||
mString = aString;
|
mString = aString;
|
||||||
@ -82,28 +68,23 @@ void XString::Clear()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void XString::ParseData(QDataStream *aStream)
|
void XString::ParseData(QDataStream *aStream)
|
||||||
|
{
|
||||||
|
ParseData(aStream, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
void XString::ParseData(QDataStream *aStream, QString aRemoveStr)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
if (GetPtr() == -1)
|
||||||
{
|
{
|
||||||
if (mContentLength == -1)
|
mString = ParseCustom(aStream);
|
||||||
|
if (!aRemoveStr.isEmpty())
|
||||||
{
|
{
|
||||||
mString = ParseCustom(aStream);
|
mString = mString.replace(aRemoveStr, "");
|
||||||
}
|
}
|
||||||
else if (mContentLength != 0)
|
|
||||||
{
|
|
||||||
QByteArray rawString(mContentLength, Qt::Uninitialized);
|
|
||||||
aStream->readRawData(rawString.data(), mContentLength);
|
|
||||||
mString = QString::fromUtf8(rawString);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mRemoveString.isEmpty())
|
|
||||||
{
|
|
||||||
mString = mString.replace(mRemoveString, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsDebug())
|
if (IsDebug())
|
||||||
{
|
{
|
||||||
qDebug() << QString("[%1] mString = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mString);
|
qDebug() << QString("[%1] mString = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,19 +17,15 @@ public:
|
|||||||
void SetString(const QString& aString);
|
void SetString(const QString& aString);
|
||||||
QString GetString() const;
|
QString GetString() const;
|
||||||
|
|
||||||
void SetRemoveString(const QString aRemoveString);
|
|
||||||
void SetContentLength(int aContentLength);
|
|
||||||
|
|
||||||
static QString ParseCustom(QDataStream* aStream);
|
static QString ParseCustom(QDataStream* aStream);
|
||||||
static XStringArray* ParseArray(QDataStream* aStream, int aCount);
|
static XStringArray* ParseArray(QDataStream* aStream, int aCount);
|
||||||
|
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
virtual void ParseData(QDataStream* aStream) override;
|
virtual void ParseData(QDataStream* aStream) override;
|
||||||
|
virtual void ParseData(QDataStream* aStream, QString aRemoveStr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString mString;
|
QString mString;
|
||||||
QString mRemoveString;
|
|
||||||
int mContentLength;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XSTRING_H
|
#endif // XSTRING_H
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
#include "xsunflare.h"
|
#include "xsunflare.h"
|
||||||
|
|
||||||
XSunFlare::XSunFlare()
|
XSunflare::XSunflare()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mHasValidData(false)
|
, mHasValidData(false)
|
||||||
, mSpriteMaterial()
|
, mSpriteMaterial(new XMaterial())
|
||||||
, mFlareMaterial()
|
, mFlareMaterial(new XMaterial())
|
||||||
, mSpriteSize(0.0f)
|
, mSpriteSize(0.0f)
|
||||||
, mFlareMinSize(0.0f)
|
, mFlareMinSize(0.0f)
|
||||||
, mFlareMinDot(0.0f)
|
, mFlareMinDot(0.0f)
|
||||||
@ -28,70 +28,17 @@ XSunFlare::XSunFlare()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XSunFlare::~XSunFlare()
|
XSunflare::~XSunflare()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XSunFlare::ParseData(QDataStream *aStream)
|
void XSunflare::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream
|
|
||||||
>> mHasValidData;
|
|
||||||
|
|
||||||
aStream->skipRawData(3);
|
|
||||||
|
|
||||||
mSpriteMaterial.ParsePtr(aStream, false);
|
|
||||||
mFlareMaterial.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mSpriteSize
|
|
||||||
>> mFlareMinSize
|
|
||||||
>> mFlareMinDot
|
|
||||||
>> mFlareMaxSize
|
|
||||||
>> mFlareMaxDot
|
|
||||||
>> mFlareMaxAlpha
|
|
||||||
>> mFlareFadeInTime
|
|
||||||
>> mFlareFadeOutTime
|
|
||||||
>> mBlindMinDot
|
|
||||||
>> mBlindMaxDot
|
|
||||||
>> mBlindMaxDarken
|
|
||||||
>> mBlindFadeInTime
|
|
||||||
>> mBlindFadeOutTime
|
|
||||||
>> mGlareMinDot
|
|
||||||
>> mGlareMaxDot
|
|
||||||
>> mGlareMaxLighten
|
|
||||||
>> mGlareFadeInTime
|
|
||||||
>> mGlareFadeOutTime
|
|
||||||
>> mSunFxPosition[0]
|
|
||||||
>> mSunFxPosition[1]
|
|
||||||
>> mSunFxPosition[2];
|
|
||||||
|
|
||||||
mSpriteMaterial.ParseData(aStream);
|
|
||||||
mFlareMaterial.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XSunFlare::Clear()
|
void XSunflare::Clear()
|
||||||
{
|
{
|
||||||
mHasValidData = false;
|
|
||||||
mSpriteMaterial.Clear();
|
|
||||||
mFlareMaterial.Clear();
|
|
||||||
mSpriteSize = 0.0f;
|
|
||||||
mFlareMinSize = 0.0f;
|
|
||||||
mFlareMinDot = 0.0f;
|
|
||||||
mFlareMaxSize = 0.0f;
|
|
||||||
mFlareMaxDot = 0.0f;
|
|
||||||
mFlareMaxAlpha = 0.0f;
|
|
||||||
mFlareFadeInTime = 0;
|
|
||||||
mFlareFadeOutTime = 0;
|
|
||||||
mBlindMinDot = 0.0f;
|
|
||||||
mBlindMaxDot = 0.0f;
|
|
||||||
mBlindMaxDarken = 0.0f;
|
|
||||||
mBlindFadeInTime = 0;
|
|
||||||
mBlindFadeOutTime = 0;
|
|
||||||
mGlareMinDot = 0.0f;
|
|
||||||
mGlareMaxDot = 0.0f;
|
|
||||||
mGlareMaxLighten = 0.0f;
|
|
||||||
mGlareFadeInTime = 0;
|
|
||||||
mGlareFadeOutTime = 0;
|
|
||||||
mSunFxPosition = QVector3D();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,19 +6,19 @@
|
|||||||
|
|
||||||
#include <QVector3D>
|
#include <QVector3D>
|
||||||
|
|
||||||
class XSunFlare : public XAsset
|
class XSunflare : public XAsset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XSunFlare();
|
XSunflare();
|
||||||
~XSunFlare();
|
~XSunflare();
|
||||||
|
|
||||||
virtual void ParseData(QDataStream* aStream) override;
|
virtual void ParseData(QDataStream* aStream) override;
|
||||||
virtual void Clear() override;
|
virtual void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mHasValidData;
|
bool mHasValidData;
|
||||||
XMaterial mSpriteMaterial;
|
XMaterial *mSpriteMaterial;
|
||||||
XMaterial mFlareMaterial;
|
XMaterial *mFlareMaterial;
|
||||||
float mSpriteSize;
|
float mSpriteSize;
|
||||||
float mFlareMinSize;
|
float mFlareMinSize;
|
||||||
float mFlareMinDot;
|
float mFlareMinDot;
|
||||||
|
|||||||
@ -8,8 +8,8 @@ XSurface::XSurface()
|
|||||||
, mTriCount(0)
|
, mTriCount(0)
|
||||||
, mTriIndices(0)
|
, mTriIndices(0)
|
||||||
, mVertInfo()
|
, mVertInfo()
|
||||||
, mVert()
|
, mVerts0(new XGfxPackedVertex())
|
||||||
, mVertBuffer()
|
, mVb0()
|
||||||
, mVertListCount(0)
|
, mVertListCount(0)
|
||||||
, mVertList()
|
, mVertList()
|
||||||
, mIndexBuffer()
|
, mIndexBuffer()
|
||||||
@ -18,46 +18,9 @@ XSurface::XSurface()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XSurface::~XSurface()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void XSurface::ParseData(QDataStream *aStream)
|
void XSurface::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
*aStream
|
|
||||||
>> mTileMode
|
|
||||||
>> mDeformed
|
|
||||||
>> mVertCount
|
|
||||||
>> mTriCount;
|
|
||||||
|
|
||||||
aStream->skipRawData(2);
|
|
||||||
|
|
||||||
qint32 triIndicesPtr;
|
|
||||||
*aStream
|
|
||||||
>> triIndicesPtr;
|
|
||||||
|
|
||||||
mVertInfo.ParsePtr(aStream, false);
|
|
||||||
mVert.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
qint32 vertBuffersPtr, vertListPtr;
|
|
||||||
*aStream
|
|
||||||
>> vertBuffersPtr
|
|
||||||
>> mVertListCount
|
|
||||||
>> vertListPtr;
|
|
||||||
|
|
||||||
mIndexBuffer.ParseData(aStream);
|
|
||||||
|
|
||||||
*aStream
|
|
||||||
>> mPartBits[0]
|
|
||||||
>> mPartBits[1]
|
|
||||||
>> mPartBits[2]
|
|
||||||
>> mPartBits[3];
|
|
||||||
|
|
||||||
mVertInfo.ParseData(aStream);
|
|
||||||
mVert.ParseData(aStream);
|
|
||||||
|
|
||||||
// TODO: Fill out the rest of this
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XSurface::Clear()
|
void XSurface::Clear()
|
||||||
|
|||||||
@ -12,7 +12,6 @@ class XSurface : public XAsset
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit XSurface();
|
explicit XSurface();
|
||||||
~XSurface();
|
|
||||||
|
|
||||||
void ParseData(QDataStream *aStream) override;
|
void ParseData(QDataStream *aStream) override;
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
@ -22,14 +21,14 @@ private:
|
|||||||
bool mDeformed;
|
bool mDeformed;
|
||||||
quint32 mVertCount;
|
quint32 mVertCount;
|
||||||
quint32 mTriCount;
|
quint32 mTriCount;
|
||||||
QVector<quint32> mTriIndices;
|
quint32 *mTriIndices;
|
||||||
XSurfaceVertexInfo mVertInfo;
|
XSurfaceVertexInfo mVertInfo;
|
||||||
XGfxPackedVertex mVert;
|
XGfxPackedVertex *mVerts0;
|
||||||
XD3DVertexBuffer mVertBuffer;
|
XD3DVertexBuffer mVb0;
|
||||||
quint32 mVertListCount;
|
quint32 mVertListCount;
|
||||||
QVector<XRigidVertList> mVertList;
|
QVector<XRigidVertList> mVertList;
|
||||||
XD3DIndexBuffer mIndexBuffer;
|
XD3DIndexBuffer mIndexBuffer;
|
||||||
QVector<int> mPartBits;
|
int mPartBits[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XSURFACE_H
|
#endif // XSURFACE_H
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
XSurfaceVertexInfo::XSurfaceVertexInfo()
|
XSurfaceVertexInfo::XSurfaceVertexInfo()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mVertCount(4)
|
, mVertCount()
|
||||||
|
, mVertsBlendPtr()
|
||||||
, mVertsBlend()
|
, mVertsBlend()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -10,21 +11,7 @@ XSurfaceVertexInfo::XSurfaceVertexInfo()
|
|||||||
|
|
||||||
void XSurfaceVertexInfo::ParseData(QDataStream *aStream)
|
void XSurfaceVertexInfo::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
if (GetPtr() == -1)
|
|
||||||
{
|
|
||||||
qint32 vertBlendPtr;
|
|
||||||
*aStream
|
|
||||||
>> mVertCount[0]
|
|
||||||
>> mVertCount[1]
|
|
||||||
>> mVertCount[2]
|
|
||||||
>> mVertCount[3]
|
|
||||||
>> vertBlendPtr;
|
|
||||||
|
|
||||||
if (vertBlendPtr == -1)
|
|
||||||
{
|
|
||||||
aStream->readRawData(mVertsBlend.data(), 2 * (mVertCount[0] + 3 * mVertCount[1] + 5 * mVertCount[2] + 7 * mVertCount[3]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XSurfaceVertexInfo::Clear()
|
void XSurfaceVertexInfo::Clear()
|
||||||
|
|||||||
@ -12,8 +12,9 @@ public:
|
|||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector<qint16> mVertCount;
|
qint16 mVertCount[4];
|
||||||
QByteArray mVertsBlend;
|
qint32 mVertsBlendPtr;
|
||||||
|
quint32 mVertsBlend;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XSURFACEVERTEXINFO_H
|
#endif // XSURFACEVERTEXINFO_H
|
||||||
|
|||||||
@ -3,19 +3,19 @@
|
|||||||
XWater::XWater()
|
XWater::XWater()
|
||||||
: XAsset()
|
: XAsset()
|
||||||
, mWritable()
|
, mWritable()
|
||||||
, mH0X()
|
, mH0X(0)
|
||||||
, mH0Y()
|
, mH0Y(0)
|
||||||
, mWTerm()
|
, mWTerm(0)
|
||||||
, mM(0)
|
, mM(0)
|
||||||
, mN(0)
|
, mN(0)
|
||||||
, mLx(0)
|
, mLx(0)
|
||||||
, mLz(0)
|
, mLz(0)
|
||||||
, mGravity(0)
|
, mGravity(0)
|
||||||
, mWindVel(0)
|
, mWindvel(0)
|
||||||
, mWindDir(1)
|
, mWinddir({ 0, 0 })
|
||||||
, mAmplitude(0)
|
, mAmplitude(0)
|
||||||
, mCodeConstant(4)
|
, mCodeConstant({ 0, 0, 0, 0 })
|
||||||
, mImage()
|
, mImage(new XGfxImage())
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -27,48 +27,12 @@ XWater::~XWater()
|
|||||||
|
|
||||||
void XWater::ParseData(QDataStream *aStream)
|
void XWater::ParseData(QDataStream *aStream)
|
||||||
{
|
{
|
||||||
mWritable.ParseData(aStream);
|
|
||||||
|
|
||||||
qint32 h0xPtr, h0yPtr, wTermPtr;
|
|
||||||
*aStream
|
|
||||||
>> h0xPtr
|
|
||||||
>> h0yPtr
|
|
||||||
>> wTermPtr
|
|
||||||
>> mM
|
|
||||||
>> mN
|
|
||||||
>> mLx
|
|
||||||
>> mLz
|
|
||||||
>> mGravity
|
|
||||||
>> mWindVel
|
|
||||||
>> mWindDir[0]
|
|
||||||
>> mWindDir[1]
|
|
||||||
>> mAmplitude
|
|
||||||
>> mWindDir[0]
|
|
||||||
>> mWindDir[1]
|
|
||||||
>> mWindDir[2]
|
|
||||||
>> mWindDir[3];
|
|
||||||
|
|
||||||
mImage.ParsePtr(aStream, false);
|
|
||||||
|
|
||||||
if (h0xPtr)
|
|
||||||
{
|
|
||||||
aStream->readRawData(mH0X.data(), 4 * mM * mN);
|
|
||||||
}
|
|
||||||
if (h0yPtr)
|
|
||||||
{
|
|
||||||
aStream->readRawData(mH0X.data(), 4 * mM * mN);
|
|
||||||
}
|
|
||||||
if (wTermPtr)
|
|
||||||
{
|
|
||||||
aStream->readRawData(mWTerm.data(), 4 * mM * mN);
|
|
||||||
}
|
|
||||||
|
|
||||||
mImage.ParseData(aStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XWater::Clear()
|
void XWater::Clear()
|
||||||
{
|
{
|
||||||
mWritable.Clear();
|
mWritable = XWaterWritable();
|
||||||
mH0X = 0;
|
mH0X = 0;
|
||||||
mH0Y = 0;
|
mH0Y = 0;
|
||||||
mWTerm = 0;
|
mWTerm = 0;
|
||||||
@ -77,9 +41,9 @@ void XWater::Clear()
|
|||||||
mLx = 0;
|
mLx = 0;
|
||||||
mLz = 0;
|
mLz = 0;
|
||||||
mGravity = 0;
|
mGravity = 0;
|
||||||
mWindVel = 0;
|
mWindvel = 0;
|
||||||
mWindDir.clear();
|
mWinddir = { 0, 0 };
|
||||||
mAmplitude = 0;
|
mAmplitude = 0;
|
||||||
mCodeConstant.clear();
|
mCodeConstant = { 0, 0, 0, 0 };
|
||||||
mImage.Clear();
|
mImage = new XGfxImage();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,19 +18,19 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
XWaterWritable mWritable;
|
XWaterWritable mWritable;
|
||||||
QByteArray mH0X;
|
float *mH0X;
|
||||||
QByteArray mH0Y;
|
float *mH0Y;
|
||||||
QByteArray mWTerm;
|
float *mWTerm;
|
||||||
int mM;
|
int mM;
|
||||||
int mN;
|
int mN;
|
||||||
float mLx;
|
float mLx;
|
||||||
float mLz;
|
float mLz;
|
||||||
float mGravity;
|
float mGravity;
|
||||||
float mWindVel;
|
float mWindvel;
|
||||||
QVector<float> mWindDir;
|
QVector<float> mWinddir;
|
||||||
float mAmplitude;
|
float mAmplitude;
|
||||||
QVector<float> mCodeConstant;
|
QVector<float> mCodeConstant;
|
||||||
XGfxImage mImage;
|
XGfxImage *mImage;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XWATER_H
|
#endif // XWATER_H
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user